FSCTL_LOCK_VOLUME

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

FSCTL_LOCK_VOLUME DeviceIoControl 操作将锁定卷。只能通过锁定卷的文件对象(* 【hDevice】)的句柄来访问锁定卷。

dwIoControlCode = FSCTL_LOCK_VOLUME; //操作代码

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

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

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

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

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

参数

【lpInBuffer】

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

【nInBufferSize】

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

【lpOutBuffer】

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

【nOutBufferSize】

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

【lpBytesReturned】

指向DWORD.此值不能为NULL。尽管FSCTL_LOCK_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标志。

如果卷上有任何打开的文件,则FSCTL_LOCK_VOLUME操作将失败。相反,此操作的成功表明没有打开的文件。

该操作对于需要在一段时间内独占访问卷(例如磁盘实用程序)的应用程序是有用的。

锁定的卷保持锁定,直到发生以下情况之一:

*应用程序调用{??989796074} DeviceIoControl操作来解锁该卷。

*手柄直接通过CloseHandle关闭,或者当进程终止时间外关闭。

在锁定之前,系统会将所有缓存的数据刷新到卷上。例如,保存在延迟写入缓存中的任何数据都将写入卷中。

也可以看看

CloseHandle, CreateFile, DeviceIoControl, FSCTL_UNLOCK_VOLUME