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 を呼び出します。

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

要件

要件
サポートされている最小のクライアント Windows 10 Version 1809
Header ntifs.h

こちらもご覧ください

FltFsControlFile

FSCTL_SHUFFLE_FILE

REARRANGE_FILE_DATA

ZwFsControlFile