次の方法で共有


FSCTL_QUERY_FILE_LAYOUT 制御コード

FSCTL_QUERY_FILE_LAYOUT 制御コードは、ファイル システム ボリュームのファイル レイアウト情報を取得します。 この要求の結果は、ファイル レイアウト情報エントリのコレクションです。 返されるエントリの種類は、QUERY_FILE_LAYOUT_INPUT 構造体の対象フラグを設定することによって制御します。 必要に応じて、一連のファイル エクステントを指定して結果をフィルターすることで、レイアウト情報の選択を制限できます。

この操作を実行するには、次のパラメーターを指定して FltFsControlFile または ZwFsControlFile を呼び出します。

パラメーター

  • FileObject [in]: FltFsControlFile のみ。 ファイル システム ボリュームのファイル オブジェクト ポインター。 このパラメーターは必須であり、NULL にすることはできません。

  • FileHandle [in]: ZwFsControlFile のみ。 ファイル システム ボリュームのファイル ハンドル。 このパラメーターは必須であり、NULL にすることはできません。

  • FsControlCode [in]: 操作の制御コード。 この操作には FSCTL_QUERY_FILE_LAYOUT 制御コードを使用します。

  • InputBuffer [in]: 呼び出し元によって割り当てられた QUERY_FILE_LAYOUT_INPUT 構造体へのポインター。 この構造体には選択オプションが含まれています。 オプションのファイル エクステントは QUERY_FILE_LAYOUT_INPUT の後に含めます。

  • InputBufferLength [in]: InputBuffer パラメーターが指し示すバッファーのサイズ (バイト単位)。 InputBuffer のサイズは、NumberOfPairs> 0 である場合、sizeof(QUERY_FILE_LAYOUT_INPUT) + (sizeof(Filter) * (NumberOfPairs - 1)) 以上である必要があります。 それ以外の場合は、InputBufferLength = sizeof(QUERY_FILE_LAYOUT_INPUT) を設定します。

  • OutputBuffer [out]: 呼び出し元によって割り当てられた QUERY_FILE_LAYOUT_OUTPUT 構造体へのポインター。 これは、このバッファーに続くファイル レイアウト エントリのヘッダーです。

  • OutputBufferLength [out]: OutputBuffer パラメーターが指し示すバッファーのサイズ (バイト単位)。 OutputBuffer のサイズは、返されるファイル レイアウトとストリーム レイアウト構造と共に QUERY_FILE_LAYOUT_OUTPUT を格納するのに十分な大きさにする必要があります。

ステータスブロック

FltFsControlFile または ZwFsControlFile は、STATUS_SUCCESS または次のいずれかの値のような、適切な NTSTATUS 値を返します。

コード 意味
STATUS_INVALID_PARAMETER ファイル システム ボリュームが開いているユーザー ボリュームではないか、バッファー長の値が正しくないか、無効なクエリ オプションが設定されています。
STATUS_ACCESS_DENIED 呼び出し元がファイル システム ボリュームにアクセスできません。
STATUS_INVALID_USER_BUFFER InputBuffer または OutputBuffer のポインターが正しく配置されていません。
STATUS_BUFFER_TOO_SMALL OutputBufferLength の値は OutputBuffer が小さすぎて 1 つ以上のレイアウト エントリを含めることができないことを示しています。
STATUS_END_OF_FILE InputBuffer または OutputBuffer のポインターが正しく配置されていません。

解説

1 つのボリュームのすべてのレイアウト エントリを取得するために、FSCTL_QUERY_FILE_LAYOUT 要求が、STATUS_END_OF_FILE が返されるまで複数回発行されます。 STATUS_SUCCESS が返されている間、呼び出し元は残りのレイアウト エントリに対する FSCTL_QUERY_FILE_LAYOUT 要求を送信し続けることができます。

レイアウト エントリの列挙は、QUERY_FILE_LAYOUT_INPUTFlags メンバーに QUERY_FILE_LAYOUT_RESTART フラグを含めることでいつでも再起動できます。 また、FSCTL_QUERY_FILE_LAYOUT によって STATUS_END_OF_FILE が返された後、別のレイアウト エントリ列挙を開始するには、次の FSCTL_QUERY_FILE_LAYOUT 要求に QUERY_FILE_LAYOUT_RESTART フラグを含める必要があります。

このコードは ReFS ではサポートされていません。

要件

要件タイプ 要件
サポートされている最小のクライアント Windows 8.1 Update
ヘッダー Ntifs.h (Ntifs.h または Fltkernel.h を含む)

関連項目

QUERY_FILE_LAYOUT_INPUT

QUERY_FILE_LAYOUT_OUTPUT

FltFsControlFile

ZwFsControlFile