Windows - Identificer, at der er en disk i drevet

Indlæg af Hanne Mølgaard Plasc

Problem



Nogle gange når vi dobbeltklikker på et USB-drev i Windows File Explorer, er der en meddelelse 'Der er ingen disk i drevet'. Jeg vil identificere dette problem i min ansøgning, før du læser nogen fil på disken.


Hvordan er det muligt?


Jeg er på Windows Platform og bruger Visual C ++ til udvikling.

Bedste reference


Hvis du kender drevbrevet, kan du prøve følgende:


HANDLE h = CreateFile("\\.\E:", 0, 0, NULL, OPEN\_EXISTING, 0, NULL);
if (h == INVALID\_HANDLE\_VALUE)
{
    DWORD err = GetLastError();
    if (err == ERROR\_FILE\_NOT\_FOUND)
        printf("The drive E: is not ready
");
    else
        printf("Unknown error \%lu
", (int)err);
}
else
{
    CloseHandle(h); /* don't forget to close the handle! */
    printf("The drive E: is ready
");
}


Det vil sige, åbn drevet uden at anmode om læsning eller skriveadgang. Det skal kun mislykkes, hvis drevet ikke er klar. Det virker med en USB-hukommelse.