FSCTL_DISMOUNT_VOLUME

【勇芳软件工作室】汉化HomePreviousNext

FSCTL_DISMOUNT_VOLUME DeviceIoControl 操作将卸载卷。

dwIoControlCode = FSCTL_DISMOUNT_VOLUME; //操作代码

lpInBuffer = NULL; //指向输入缓冲区的指针;不曾用过;必须为NULL

nInBufferSize = 0; //输入缓冲区的大小不曾用过;必须为零

lpOutBuffer ; //指向输出缓冲区的指针;不曾用过;必须为NULL

nOutBufferSize ; //输出缓冲区的大小不曾用过;必须为零

lpBytesReturned ; //指向由DeviceIoControl函数使用的DWORD的指针

参数

【lpInBuffer】

指向输入缓冲区。不用于此操作。设置为NULL。

【nInBufferSize】

指定【lpInBuffer】指向的缓冲区的大小(以字节为单位)。不用于此操作。设置为零。

【lpOutBuffer】

指向输出缓冲区。不用于此操作。设置为NULL。

【nOutBufferSize】

指定【lpOutBuffer】指向的缓冲区的大小(以字节为单位)。不用于此操作。设置为零。

【lpBytesReturned】

指向DWORD.此值不能为NULL。尽管FSCTL_DISMOUNT_VOLUME操作不产生输出数据,【lpOutBuffer】应为NULL,但DeviceIoControl函数使用【lpBytesReturned】指向的变量。操作后,该变量的值没有意义。

返回值

如果操作成功,DeviceIoControl返回TRUE。

如果操作失败,DeviceIoControl返回FALSE。要获取扩展错误信息,请调用GetLastError.

备注

传递给DeviceIoControl【hDevice】句柄必须是一个卷的句柄,为直接访问打开。应用程序可以通过调用CreateFile 【lpFileName】设置为如下所示的字符串来获取这样的句柄:

\\.\X:

其中X是硬盘驱动器分区字母,软盘驱动器或CD-ROM驱动器。应用程序还必须在CreateFile【dwShareMode】参数中指定FILE_SHARE_READ和FILE_SHARE_WRITE标志。

如果指定的卷被锁定,则操作失败。

卸载的卷具有以下属性:

*没有打开的文件。

*操作系统不会“知道”音量。

一旦尝试访问卸载的卷,操作系统将尝试安装卸载的卷。例如,对GetLogicalDrives的调用将触发操作系统挂载任何未安装的卷。

当卷需要消失一段时间时,卸载卷是有用的。例如,将卷的文件系统从FAT更改为NTFS的应用程序可能会遵循以下步骤:

打开音量

2.锁定音量

3.格式化

4.锁定音量

5.卸载音量

6.关闭音量手柄

卸载操作会从FAT文件系统的“意识”中删除卷。当操作系统挂载卷时,它显示为NTFS卷。

也可以看看

CreateFile, DeviceIoControl, ExitThread, GetLogicalDrives