Mapeo de memoria discos físicos y volúmenes
-
06-07-2019 - |
Pregunta
En Windows es posible abrir dispositivos y volúmenes a través de CreateFile ()
. He usado esto con éxito antes para ReadFile ()
desde dispositivos, pero ahora quiero cambiar a mapeo de memoria. En el siguiente código, recibo INVALID_HANDLE_VALUE
por el valor de b
, y c
está configurado en 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();
¿Cómo puedo hacer que esto funcione?
Solución
No puedes. CreateFileMapping solo puede crear una asignación a un archivo. Eche un vistazo a la diferencia en la documentación entre el parámetro hFile para ReadFile y para CreateFileMapping . Para ReadFile, enumera todos los diferentes tipos de identificadores que acepta (que incluye dispositivos), para CreateFileMapping solo enumera archivos.