MOVE_FILE_DATA 構造体 (winioctl.h)

FSCTL_MOVE_FILE 制御コードの入力データを格納します。

構文

typedef struct {
  HANDLE        FileHandle;
  LARGE_INTEGER StartingVcn;
  LARGE_INTEGER StartingLcn;
  DWORD         ClusterCount;
} MOVE_FILE_DATA, *PMOVE_FILE_DATA;

メンバー

FileHandle

移動するファイルへのハンドル。

ファイルへのハンドルを取得するには、 CreateFile を使用します。

ファイルが暗号化されている場合、ハンドルにはFILE_READ_DATA、FILE_WRITE_DATA、FILE_APPEND_DATA、またはFILE_EXECUTEアクセス権が必要です。 詳細については、「 ファイル のセキュリティとアクセス権」を参照してください。

StartingVcn

移動する最初のクラスターの VCN (ファイルの先頭を基準としたクラスター番号)。

StartingLcn

VCN の移動先となる LCN (ボリューム上のクラスター番号)。

ClusterCount

移動するクラスターの数。

注釈

この構造体に入力するデータを取得するには、 DeviceIoControl 関数と FSCTL_GET_RETRIEVAL_POINTERS コントロール コードを使用します。

FAT ファイル システム ボリューム上のディレクトリの最初のクラスターを移動できません。

可能なときは、互いに相対的に配置された 16 キロバイト (KB) 単位のブロックで、データを移動してください。 これにより、シャドウ コピーが有効になっているときのコピー オン ライトのオーバーヘッドが軽減されます。これは、次の条件が発生すると、シャドウ コピー領域が増大し、パフォーマンスが低下するためです。

  • 移動要求のブロック サイズが 16 KB 以下であること。
  • 移動の差分が 16 KB 単位ではないこと。
移動の差分は、ソース ブロックの開始からターゲット ブロックの開始までのバイト数です。 つまり、X から Y を引いた絶対値が 16 KB の偶数倍の場合、オフセット X (ディスク上) から始まるブロックを開始オフセット Y に移動できます。 そのため、4 KB クラスターを想定すると、クラスター 3 からクラスター 27 への移動は最適化されますが、クラスター 18 からクラスター 24 への移動はされません。 mod(3,4) = 3 = mod(27,4) であることに注意してください。 Mod 4 が選択されたのは、それぞれ 4 KB の 4 つのクラスターが16 KB に相当するためです。 そのため、16 KB のクラスター サイズにフォーマットされたボリュームでは、すべての移動ファイルが最適化される結果になります。

シャドウ コピーに関する詳細については、ボリューム シャドウ コピー サービスに関する記事を参照してください。

要件

要件 値
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
Header winioctl.h (Windows.h を含む)

こちらもご覧ください

ファイルのデフラグ

FSCTL_GET_RETRIEVAL_POINTERS

FSCTL_MOVE_FILE

GetFileAttributes

GetFileAttributesEx

GetFileInformationByHandle