1

在 Windows 中,可以通过CreateFile(). 我以前成功地使用过它来ReadFile()从设备,但现在我想切换到内存映射。在下面的代码中,我收到INVALID_HANDLE_VALUE, 的值bc设置为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();

我怎样才能让它工作?

4

1 回答 1

6

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

于 2009-10-27T05:50:46.933 回答