FSCTL_GET_VOLUME_BITMAP IOCTL (winioctl.h)
检索卷上已占用群集和可用群集的位图。
若要执行此操作,请使用以下参数调用 DeviceIoControl 函数。
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to volume
FSCTL_GET_VOLUME_BITMAP, // 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
);
注解
FSCTL_GET_VOLUME_BITMAP控制代码检索一个数据结构,该结构描述文件系统中每个群集的分配状态,从请求的开始 LCN 到卷上的最后一个群集。 位图使用一个位来表示每个群集:
- 值 1 指示群集已分配 (正在使用) 。
- 值 0 指示群集未分配 (可用) 。
请注意,位图表示一个时间点,如果卷有写入活动,则一旦读取该位图就可能不正确。 因此,尽管最近的位图指示群集未分配,但有可能尝试将群集移动到分配的群集上。 必须将 将 DeviceIoControl 函数与 FSCTL_MOVE_FILE 控制代码配合使用的程序做好这种可能性的准备。
此处使用的句柄必须是卷句柄,并且已使用任何访问权限打开。 请注意,只有管理员才能打开卷句柄。
在计算位图之前,输入缓冲区中的起始 LCN 可能会向下舍入。 舍入限制取决于文件系统。
有关重叠 I/O 对此操作的影响,请参阅 DeviceIoControl 主题的“备注”部分。
此操作将对齐它在页面边界上返回的位图。
Windows Server 2003 和 Windows XP: 此操作在字节边界上对齐它返回的位图。
在 Windows 8 和 Windows Server 2012 中,以下技术支持此代码。
技术 | 支持 |
---|---|
服务器消息块 (SMB) 3.0 协议 | 否 |
SMB 3.0 透明故障转移 (TFO) | 否 |
具有横向扩展文件共享的 SMB 3.0 (SO) | 否 |
群集共享卷文件系统 (CSV) | 是 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | winioctl.h (包括 Windows.h) |