FSCTL_GET_NTFS_FILE_RECORD IOCTL (winioctl.h)

要求されたファイル参照番号以下の序数値を持つ、使用中の最初のファイル レコードを取得します。

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

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to device
  FSCTL_GET_NTFS_FILE_RECORD,       // 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
);

注釈

このコントロール コードは、ファイル識別子を下方向に列挙し、常に使用中のファイル レコードを返します。 つまり、この制御コードによって返されるファイル識別子は、入力バッファーで指定されたファイル識別子と同じではない可能性があります。 たとえば、ファイル識別子 1 ~ 9 および 15 が使用中の場合、ファイル識別子 10 から 14 は使用されず、ファイル識別子 15 に対応するファイル レコードが要求されると、そのファイル レコードが返されます。

ファイル識別子 10 から 14 に対応するファイル レコードが要求された場合は、ファイル識別子 9 に対応するファイル レコードが返されます。 ファイル ID 1 から 9 に対応するファイル・レコードのいずれかが要求されると、それらのファイル・レコードが戻されます。

lpOutBuffer が指す出力バッファーの正しいサイズを確認するには、最初に FSCTL_GET_NTFS_VOLUME_DATA コントロール コードを呼び出して、1 つのファイル レコードのサイズを取得します。 これは、返されるNTFS_VOLUME_DATA_BUFFER構造体の BytesPerFileRecordSegment メンバーの値です。 次に、出力バッファーのサイズを次の式に設定します。

sizeof (NTFS_FILE_RECORD_OUTPUT_BUFFER) + sizeof (one file record) - 1

ファイルが複数のファイル レコードで構成されている場合は、個別に取得する必要があります。

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

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

要件

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

こちらもご覧ください