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

Errors in Visual studio 2012 mini-filter project template

本文关键字:错误 项目 过滤器 studio 2012 Visual      更新时间:2023-10-16

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

7智能感知:void (*)(PCFLT_RELATED_OBJECTS flobjects, PFLT_IO_PARAMETER_BLOCK ParameterSnapshot, NTSTATUS OperationStatus, PVOID RequesterContext)"与"PFLT_GET_OPERATION_STATUS_CALLBACK"

类型的参数不兼容

5智能感知:类型为void (*)(PCFLT_RELATED_OBJECTS flobjects, FLT_INSTANCE_TEARDOWN_FLAGS Flags)"不能用于初始化类型为"pflt_instance_teardown_callback"的实体

6智能感知:类型为void (*)(PCFLT_RELATED_OBJECTS flobjects, FLT_INSTANCE_TEARDOWN_FLAGS Flags)"不能用于初始化类型为"pflt_instance_teardown_callback"的实体

3智能感知:类型为"NTSTATUS (*)(PCFLT_RELATED_OBJECTS flobjects, FLT_INSTANCE_SETUP_FLAGS Flags, ULONG VolumeDeviceType, FLT_FILESYSTEM_TYPE VolumeFilesystemType)"不能用于初始化类型为"pflt_instance_setup_callback"的实体

4智能感知:类型为"NTSTATUS (*)(PCFLT_RELATED_OBJECTS flobjects, FLT_INSTANCE_QUERY_TEARDOWN_FLAGS Flags)"的值;不能用于初始化类型为"PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK"的实体

2智能感知:类型为"NTSTATUS (*)(FLT_FILTER_UNLOAD_FLAGS 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
)

这是智能感知问题。项目将被构建并完美地工作,除非你做错了什么或得到一些编译错误。在错误列表窗口中,只需右键单击->关闭"显示智能感知错误"

相关文章: