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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top