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_INPUT の Flags メンバーに 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 を含む) |