内存映射物理磁盘和卷
-
06-07-2019 - |
题
在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();
我怎样才能让它发挥作用?
解决方案
你做不到。 CreateFileMapping只能创建到文件的映射。看一下 ReadFile 和 CreateFileMapping 一>。对于ReadFile,它列出了它接受的所有不同类型的句柄(包括设备),对于CreateFileMapping,它只列出文件。
不隶属于 StackOverflow