c++ - 内存映射物理磁盘和卷

标签 c++ winapi windows-xp memory-mapped-files

在 Windows 中,可以通过 CreateFile() 打开设备和卷。之前我已经成功地使用它从设备中读取 ReadFile(),但现在我想切换到内存映射。在下面的代码中,我收到 INVALID_HANDLE_VALUE 作为 b 的值,c 设置为 87ERROR_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/

相关文章:

c++ - 如何将对象传递给 CreateThread 函数?

c++ - 由于 wm_keyup 而卡住键盘输入

c++ - 在 Win32 应用程序中捕获 DLL 依赖项

windows-xp - Xcopy 复制文件内容但保留目录

c++ - intel-pin:如何将命令行参数传递给二进制文件

c++ - 描述多 channel 渲染的附件

c++ - 如何删除 qmake 自动添加到链接器选项的库路径

windows - Windows XP 引导加载程序 (NTLDR) 是否注意内核导入声明?

c# - 如何以编程方式创建适用于 XP、Vista 和 Windows 7 的文件关联

c++ - 在链表中移动和复制构造函数