2010-09-08 25 views
2

Je voudrais savoir pourquoi lorsque je tente de créer un handle à un lecteur flash USB, je reçois une erreur de chemin introuvable.Ouverture d'un handle pour le lecteur flash me donne un code d'erreur "Accès refusé"

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. Windows empêche-t-il les applications d'ouvrir une poignée vers des lecteurs amovibles?

Répondre

1

Ce code a deux problèmes. D'abord, le chemin. Vous spécifiez en fait le dossier racine du lecteur; ce dont vous avez vraiment besoin, c'est le volume. Retirez le backslash arrière du chemin; c'est-à-dire _T ("\\\\. \\ F:"). Deuxièmement, 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.

+0

Excellent! Tout fonctionne maintenant :) – ffrstar777