FSCTL_GET_RETRIEVAL_POINTERS IOCTL (winioctl.h)

ファイル ハンドルが指定されると、特定のファイルのディスクでの割り当てと場所を記述するデータ構造を取得します。ボリューム ハンドルが指定されると、ボリューム上の不良クラスターの場所を取得します。

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

DeviceIoControl(
  (HANDLE) hDevice,                 // handle to file, directory, or volume
  FSCTL_GET_RETRIEVAL_POINTERS,     // dwIoControlCode
  (LPVOID) lpInBuffer,              // input buffer
  (DWORD) nInBufferSize,            // size of input buffer
  (LPVOID) lpOutBuffer,             // output buffer
  (DWORD) nOutBufferSize,           // size of output buffer
  (LPDWORD) lpBytesReturned,        // number of bytes returned
  (LPOVERLAPPED) lpOverlapped       // OVERLAPPED structure
);

注釈

FSCTL_GET_RETRIEVAL_POINTERS操作は、特定のファイルのディスク上の割り当てと場所を記述する可変サイズのデータ構造を取得します。 構造体は、仮想クラスター番号 (ファイルまたはストリーム空間内の VCN オフセット) と論理クラスター番号 (ボリューム空間内の LCN オフセット) の間のマッピングを記述します。

FSCTL_GET_RETRIEVAL_POINTERS制御コードは、NTFS、FAT、exFAT、UDF、および ReFS ファイル システムでのファイルまたはディレクトリ操作でサポートされています。

サポートされているファイル システムでは、 FSCTL_GET_RETRIEVAL_POINTERS 操作は、存在しないデータのエクステントの場所を返します。 常駐データにはエクステントの場所がありません。

FSCTL_GET_RETRIEVAL_POINTERS制御コードでは、不適切なクラスターを検索する代替機能もサポートされています。 NTFS、FAT、または exFAT でフォーマットされたボリューム上の不適切なクラスターの場所を照会するには、 hDevice パラメーターとしてボリューム ハンドルを使用します。 この機能は NTFS、FAT、exFAT でのみサポートされており、呼び出し元にはボリュームに 対するMANAGE_VOLUME_ACCESS アクセス許可が必要です。

この操作に対する重複した I/O の影響については、 DeviceIoControl トピックの「解説」セクションを参照してください。

Windows 8とWindows Server 2012では、このコードは次のテクノロジでサポートされています。

テクノロジ サポートされています
サーバー メッセージ ブロック (SMB) 3.0 プロトコル いいえ
SMB 3.0 Transparent Failover (TFO) いいえ
スケールアウト ファイル共有 (SO) を使う SMB 3.0 いいえ
クラスターの共有ボリューム ファイル システム (CsvFS) はい

必要条件

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

こちらもご覧ください