FSCTL_DISMOUNT_VOLUME IOCTL (winioctl.h)
无论卷当前是否正在使用中,都卸载卷。 有关详细信息,请参见“备注”部分。
若要执行此操作,请使用以下参数调用 DeviceIoControl 函数。
C++ |
---|
BOOL DeviceIoControl( (HANDLE) hDevice, // handle to a volume (DWORD) FSCTL_DISMOUNT_VOLUME, // dwIoControlCodeNULL, // lpInBuffer0, // nInBufferSizeNULL, // lpOutBuffer0, // nOutBufferSize(LPDWORD) lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped // OVERLAPPED structure ); |
注解
无论是否有任何其他进程正在使用卷, FSCTL_DISMOUNT_VOLUME 控制代码都将尝试卸载卷,如果这些进程不锁定卷,这些进程可能会产生不可预知的结果。 有关锁定卷的信息,请参阅 FSCTL_LOCK_VOLUME。
传递给 DeviceIoControl 的 hDevice 句柄必须是卷的句柄,该句柄已打开以供直接访问。 若要检索卷句柄,请调用 CreateFile, 并将 lpFileName 参数设置为以下格式的字符串:
\.\X:
其中 X 是硬盘驱动器分区号、软盘驱动器或 CD-ROM 驱动器。 应用程序还必须在 CreateFile 的 dwShareMode 参数中指定FILE_SHARE_READ和FILE_SHARE_WRITE标志。
如果指定的卷是系统卷或包含页文件,则操作将失败。
如果指定的卷被另一个进程锁定,则操作将失败。 若要防止其他进程锁定卷,请在打开卷后立即将其锁定。
已卸除卷具有以下属性:
- 没有打开的文件。
- 操作系统会检测卷。
当卷需要消失一段时间时,卸载卷很有用。 例如,将卷文件系统从 FAT 文件系统更改为 NTFS 文件系统的应用程序可能会使用以下过程。
更改卷文件系统
- 打开卷。
- 锁定卷。
- 设置卷的格式。
- 卸载卷。
- 解锁卷。
- 关闭卷柄。
在Windows 8和Windows Server 2012中,以下技术支持此代码。
技术 | 支持 |
---|---|
服务器消息块 (SMB) 3.0 协议 | 否 |
SMB 3.0 透明故障转移 (TFO) | 否 |
具有横向扩展文件共享的 SMB 3.0 (SO) | 否 |
群集共享卷文件系统 (CSV) | 查看注释 |
在 CsvFs 上,发出卸载的节点将看到正常的卸载序列。 在所有其他节点上,FS 将使所有打开的文件失效。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | winioctl.h (包括 Windows.h) |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈