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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top