次の方法で共有


コントロール コード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 値のいずれかを返す可能性があります。

Code Meaning
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_INPUTFileOffset メンバーは、ファイルの末尾 (EOF) の後で開始されます。
STATUS_DISMOUNTED_VOLUME マウント解除されたボリュームでオフロード書き込みを行うことはできません。
STATUS_MEDIA_WRITE_PROTECTED ボリュームは読み取り専用です。
STATUS_INSUFFICIENT_RESOURCES 要求を完了するために使用できるリソースが不足しています。
STATUS_BUFFER_TOO_SMALL InputBufferLength が小さすぎて InputBufferFSCTL_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

Requirements

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

こちらも参照ください

FltFsControlFile

ZwFsControlFile

FSCTL_OFFLOAD_WRITE_INPUT

FSCTL_OFFLOAD_WRITE_OUTPUT