FSCTL_ENUM_USN_DATA IOCTL (winioctl.h)
マスター ファイル テーブル (MFT) レコードを取得するために、指定した 2 つの境界の間の更新シーケンス番号 (USN) データを列挙します。
この操作を実行するには、次のパラメーターを使用して DeviceIoControl 関数を呼び出します。
C++ |
---|
BOOL WINAPI DeviceIoControl( (HANDLE) hDevice, // handle to volume (DWORD) FSCTL_ENUM_USN_DATA, // 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); |
解説
この操作に対する重複した I/O の影響については、 DeviceIoControl トピックの「解説」セクションを参照してください。
ボリューム上のファイルを列挙するには、 FSCTL_ENUM_USN_DATA 操作を 1 回以上使用します。 最初の呼び出しで、MFT_ENUM_DATA構造体の StartFileReferenceNumber メンバーの開始点を に(DWORDLONG)0
設定します。 FSCTL_ENUM_USN_DATA の各呼び出しでは、出力バッファーの最初のエントリとして後続の呼び出しの開始点を取得します。
比較してボリュームに対する最近の変更を特定するには、 FSCTL_READ_USN_JOURNAL コントロール コードを使用します。
ボリュームへのハンドルを取得するには、 lpFileName パラメーターを次の形式の文字列に設定して CreateFile を呼び出します。
\\.\X:
前の文字列の X は、ボリュームが表示されるドライブを識別する文字です。 ボリュームは NTFS である必要があります。
Windows 8とWindows Server 2012では、このコードは次のテクノロジでサポートされています。
テクノロジ | サポートされています |
---|---|
サーバー メッセージ ブロック (SMB) 3.0 プロトコル | いいえ |
SMB 3.0 Transparent Failover (TFO) | いいえ |
スケールアウト ファイル共有を含む SMB 3.0 (SO) | いいえ |
クラスター共有ボリューム ファイル システム (CsvFS) | はい |
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ] |
Header | winioctl.h (Windows.h を含む) |