IRP_MJ_DIRECTORY_CONTROL 共用体の FLT_PARAMETERS

操作における FLT_IO_PARAMETER_BLOCK 構造体の MajorFunction フィールドが IRP_MJ_DIRECTORY_CONTROL であるときに使用される共用体コンポーネント。

構文

typedef union _FLT_PARAMETERS {
  ...   ;
  union {
    struct {
      ULONG                   Length;
      PUNICODE_STRING         FileName;
      FILE_INFORMATION_CLASS  FileInformationClass;
      ULONG POINTER_ALIGNMENT FileIndex;
      PVOID                   DirectoryBuffer;
      PMDL                    MdlAddress;
    } QueryDirectory;
    struct {
      ULONG                   Length;
      ULONG POINTER_ALIGNMENT CompletionFilter;
      ULONG                   Spare1;
      ULONG POINTER_ALIGNMENT Spare2;
      PVOID                   DirectoryBuffer;
      PMDL                    MdlAddress;
    } NotifyDirectory;
  } DirectoryControl;
  ...   ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

メンバー

  • DirectoryControl: 次のメンバーが含まれる構造体。

  • QueryDirectory: IRP_MN_QUERY_DIRECTORY 操作に使用される共用体コンポーネント。

  • Length: QueryDirectory.DirectoryBuffer メンバーが指すバッファーの長さ (バイト単位)。

  • FileName: 指定したディレクトリ内のファイルの名前を含む UNICODE_STRING 構造体へのポインター。

  • FileInformationClass: 以下で説明する値のいずれかを指定します。

    Value 意味
    FileBothDirectoryInformation 各ファイルの FILE_BOTH_DIR_INFORMATION 構造体を返します。
    FileDirectoryInformation 各ファイルの FILE_DIRECTORY_INFORMATION 構造体を返します。
    FileFullDirectoryInformation 各ファイルの FILE_FULL_DIR_INFORMATION 構造体を返します。
    FileIdBothDirectoryInformation 各ファイルの FILE_ID_BOTH_DIR_INFORMATION 構造体を返します。
    FileIdFullDirectoryInformation 各ファイルの FILE_ID_FULL_DIR_INFORMATION 構造体を返します。
    FileNamesInformation 各ファイルの FILE_NAMES_INFORMATION 構造体を返します。
    FileObjectIdInformation 各ファイルの FILE_OBJECTID_INFORMATION 構造体を返します。
    FileReparsePointInformation ディレクトリの 1 つの FILE_REPARSE_POINT_INFORMATION 構造体を返します。
  • FileIndex: ディレクトリ スキャンが開始されるファイルのインデックス。 SL_INDEX_SPECIFIED フラグが設定されていない場合は無視されます。 このパラメーターは、Win32 関数またはカーネル モードサポート ルーチンでは指定できません。 現在、32 ビット NT ベースのオペレーティング システムにのみ存在する NT 仮想 DOS マシン (NTVDM) でのみ使用されています。 ファイル インデックスは NTFS などのファイル システムでは定義されていないことに注意してください。NTFS では親ディレクトリ内のファイルの位置は固定されず、並べ替え順序を維持するためにいつでも変更できます。

  • DirectoryBuffer: ディレクトリの内容に関する要求された情報を受け取る、呼び出し元が指定した出力バッファーへのポインター。 このメンバーは省略可能であり、QueryDirectory.MdlAddress で MDL が指定されている場合は NULL にすることができます。 「解説」を参照してください。

  • MdlAddress: QueryDirectory.DirectoryBuffer メンバーが指すバッファーを記述するメモリ記述子リスト (MDL) のアドレス。 このメンバーは省略可能であり、QueryDirectory.DirectoryBuffer でバッファーが指定されている場合は NULL にすることができます。 「解説」を参照してください。

  • NotifyDirectory: IRP_MN_NOTIFY_CHANGE_DIRECTORY 操作に使用される共用体コンポーネント。

  • Length: NotifyDirectory.DirectoryBuffer メンバーが指すバッファーの長さ (バイト単位)。

  • CompletionFilter: ファイルまたはディレクトリに対するどのような種類の変更によって通知リストの IRP を完了させるかを指定するフラグのビットマスク。 使用可能なフラグ値を次に示します。

    フラグ 意味
    FILE_NOTIFY_CHANGE_FILE_NAME このディレクトリでファイルが追加、削除、または名前変更されました。
    FILE_NOTIFY_CHANGE_DIR_NAME サブディレクトリが作成、削除、または名前変更されました。
    FILE_NOTIFY_CHANGE_NAME このディレクトリの名前が変更されました。
    FILE_NOTIFY_CHANGE_ATTRIBUTES このファイルの属性の値 (最終アクセス時刻など) が変更されました。
    FILE_NOTIFY_CHANGE_SIZE このファイルのサイズが変更されました。
    FILE_NOTIFY_CHANGE_LAST_WRITE このファイルの最終変更時刻が変更されました。
    FILE_NOTIFY_CHANGE_LAST_ACCESS このファイルの最終アクセス時刻が変更されました。
    FILE_NOTIFY_CHANGE_CREATION このファイルの作成時刻が変更されました。
    FILE_NOTIFY_CHANGE_EA このファイルの拡張属性が変更されました。
    FILE_NOTIFY_CHANGE_SECURITY このファイルのセキュリティ情報が変更されました。
    FILE_NOTIFY_CHANGE_STREAM_NAME このディレクトリでファイルストリームが追加、削除、または名前変更されました。
    FILE_NOTIFY_CHANGE_STREAM_SIZE このファイルストリームのサイズが変更されました。
    FILE_NOTIFY_CHANGE_STREAM_WRITE このファイルストリームのデータが変更されました。
  • Spare1: 現在使用されていません。

  • Spare2: 現在使用されていません。

  • DirectoryBuffer: ディレクトリの内容に関する要求された情報を受け取る、呼び出し元が指定した出力バッファーへのポインター。 このメンバーは省略可能であり、NotifyDirectory.MdlAddress で MDL が指定されている場合は NULL にすることができます。 「解説」を参照してください。

  • MdlAddress: NotifyDirectory.DirectoryBuffer メンバーが指すバッファーを記述する MDL のアドレス。 このメンバーは省略可能であり、NotifyDirectory.DirectoryBuffer でバッファーが指定されている場合は NULL にすることができます。 「解説」を参照してください。

解説

IRP_MJ_DIRECTORY_CONTROL 操作の FLT_PARAMETERS 構造体には、コールバック データ (FLT_CALLBACK_DATA) 構造体が表す IRP ベースのディレクトリ制御情報操作のパラメーターが含まれます。 これは、FLT_IO_PARAMETER_BLOCK 構造体に含まれています。

DirectoryBuffer バッファーと MdlAddress バッファーの両方が指定されている場合は、ミニフィルターで MDL を使用することをお勧めします。 DirectoryBuffer が指すメモリは、呼び出し元プロセスのコンテキスト内でアクセスされるユーザー モード アドレスである場合、またはカーネル モード アドレスである場合に有効です。

ミニフィルターが MdlAddress の値を変更した場合、操作後のコールバックの後、フィルター マネージャーは現在 MdlAddress に格納されている MDL を解放し、MdlAddress の以前の値を復元します。

IRP_MJ_DIRECTORY_CONTROL は IRP ベースの操作です。

要件

要件タイプ 要件
ヘッダー Fltkernel.h (Fltkernel.h を含む)

関連項目

FILE_BOTH_DIR_INFORMATION

FILE_DIRECTORY_INFORMATION

FILE_FULL_DIR_INFORMATION

FILE_ID_BOTH_DIR_INFORMATION

FILE_ID_FULL_DIR_INFORMATION

FILE_NAMES_INFORMATION

FILE_OBJECTID_INFORMATION

FILE_REPARSE_POINT_INFORMATION

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS

FltNotifyFilterChangeDirectory

FsRtlNotifyFilterChangeDirectory

FsRtlNotifyFilterReportChange

FsRtlNotifyFullChangeDirectory

FsRtlNotifyFullReportChange

IRP_MJ_DIRECTORY_CONTROL

ZwQueryDirectoryFile