2009-10-27 2 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 может создавать только сопоставление с файлом. Взгляните на разницу в документации между параметром hFile для ReadFile и для CreateFileMapping. Для ReadFile в нем перечислены все типы дескрипторов, которые он принимает (включая устройства), для CreateFileMapping он отображает только файлы.

+0

не определено, но лучше, чем ничего :) –