【问题标题】:Createfile fails while reading mbr读取 mbr 时 Createfile 失败
【发布时间】:2012-09-12 17:24:55
【问题描述】:

在 WinXP 上读取 mbr 时 Createfile 失败。返回 -1 即INVALID_DEVICE_HANDLE

HANDLE hDisk = CreateFile((LPCWSTR)"\\\\.\\PhysicalDrive0", GENERIC_READ| GENERIC_WRITE, FILE_SHARE_READ| FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0,NULL );

知道为什么吗???

【问题讨论】:

    标签: winapi mbr


    【解决方案1】:

    您忘记在字符串常量“\\.\PhysicalDrive0”中添加“L”。

    HANDLE hDisk = CreateFile(L"\\.\PhysicalDrive0", GENERIC_READ | GENERIC_WRITE,
        FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
    

    仅当您使用 API 的 unicode 版本时才正确,即 CreateFileW()。

    【讨论】:

    • 如果你要使用L"...",那么你应该显式调用CreateFileW()CreateFileW(L"\\\\.\\PhysicalDrive0", ...),否则使用TEXT()宏:CreateFile(TEXT("\\\\.\\PhysicalDrive0"), ...)
    【解决方案2】:

    使用这个:

    HANDLE hDisk = CreateFile(L"\\\\.\\PhysicalDrive0", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
    

    它对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 2011-03-22
      • 2014-10-30
      相关资源
      最近更新 更多