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

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

Remarks

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

Parameters 共用体は、次のように定義されます。


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 に設定します。 SyncTypeそれ 以外の場合は 。

    • 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 値。 PostQueryOpen コールバックでは、ポスト コールバックに戻り値がないため、CompletionStatus を設定して操作を失敗させることができます。 これは主に、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構造体。
  • Others

    • 引数 1: 将来使用するために予約されています。
    • 引数 2: 将来使用するために予約されています。
    • 引数 3: 将来使用するために予約されています。
    • 引数 4: 将来使用するために予約されています。
    • 引数 5: 今後使用するために予約されています。

要件

要件
Header ntifs.h

こちらもご覧ください

FS_FILTER_CALLBACKS

FsRtlRegisterFileSystemFilterCallbacks