Mémoire mappant des disques physiques et des volumes
-
06-07-2019 - |
Question
Sous Windows, il est possible d'ouvrir des périphériques et des volumes via CreateFile ()
. J'ai déjà utilisé cela avec succès auparavant pour ReadFile ()
à partir de périphériques, mais je souhaite maintenant passer au mappage de mémoire. Dans le code suivant, je reçois INVALID_HANDLE_VALUE
pour la valeur de b
et c
est défini sur 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();
Comment puis-je le faire fonctionner?
La solution
Vous ne pouvez pas. CreateFileMapping peut uniquement créer un mappage vers un fichier. Examinez la différence de documentation entre le paramètre hFile pour ReadFile et pour CreateFileMapping . Pour ReadFile, il répertorie tous les types de descripteurs acceptés (y compris les périphériques). Pour CreateFileMapping, il répertorie uniquement les fichiers.