通过FSCTL_LOCK_VOLUME win32 api控制代码锁定后使用该设备?

时间:2013-03-28 14:21:01

标签: c winapi systems-programming

如何通过FSCTL_LOCK_VOLUME win32 api控制代码锁定设备,例如列出设备中的文件或从设备中删除文件等,如何使用设备。
当设备未锁定时,我可以按FindFirstFile()FindNextFile()列出所有文件,但是当我锁定它们时,我无法使用这两个功能。
是否有任何替代功能,例如列出与设备句柄一起使用的文件?
msdn说:

  

只能通过锁定卷的文件对象(* hDevice)的句柄访问锁定的卷。

非常感谢,祝你好运。

1 个答案:

答案 0 :(得分:1)

你不能。

一旦卷被锁定,它只能作为卷数据结构的原始视图访问,而不能作为文件访问。这就是FSCTL_LOCK_VOLUME的用途,让你搞乱原始数据结构。您可以在传递给ReadFile的句柄上使用ReadFileExWriteFileWriteFileEx以及DeviceIoControl和堂兄弟来阅读原始卷。

如果您不想这样做,但只是阻止其他人在您查看它时修改磁盘(对于备份等),您可能会考虑使用卷影副本。它确实取决于你想要做的事情。