Ouverture d'une poignée pour un lecteur flash me donne un code d'erreur « Accès refusé »
-
01-10-2019 - |
Question
Je voudrais savoir pourquoi lorsque je tente de créer une poignée sur un lecteur flash USB, je reçois un chemin non trouvé erreur.
HANDLE aFile = CreateFile(_T("\\\\.\\F:\\"), GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (aFile == INVALID_HANDLE_VALUE)
{
printf("\n");
printf("Bad handle value. Error %d \n", GetLastError());
}
De là, je veux lire un flux de 512 octets (le secteur d'amorçage) dans un fichier .bin, mais je ne peux pas sembler aller au-delà de la création de la poignée d'abord. Est-ce que les fenêtres empêchent les applications d'ouvrir une poignée de disques amovibles?
La solution
Ce code a deux problèmes. Tout d'abord, le chemin. Vous indiquez en fait le dossier racine du lecteur; ce que vous avez vraiment besoin est le volume. Retirez le backslash du chemin; c.-à-_T ( "\\\\ \\ F:"). En second lieu, vous devez spécifier FILE_SHARE_READ | FILE_SHARE_WRITE; vous essayez de l'ouvrir en mode exclusif, et cela échouera. Voir la documentation MSDN pour CreateFile pour plus d'informations.