Domanda

In Windows è possibile aprire dispositivi e volumi tramite CreateFile () . L'ho usato con successo prima di ReadFile () dai dispositivi, ma ora voglio passare alla mappatura della memoria. Nel seguente codice, ricevo INVALID_HANDLE_VALUE per il valore di b e c è impostato su 87 , < code> 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();

Come posso farlo funzionare?

È stato utile?

Soluzione

Non puoi. CreateFileMapping può solo creare una mappatura su un file. Dai un'occhiata alla differenza nella documentazione tra il parametro hFile per ReadFile e per CreateFileMapping . Per ReadFile elenca tutti i diversi tipi di handle che accetta (che include i dispositivi), per CreateFileMapping elenca solo i file.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top