FSCTL_SET_OBJECT_ID IOCTL (winioctl.h)
设置指定文件或目录的对象标识符。
若要执行此操作,请使用以下参数调用 DeviceIoControl 函数。
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to device
FSCTL_SET_OBJECT_ID, // dwIoControlCode
(LPVOID) lpInBuffer, // input buffer
(DWORD) nInBufferSize, // size of input buffer
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
注解
对象标识符用于跟踪文件和目录。 它们对大多数应用程序不可见,并且永远不应被应用程序修改。 修改对象标识符可能会导致文件部分(最多包括整个数据量)的数据丢失。
使用此操作可将对象标识符显式设置为你提供的值。 尝试在已有对象标识符的对象上设置对象标识符将失败。 尝试使用已在卷上使用的对象标识符也会失败。 使用 FSCTL_CREATE_OR_GET_OBJECT_ID 操作让 NTFS 文件系统生成对象标识符(如果该对象还没有标识符)。
请注意,可能无法为远程文件正确更新时间戳。 若要确保结果一致,请使用无缓冲区 I/O。
在 Windows 8 和 Windows Server 2012 中,以下技术支持此代码。
技术 | 支持 |
---|---|
服务器消息块 (SMB) 3.0 协议 | 是 |
SMB 3.0 透明故障转移 (TFO) | 是 |
具有横向扩展文件共享的 SMB 3.0 (SO) | 是 |
群集共享卷文件系统 (CSV) | 是 |
弹性文件系统 (ReFS) | 否 |
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | winioctl.h (包括 Windows.h) |