5

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);

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

4

2 回答 2

7

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

为了获得根目录的句柄,您需要保留尾部斜杠并在参数中传递FILE_FLAG_BACKUP_SEMANTICS标志。dwFlagsAndAttributes这记录在“目录”标题下的 MSDN 页面上。例如,如果您打算调用GetFileInformationByHandle或,这就是您想要做的GetFileInformationByHandleEx

但是,通常情况下,您不会打开根目录的句柄来列出文件。相反,您将使用FindFirstFile/FindNextFile或相关功能之一。

于 2013-01-08T04:15:46.680 回答
0

尝试删除尾部斜杠:

L"\\\\.\\C:"
于 2013-01-08T03:39:12.697 回答