2009-10-27 111 views
1

在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(); 

我該如何得到這個工作?

回答

6

你不能。 CreateFileMapping只能創建一個到文件的映射。查看ReadFile的hFile參數與CreateFileMapping之間的文檔差異。對於ReadFile,它列出它接受的所有不同類型的句柄(其中包括設備),對於CreateFileMapping它只列出文件。

+0

不確定,但總比沒有好:) – 2009-10-27 08:51:56