我开始在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
)
答案 0 :(得分:0)
这是智能感知问题。除非你做了一些事情或者遇到一些编译错误,否则该项目将被构建并完美运行。在“错误列表”窗口中,只需右键单击 - >切换“显示智能感知错误”。