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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top