Определите, есть ли диск в приводе - PullRequest
0 голосов
/ 22 августа 2011

Иногда, когда мы дважды щелкаем на USB-накопителе в проводнике Windows, появляется сообщение «В накопителе нет диска».Я хочу определить эту проблему в своем приложении перед чтением любого файла на диске.

Как это возможно?

Я на платформе Windows и использую Visual C ++ для разработки.

1 Ответ

0 голосов
/ 22 августа 2011

Если вы знаете букву диска, вы можете попробовать следующее:

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\n");
    else
        printf("Unknown error %lu\n", (int)err);
}
else
{
    CloseHandle(h); /* don't forget to close the handle! */
    printf("The drive E: is ready\n");
}

То есть откройте накопитель, не запрашивая права на чтение или запись. Он должен выйти из строя, только если диск не готов. Работает с картой памяти USB.

...