如何在CreateFile中打开卷的文件系统?

时间:2013-01-08 03:04:50

标签: windows winapi filesystems runtime-error createfile

CreateFile上的MSDN页面说:字符串"\\.\C:\"可用于打开C:卷的文件系统。但是,以下代码始终返回错误:ERROR_PATH_NOT_FOUND。

HANDLE h = CreateFile(L"\\\\.\\C:\\", FILE_READ_ATTRIBUTES, 
    FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, 0);

我应该如何正确传递参数?

2 个答案:

答案 0 :(得分:5)

如果您想要一个卷句柄(用于I / O控制代码),您需要删除尾部斜杠。

为了获取根目录的句柄,您需要保留尾部斜杠并在FILE_FLAG_BACKUP_SEMANTICS参数中传递dwFlagsAndAttributes标志。这在MSDN页面的“目录”标题下记录。例如,如果您计划拨打GetFileInformationByHandleGetFileInformationByHandleEx,则可以执行此操作。

但是,通常,您不会打开根目录的句柄以列出文件。相反,您可以使用FindFirstFile / FindNextFile或其中一个相关功能。

答案 1 :(得分:0)

尝试删除尾部斜杠:

L"\\\\.\\C:"