内存映射物理磁盘和卷

Mat*_*ner 1 c++ winapi windows-xp memory-mapped-files

在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();
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它发挥作用?

shf*_*301 6

你不能.CreateFileMapping只能创建到文件的映射.看一下ReadFileCreateFileMapping的hFile参数之间的文档差异.对于ReadFile,它列出了它接受的所有不同类型的句柄(包括设备),对于CreateFileMapping,它只列出文件.