枚举两个指定边界之间的更新序列号 (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) |