次の方法で共有


FSCTL_REARRANGE_FILE IOCTL (ntifs.h)

FSCTL_REARRANGE_FILE ファイル内の割り当てを再配置し、ファイル内の要求された連続したソース範囲から同じファイル内の別の場所にクラスターを移動します。

メジャー コード

IRP_MJ_DEVICE_CONTROL

入力バッファー

再配置する割り当てを記述する REARRANGE_FILE_DATA 構造体へのポインター。 (32 ビット呼び出し元の場合、入力バッファーは REARRANGE_FILE_DATA32 構造体へのポインターです)。

入力バッファーの長さ

入力バッファーのサイズ (バイト単位)。

出力バッファー

何一つ;NULL に設定します。

出力バッファーの長さ

0 に設定します。

状態ブロック

戻り値

FSCTL_REARRANGE_FILE は、正常に完了するとSTATUS_SUCCESSを返します。それ以外の場合は、次のいずれかの NTSTATUS コードが返されます。

リターン コード 意味
STATUS_ACCESS_DENIED カーネル モードの呼び出しのみが許可されます。
STATUS_BUFFER_TOO_SMALL 指定された入力バッファーの長さが sizeof(REARRANGE_FILE_DATA) より小さい。
STATUS_PENDING 操作の完了が保留中です。

備考

要求パラメーター ソース ファイルとターゲット ファイルのバイト オフセットと、移動するソース領域の長さ (バイト単位) が含まれており、そのすべてがクラスターアラインされている必要があります。

  • クラスターを下に移動する場合、ターゲット ファイルのオフセットは、移動元範囲の下限を揃えるポイントを示します。
  • クラスターを上に移動する場合、ターゲット ファイルのオフセットは、ソース範囲の上限を揃えるポイントを示します。

どちらの場合も、ターゲット オフセットは、ターゲット オフセットで始まるクラスターの前にソース範囲を挿入する必要があることを示します。割り当てサイズが固定されているという制約によって区別が強制されます。

FSCTL_SHUFFLE_FILEとは異なり、FSCTL_REARRANGE_FILE ではランダム なデータを含む割り当てを追加できません。

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

パラメーター 形容
インスタンス [in]fltFsControlFile のみ。 呼び出し元の不透明なインスタンス ポインター。 このパラメーターは必須であり、NULL にすることはできません。
FileObject [in]fltFsControlFile のみ。 この要求のターゲットであるファイルまたはディレクトリのファイル オブジェクト ポインター。 このパラメーターは必須であり、NULL にすることはできません。
FileHandle [in]ZwFsControlFile のみ。 この要求のターゲットであるファイルまたはディレクトリのファイル ハンドル。 このパラメーターは必須であり、NULL にすることはできません。
IoStatusBlock の [out]ZwFsControlFile のみ。 要求の最終的な状態を含む IO_STATUS_BLOCK 構造体へのポインター。
FsControlCode の [in]FSCTL_REARRANGE_FILEに設定します。
InputBuffer の [in]IOCTL パラメーターを参照してください。
InputBufferLength [in]IOCTL パラメーターを参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 10 バージョン 1809
ヘッダー ntifs.h

関連項目

FltFsControlFile の

FSCTL_SHUFFLE_FILE

REARRANGE_FILE_DATA

ZwFsControlFile