2009-10-27 5 views
1

Sous Windows, il est possible d'ouvrir des périphériques et des volumes via CreateFile(). Je l'ai utilisé avec succès auparavant à ReadFile() à partir de périphériques, mais maintenant je veux passer à la cartographie de la mémoire. Dans le code suivant, je reçois INVALID_HANDLE_VALUE pour la valeur b et c est défini sur 87, ERROR_INVALID_PARAMETER.Disques physiques et volumes physiques mappés en mémoire

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 faire fonctionner cela?

Répondre

6

Vous ne pouvez pas. CreateFileMapping peut uniquement créer un mappage vers un fichier. Jetez un oeil à la différence dans la documentation entre le paramètre hFile pour ReadFile et pour CreateFileMapping. Pour ReadFile, il répertorie tous les différents types de handles qu'il accepte (y compris les périphériques), pour CreateFileMapping il ne répertorie que les fichiers.

+0

pas définitif, mais mieux que rien :) –

Questions connexes