Visual Studio 2012迷你过滤器项目模板中的错误

时间:2013-04-03 23:16:44

标签: c++ templates visual-studio-2012 wdk minifilter

我开始在VS2012,Win8中编写一个迷你滤镜。创建一个新项目后,Filter Driver:Filesystem Mini-filter我遇到了6个错误。

  

7 IntelliSense:类型为“void(*)(PCFLT_RELATED_OBJECTS FltObjects,PFLT_IO_PARAMETER_BLOCK ParameterSnapshot,NTSTATUS OperationStatus,PVOID RequesterContext)”的参数与“PFLT_GET_OPERATION_STATUS_CALLBACK”类型的参数不兼容

     

5智能感知:类型为“void(*)(PCFLT_RELATED_OBJECTS FltObjects,FLT_INSTANCE_TEARDOWN_FLAGS标志)”的值不能用于初始化“PFLT_INSTANCE_TEARDOWN_CALLBACK”类型的实体

     

6 IntelliSense:类型为“void(*)(PCFLT_RELATED_OBJECTS FltObjects,FLT_INSTANCE_TEARDOWN_FLAGS Flags)”的值不能用于初始化“PFLT_INSTANCE_TEARDOWN_CALLBACK”类型的实体

     

3 IntelliSense:类型为“NTSTATUS(*)(PCFLT_RELATED_OBJECTS FltObjects,FLT_INSTANCE_SETUP_FLAGS标志,ULONG VolumeDeviceType,FLT_FILESYSTEM_TYPE VolumeFilesystemType)”的值不能用于初始化“PFLT_INSTANCE_SETUP_CALLBACK”类型的实体

     

4 IntelliSense:类型为“NTSTATUS(*)(PCFLT_RELATED_OBJECTS FltObjects,FLT_INSTANCE_QUERY_TEARDOWN_FLAGS标志)”的值不能用于初始化“PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK

类型的实体      

2 IntelliSense:类型为“NTSTATUS(*)(FLT_FILTER_UNLOAD_FLAGS标志)”的值不能用于初始化“PFLT_FILTER_UNLOAD_CALLBACK”类型的实体

主要功能,其中大多数错误是

CONST FLT_REGISTRATION FilterRegistration = {
    sizeof( FLT_REGISTRATION ),         //  Size
    FLT_REGISTRATION_VERSION,           //  Version
    0,                                  //  Flags
    NULL,                               //  Context
    Callbacks,                          //  Operation callbacks
    FsFilter1testUnload,                           //  MiniFilterUnload
    FsFilter1testInstanceSetup,                    //  InstanceSetup
    FsFilter1testInstanceQueryTeardown,            //  InstanceQueryTeardown
    FsFilter1testInstanceTeardownStart,            //  InstanceTeardownStart
    FsFilter1testInstanceTeardownComplete,         //  InstanceTeardownComplete
    NULL,                               //  GenerateFileName
    NULL,                               //  GenerateDestinationFileName
    NULL                                //  NormalizeNameComponent
};

另一个功能

status = FltRequestOperationStatusCallback(Data,
                                           FsFilter1testOperationStatusCallback,
                                           (PVOID)(++OperationStatusCtx));

所有实体都以类似方式声明

NTSTATUS    
FsFilter1testInstanceSetup (
_In_ PCFLT_RELATED_OBJECTS FltObjects,
_In_ FLT_INSTANCE_SETUP_FLAGS Flags,
_In_ DEVICE_TYPE VolumeDeviceType,
_In_ FLT_FILESYSTEM_TYPE VolumeFilesystemType
)

1 个答案:

答案 0 :(得分:0)

这是智能感知问题。除非你做了一些事情或者遇到一些编译错误,否则该项目将被构建并完美运行。在“错误列表”窗口中,只需右键单击 - >切换“显示智能感知错误”。