代码之家  ›  专栏  ›  技术社区  ›  Matt Joiner

内存映射物理磁盘和卷

  •  1
  • Matt Joiner  · 技术社区  · 15 年前

    在Windows中,可以通过 CreateFile() . 我以前成功地用过这个 ReadFile() 从设备,但现在我想切换到内存映射。在下面的代码中,我收到 INVALID_HANDLE_VALUE 价值 b c 设置为 87 ,请 ERROR_INVALID_PARAMETER .

    HANDLE a = ::CreateFileA("\\\\.\\h:", GENERIC_READ, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY | FILE_FLAG_NO_BUFFERING, NULL);
    HANDLE b = ::CreateFileMappingA(a, NULL, PAGE_READONLY, 0, 0, NULL);
    DWORD c = ::GetLastError();
    

    我怎样才能让这个工作?

    1 回复  |  直到 15 年前
        1
  •  6
  •   shf301    15 年前

    不能。CreateFileMapping只能创建到文件的映射。查看文档中的hfile参数与 ReadFile 为了 CreateFileMapping . 对于readfile,它列出它接受的所有不同类型的句柄(包括设备),对于createfilemapping,它只列出文件。