在 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,它只列出了文件。
关于c++ - 内存映射物理磁盘和卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1628913/