打开闪存驱动器的句柄给我一个“访问被拒绝”错误代码

时间:2010-09-08 21:34:45

标签: windows visual-c++ api createfile

我想知道为什么当我尝试创建USB闪存驱动器的句柄时,我收到路径未找到错误。

HANDLE aFile = CreateFile(_T("\\\\.\\F:\\"), GENERIC_READ, 0, NULL,
        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

    if (aFile == INVALID_HANDLE_VALUE)
    {
        printf("\n");
        printf("Bad handle value. Error %d \n", GetLastError());
    }

从那里我想读取一个512字节的流(引导扇区)到.bin文件,但我似乎无法首先通过句柄创建。 Windows是否阻止应用程序打开可移动驱动器的句柄?

1 个答案:

答案 0 :(得分:1)

该代码有两个问题。首先,路径。您实际上是指定驱动器的根文件夹;你真正需要的是音量。从路径中删除尾部反斜杠;即_T(“\\\\。\\ F:”)。其次,您需要指定FILE_SHARE_READ | FILE_SHARE_WRITE;您试图以独占模式打开它,这将失败。有关更多信息,请参阅CreateFile的MSDN文档。