FSCTL_OFFLOAD_READ制御コードは、オフロード読み取りプリミティブをサポートするストレージ システム内のデータ ブロックのオフロード読み取りを開始します。
この操作を実行するには、次のパラメーターを指定 して FltFsControlFile または ZwFsControlFile を呼び出します。
パラメーター
インスタンス [in]: FltFsControlFile のみ。 呼び出し元の不透明なインスタンス ポインター。 このパラメーターは必須であり、NULL にすることはできません。
FileObject [in]: FltFsControlFile のみ。 読み取るファイルを指定するファイル ポインター オブジェクト。 このパラメーターは必須であり、NULL にすることはできません。
FileHandle [in]: ZwFsControlFile のみ。 読み取るファイルのファイル ハンドル。 このパラメーターは必須であり、NULL にすることはできません。
FsControlCode [in]: 操作のコントロール コード。 この操作 にはFSCTL_OFFLOAD_READ を使用します。
InputBuffer [in]: 読み取るデータ ブロックのサイズとオフセットを含む FSCTL_OFFLOAD_READ_INPUT構造体への ポインター。
InputBufferLength [in]: InputBuffer が指すバッファーのサイズ (バイト単位)。 この値は sizeof(FSCTL_OFFLOAD_READ_INPUT) です。
OutputBuffer [out]: オフロード読み取り操作の結果を受け取る FSCTL_OFFLOAD_READ_OUTPUT構造体への ポインター。
OutputBufferLength [out]: OutputBuffer パラメーターが指すバッファーのサイズ (バイト単位)。 この値は、少なくとも sizeof(FSCTL_OFFLOAD_READ_OUTPUT) である必要があります。
状態ブロック
FltFsControlFile または ZwFsControlFile は、操作が成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合、適切な関数は、次の NTSTATUS 値のいずれかを返す可能性があります。
| Code | Meaning |
|---|---|
| STATUS_INVALID_DEVICE_REQUEST | 指定されたハンドルが有効なファイル ハンドルではありません |
| STATUS_INVALID_PARAMETER | パラメーターが無効です。 「解説」を参照してください。 |
| STATUS_VOLUME_DISMOUNTED | ファイル システム ボリュームがマウント解除されます。 |
| STATUS_NOT_SUPPORTED | オフロード読み取り操作は、このボリュームではサポートされていません。 |
| STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED | 要求されたファイルの種類はサポートされていません。 オフロード操作は、トランザクション ファイル (TxF) のファイルの種類ではサポートされていません。ユーザー以外のファイル。圧縮ファイル。暗号化されたファイル。スパース ファイル。NTFS メタデータ ファイル。 |
| STATUS_FILE_DELETED | このファイルのデータ ストリームが無効です。 |
| STATUS_FILE_CLOSED | ファイル ハンドルが閉じています。 |
| STATUS_INVALID_HANDLE | 指定されたファイル ハンドルが無効です。 |
| STATUS_FILE_LOCK_CONFLICT | 現在のファイル ロック状態のため、読み取りアクセスが不十分です。 |
| STATUS_END_OF_FILE | FSCTL_OFFLOAD_READ_INPUTの FileOffset メンバーは、ファイルの末尾 (EOF) の後で開始されます。 |
| STATUS_DISMOUNTED_VOLUME | マウント解除されたボリュームでオフロード読み取りを行うことはできません。 |
| STATUS_INSUFFICIENT_RESOURCES | 要求を完了するために使用できるリソースが不足しています。 |
| STATUS_BUFFER_TOO_SMALL | OutputBufferLength が小さすぎて OutputBuffer が FSCTL_OFFLOAD_READ_OUTPUT 構造体を受信できません。 |
注釈
オフロード読み取りは、通常のファイルでのみ使用できます。 サポートされていないファイルの種類の一覧については、 STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED の説明を参照してください。
読み取りは、有効なデータ長 (VDL) を超えて開始できますが、EOF を超えない場合があります。
STATUS_INVALID_PARAMETERが返された場合、エラーは次のいずれかの無効なパラメーターである可能性があります。
- ファイル サイズがPAGE_SIZE未満です。
-
InputBufferLength<
sizeof(FSCTL_OFFLOAD_READ_INPUT)。 -
FSCTL_OFFLOAD_READ_INPUTの 1 つ以上のメンバーが正しくありません。
- FileOffset は、ボリュームの論理セクター サイズの倍数ではありません。
- CopyLength は、ボリュームの論理セクター サイズの倍数ではありません。
- Size は 、FSCTL_OFFLOAD_READ_INPUT 構造体のサイズではありません。
- FileOffset + CopyLength>MAXULONGLONG。
Requirements
| 要件タイプ | Requirement |
|---|---|
| サポートされている最小のクライアント | Windows 8 |
| Header | Ntifs.h ( Ntifs.h または Fltkernel.h を含む) |