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 を含む) |