次の方法で共有


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 に対応するファイル レコードが要求されると、そのファイル レコードが返されます。

ファイル 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 を含む)

こちらも参照ください