首页
社区
课程
招聘
[求助]微过滤驱动中蓝屏问题
发表于: 2014-5-8 12:57 4112

[求助]微过滤驱动中蓝屏问题

2014-5-8 12:57
4112
FLT_POSTOP_CALLBACK_STATUS TestPostCreate(
        __inout PFLT_CALLBACK_DATA Data,
        __in PCFLT_RELATED_OBJECTS FltObjects,
        __in_opt PVOID CompletionContext,
        __in FLT_POST_OPERATION_FLAGS Flags
        )
{
        NTSTATUS status;
        PFLT_FILE_NAME_INFORMATION NameInfo;
        UNICODE_STRING Extension;
        UNICODE_STRING FileName,VolumeName;

        ANSI_STRING AnsiPath;

        PAGED_CODE();

       
        RtlInitUnicodeString(&Extension,L"txt");

        status = FltGetFileNameInformation(Data,FLT_FILE_NAME_NORMALIZED|FLT_FILE_NAME_QUERY_DEFAULT,&NameInfo);
        if (!NT_SUCCESS(Data->IoStatus.Status))
        {
                FltParseFileNameInformation(NameInfo);
                return FLT_POSTOP_FINISHED_PROCESSING;
        }

       
       
       
        if (NameInfo->Extension.Length!=0)
        {
                if (RtlEqualUnicodeString(&NameInfo->Extension,&Extension,FALSE))
                {
                        IoVolumeDeviceToDosName(FltObjects->FileObject->DeviceObject,&VolumeName);

                        FileName.Buffer = (PWCH) ExAllocatePool(NonPagedPool,512);
                        FileName.Length = 0;
                        FileName.MaximumLength = 512;
                        RtlZeroMemory(FileName.Buffer,512);
                       
                        RtlAppendUnicodeStringToString(&FileName,&VolumeName);

                       
                        ExFreePool(VolumeName.Buffer);

                        RtlAppendUnicodeStringToString(&FileName,&FltObjects->FileObject->FileName);
                        AnsiPath.Buffer = (CHAR*)ExAllocatePool(NonPagedPool,512);
                        AnsiPath.Length =0 ;
                        AnsiPath.MaximumLength = 512;
                        RtlUnicodeStringToAnsiString(&AnsiPath,&FileName,FALSE);
                        //TestSendMessage(AnsiPath.Buffer,AnsiPath.Length);
                        ExFreePool(FileName.Buffer);
                        ExFreePool(AnsiPath.Buffer);
                }
        }

        FltReleaseFileNameInformation(NameInfo);

        //KdPrint((NameInfo->Extension.Buffer));
        return FLT_POSTOP_FINISHED_PROCESSING;

}

这段代码可以运行,但是不久就会蓝屏,蓝屏就在这个函数里
请教下是什么问题呢

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 53
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
给完整的代码。
2014-5-9 16:15
0
雪    币: 220
活跃值: (726)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我也坐等这个问题
2014-6-23 07:33
0
游客
登录 | 注册 方可回帖
返回
//