FSCTL_ENUM_USN_DATA IOCTL (winioctl.h)

枚举两个指定边界之间的更新序列号 (USN) 数据,以获取主文件表 (MFT) 记录。

若要执行此操作,请使用以下参数调用 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 操作一次或多次。 在第一次调用时,将起始点(MFT_ENUM_DATA结构的 StartFileReferenceNumber 成员)设置为 (DWORDLONG)0。 每次调用 FSCTL_ENUM_USN_DATA 将检索后续调用的起点作为输出缓冲区中的第一个条目。

通过比较 确定卷的最新更改,请使用 FSCTL_READ_USN_JOURNAL 控制代码。

若要检索卷的句柄,请调用 CreateFile ,并将 lpFileName 参数设置为以下格式的字符串:

\\.\X

在前面的字符串中, X 是标识卷所在的驱动器的字母。 卷必须为 NTFS。

在 Windows 8 和 Windows Server 2012 中,以下技术支持此代码。

技术 支持
(SMB) 3.0 协议的服务器消息块
SMB 3.0 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CsvFS)

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
标头 winioctl.h (包括 Windows.h)

另请参阅

CreateFile

DeviceIoControl

FSCTL_READ_USN_JOURNAL

GetOverlappedResult

MFT_ENUM_DATA

重叠

USN_RECORD

卷管理控制代码