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 IntelliSense: タイプ "void (*)(PCFLT_RELATED_OBJECTS FltObjects, FLT_INSTANCE_TEARDOWN_FLAGS 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 Flags, ULONG VolumeDeviceType, FLT_FILESYSTEM_TYPE VolumeFilesystemType)" の値を使用して、タイプ "PFLT_INSTANCE_SETUP_CALLBACK" のエンティティを初期化することはできません
4 IntelliSense: タイプ「NTSTATUS (*)(PCFLT_RELATED_OBJECTS FltObjects, FLT_INSTANCE_QUERY_TEARDOWN_FLAGS Flags)」の値を使用して、タイプ「PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK」のエンティティを初期化することはできません
2 IntelliSense: タイプ "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
};
そして、別の機能で1つ
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
)