次の方法で共有


FS_FILTER_CALLBACK_DATA構造体 (ntifs.h)

FS_FILTER_CALLBACK_DATAは、FS_FILTER_CALLBACKSのFS_FILTER_CALLBACKまたはFS_FILTER_COMPLETION_CALLBACK操作のコールバック データ構造です。

構文

typedef struct _FS_FILTER_CALLBACK_DATA {
  ULONG                 SizeOfFsFilterCallbackData;
  UCHAR                 Operation;
  UCHAR                 Reserved;
  struct _DEVICE_OBJECT *DeviceObject;
  struct _FILE_OBJECT   *FileObject;
  FS_FILTER_PARAMETERS  Parameters;
} FS_FILTER_CALLBACK_DATA, *PFS_FILTER_CALLBACK_DATA;

メンバーズ

SizeOfFsFilterCallbackData

この構造体のサイズ (バイト単位)。 sizeof(FS_FILTER_CALLBACK_DATA)に設定します。

Operation

コールバック ルーチンが呼び出されるファイル システム操作。 この操作には、次のいずれかを指定できます。

  • FS_FILTER_ACQUIRE_FOR_SECTION_SYNCHRONIZATION
  • FS_FILTER_RELEASE_FOR_SECTION_SYNCHRONIZATION
  • FS_FILTER_ACQUIRE_FOR_MOD_WRITE
  • FS_FILTER_RELEASE_FOR_MOD_WRITE
  • FS_FILTER_ACQUIRE_FOR_CC_FLUSH
  • FS_FILTER_RELEASE_FOR_CC_FLUSH FS_FILTER_QUERY_OPEN

Reserved

システム用に予約されています。

DeviceObject

この操作のデバイス オブジェクト。

FileObject

この操作のファイル オブジェクト。

Parameters

操作固有のパラメーターを含む共用体。 「解説」を参照してください。

備考

FS_FILTER_CALLBACKS 構造体のメンバーであり、ファイル システムまたはフィルター ドライバーの DriverEntry ルーチン内の FsRtlRegisterFileSystemFilterCallbacks に渡されます。

和集合 パラメーターは次のように定義されます。


typedef union _FS_FILTER_PARAMETERS {
    //
    //  AcquireForModifiedPageWriter
    //
    struct {
        PLARGE_INTEGER EndingOffset;
        PERESOURCE *ResourceToRelease;
    } AcquireForModifiedPageWriter;

    //
    //  ReleaseForModifiedPageWriter
    //
    struct {
        PERESOURCE ResourceToRelease;
    } ReleaseForModifiedPageWriter;

    //
    //  AcquireForSectionSynchronization
    //
    struct {
        FS_FILTER_SECTION_SYNC_TYPE SyncType;
        ULONG PageProtection;
        PFS_FILTER_SECTION_SYNC_OUTPUT OutputInformation;
        ULONG Flags;
    } AcquireForSectionSynchronization;

    //
    // QueryOpen
    //
    struct {
        PIRP Irp;
        PVOID FileInformation;
        PULONG Length;
        FILE_INFORMATION_CLASS FileInformationClass;
        NTSTATUS CompletionStatus;
    } QueryOpen;

    //
    //  Other
    //
    struct {
        PVOID Argument1;
        PVOID Argument2;
        PVOID Argument3;
        PVOID Argument4;
        PVOID Argument5;
    } Others;
} FS_FILTER_PARAMETERS, *PFS_FILTER_PARAMETERS;

FS_FILTER_PARAMETERS共用体の構造体メンバーは、次のように記述されます。

  • AcquireForModifiedPageWriter

    • EndingOffset: 書き込まれる最後のバイトのオフセットに 1 を加算します。
    • ResourceToRelease: 解放するリソース。 このパラメーターには、NULL 値を指定しないでください。
  • ReleaseForModifiedPageWriter

    • ResourceToRelease: 解放するリソース。 このパラメーターには、NULL 値を指定しないでください。
  • AcquireForSectionSynchronization

    • SyncType: セクションに対して要求された同期の種類。 セクション 作成されている場合は、syncTypeCreateSection に設定します。SyncTypeOther それ以外の場合

    • PageProtection: セクションに対して要求されたページ保護の種類。 SyncType が SyncTypeOther 場合は、0 にする必要があります。 それ以外の場合は、次のいずれかのフラグ (場合によっては、PAGE_NOCACHEを含む ORed)。

      • PAGE_NOACCESS
      • PAGE_READONLY
      • PAGE_READWRITE
      • PAGE_WRITECOPY
      • PAGE_EXECUTE
      • PAGE_EXECUTE_READ
      • PAGE_EXECUTE_READWRITE
      • PAGE_EXECUTE_WRITECOPY
      • PAGE_GUARD
      • PAGE_NOCACHE
      • PAGE_WRITECOMBINE
    • OutputInformation: セクションの拡張出力情報を含む FS_FILTER_SECTION_SYNC_OUTPUT 構造体。

    • フラグの: SyncType が SyncTypeCreateSection されている場合、Flags は次のいずれかの値になります。

      • FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_ACCESS (0x00000001): ファイル システムは、作成中のセクションからファイルにアクセスするための最終アクセス時刻を更新しないでください。
      • FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_WRITE (0x00000002): ファイル システムは、作成中のセクションを通じてファイルに変更を加える最後の書き込み時刻を更新しないでください。
  • QueryOpen

    • Irp: この操作に関連付けられている IRP へのポインター。

    • FileInformation: ルーチンがファイル オブジェクトに関する要求された情報を書き込む呼び出し元によって割り当てられたバッファーへのポインター。 FileInformationClass メンバーは、呼び出し元が要求する情報の種類を指定します。

    • 長さ: FileInformation によって指バッファーのサイズ (バイト単位)。

    • CompletionStatus: 最終的な完了状態と操作に関する情報を受け取る NTSTATUS 値。 CompletionStatus は、PostQueryOpen コールバックが操作に失敗するように設定できます。ポスト コールバックには戻り値がないためです。 これは主に使用されるため、PostQueryOpen コールバックはSTATUS_FLT_DISALLOW_FSFILTER_IOを返して低速パスへのフォールバックを要求できます。 これにより、I/O マネージャーはファイルのオープン/クエリ/クローズを実行して要求にサービスを提供します。 同様に、PreQueryOpen コールバックは、低速パスへのフォールバックを要求するためにSTATUS_FLT_DISALLOW_FSFILTER_IOを返すことができます。

    • FileInformationClass: FileInformation が指すバッファー内の、ファイルに関して返 される情報の種類。 デバイス ドライバーと中間ドライバーは、次の FILE_INFORMATION_CLASS 値のいずれかを指定できます。 その他の値を指定すると、呼び出しが失敗し、PreQueryOpen/PostQueryOpen 呼び出しに渡すべきではありません。

    FILE_INFORMATION_CLASS値 返される情報の種類
    FileStatInformation FILE_STAT_INFORMATION 構造体。 この構造体にはアクセス マスクが含まれています。 アクセス マスクの詳細については、ACCESS_MASKを参照してください。
    FileStatLxInformation FILE_STAT_LX_INFORMATION 構造体。 この構造体にはアクセス マスクが含まれています。 アクセス マスクの詳細については、ACCESS_MASKを参照してください。
    FileCaseSensitiveInformation FILE_CASE_SENSITIVE_INFORMATION 構造体。
  • その他の

    • Argument1: 将来使用するために予約されています。
    • Argument2: 将来使用するために予約されています。
    • Argument3: 将来使用するために予約されています。
    • Argument4: 将来使用するために予約されています。
    • Argument5: 将来の使用のために予約されています。

必要条件

要件 価値
ヘッダー ntifs.h

関連項目

FS_FILTER_CALLBACKS

FsRtlRegisterFileSystemFilterCallbacks