确定驱动器中有光盘

发布于 2024-11-30 22:20:26 字数 143 浏览 1 评论 0原文

有时,当我们在 Windows 文件资源管理器中双击 USB 驱动器时,会出现一条消息“驱动器中没有光盘”。我想在读取光盘上的任何文件之前在我的应用程序中识别此问题。

怎么可能呢?

我在Windows平台上使用Visual C++进行开发。

Sometimes when we double click on a USB drive in Windows File Explorer there is a message "There is no disc in the drive". I want to identify this issue in my application prior to reading any file on the disc.

How is it possible?

I am on Windows Platform and using Visual C++ for development.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

醉殇 2024-12-07 22:20:26

如果您知道驱动器号,则可以尝试以下操作:

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 记忆棒配合使用。

If you know the drive letter, you can try the following:

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");
}

That is, open the drive without requesting read or write access. It should fail only if the drive is not ready. It works with a USB memory stick.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文