Вопрос

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

scroll top