0

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
)
4

1 に答える 1

0

それはIntelliSenseの問題です。プロジェクトはビルドされ、何か問題が発生したり、コンパイル エラーが発生したりしない限り、完全に機能します。[エラー一覧] ウィンドウで、右クリックして [IntelliSense エラーを表示] をオフに切り替えます。

于 2013-04-23T06:12:43.260 に答える