Apertura di una maniglia per flash drive mi dà un “Accesso negato” il codice di errore
-
01-10-2019 - |
Domanda
Vorrei sapere perché quando cerco di creare un handle per un flash drive USB, ricevo un percorso non trovato errore.
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());
}
Da lì voglio leggere un flusso di 512 byte (settore di avvio) in un file .bin, ma io non riesco a ottenere oltre la creazione maniglia prima. Fa di Windows impedire alle applicazioni di aprire un handle per le unità rimovibili?
Soluzione
Questo codice ha due problemi. In primo luogo, il percorso. In realtà si sta specificando la cartella principale dell'unità; quello che si ha realmente bisogno è il volume. Rimuovere la barra rovesciata finale dal percorso; cioè _T ( "\\\\ \\ F:"). In secondo luogo, è necessario specificare FILE_SHARE_READ | FILE_SHARE_WRITE; si sta tentando di aprirlo in modalità esclusiva, e questo avrà esito negativo. Vedere la documentazione MSDN per CreateFile per ulteriori informazioni.