使用中で、要求されたファイル参照番号の序数以下の最初のファイル レコードを取得します。
この操作を実行するには、次のパラメーターを指定して 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 に対応するファイル レコードが要求されると、そのファイル レコードが返されます。
ファイル ID 10 から 14 に対応するファイル・レコードが要求された場合は、ファイル ID 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 透過的フェールオーバー (TFO) | いいえ |
| SMB 3.0 とスケールアウト ファイル共有 (SO) | いいえ |
| クラスター共有ボリューム ファイル システム (CsvFS) | イエス |
| 回復性のあるファイル システム (ReFS) | いいえ |
Requirements
| Requirement | 価値 |
|---|---|
| サポートされる最小クライアント | Windows XP [デスクトップ アプリのみ] |
| サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ] |
| Header | winioctl.h (Windows.h を含む) |