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