Windows ファイル エクスプローラーで USB ドライブをダブルクリックすると、「ドライブにディスクがありません」というメッセージが表示されることがあります。ディスク上のファイルを読み取る前に、アプリケーションでこの問題を特定したいと考えています。
それはどのように可能ですか?
私は Windows プラットフォームを使用しており、開発には Visual C++ を使用しています。
Windows ファイル エクスプローラーで USB ドライブをダブルクリックすると、「ドライブにディスクがありません」というメッセージが表示されることがあります。ディスク上のファイルを読み取る前に、アプリケーションでこの問題を特定したいと考えています。
それはどのように可能ですか?
私は Windows プラットフォームを使用しており、開発には Visual C++ を使用しています。
ドライブ文字がわかっている場合は、次のことを試すことができます。
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メモリースティックで動作します。