内存映射物理磁盘和卷

问题描述:

在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的hFile参数与CreateFileMapping之间的文档差异。对于ReadFile,它列出它接受的所有不同类型的句柄(其中包括设备),对于CreateFileMapping它只列出文件。

+0

不确定,但总比没有好:) – 2009-10-27 08:51:56