Я начал программировать мини-фильтр в 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_BALT_BALT_BALT_BALT_BALT_BALT_B»
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 Флагов, 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
)
Это проблема IntelliSense. Проект будет построен и будет работать отлично, если вы не сделаете что-либо из-за проблем или не получите ошибки компиляции. В окне Список ошибок просто щелкните правой кнопкой мыши ->, чтобы отключить «Показать ошибки IntelliSense».
Других решений пока нет …