windows - 打开闪存驱动器的句柄给我一个 "Access Denied"错误代码

标签 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 是否阻止应用程序打开可移动驱动器的句柄?

最佳答案

该代码有两个问题。第一,路径。您实际上是在指定驱动器的根文件夹;您真正需要的是音量。从路径中删除结尾的反斜杠;即 _T("\\\\.\\F:")。其次,您需要指定 FILE_SHARE_READ |文件共享写入;您正试图以独占模式打开它,这将失败。有关详细信息,请参阅 CreateFile 的 MSDN 文档。

关于windows - 打开闪存驱动器的句柄给我一个 "Access Denied"错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3672086/

相关文章:

javascript - 带有通过 JSON 的超链接的 Google 电子表格

windows - UTF-16 到 UTF-8 的转换(用于在 Windows 中编写脚本)

java - Tomcat6 无法在 Windows 和 Java6 上启动

c# - 如何在datagridview中隐藏特定单元格值

c++ - 由于错误 C2244 : "unable to match function definition to an existing declaration",智能指针模板运算符重载失败

c++ - Visual Studio 2015 : Error C2679 binary '>>' : no operator found

windows - ffmpeg - 2 个文件 - 转换 -> 连接 -> 水印不起作用

c++ - MFC CListCtrl 拖拽文件到Windows资源管理器

c - 将 f(mystruct *a) 更改为 f(const mystruct *a) 会破坏 C 中的 API/ABI 吗?

facebook - 通过 FB api 创建一个新的 FaceBook 页面