C++ Windows-如何禁用;“错误卷”;错误消息

C++ Windows-如何禁用;“错误卷”;错误消息,c++,windows,C++,Windows,我的应用程序正在后台向可移动媒体(USB DOK)读取/写入数据。问题是,当应用程序运行时,USB被移除时,计算机会弹出一条错误消息: 错误音量 驱动器中的音量不正确。请将卷插入驱动器E:。 取消重试继续 这在诸如GetFileSize、ReadFile等操作期间发生。显然,由于该应用程序应该在后台工作,我想抑制这些消息,然后默默地失败 顺便说一句,给出这些消息的进程似乎不是我的进程,而是CSRSS.EXE(尽管原因肯定是来自我的进程的操作) 我正在考虑的一个方向是切换到NtQueryInfor

我的应用程序正在后台向可移动媒体(USB DOK)读取/写入数据。问题是,当应用程序运行时,USB被移除时,计算机会弹出一条错误消息:

错误音量 驱动器中的音量不正确。请将卷插入驱动器E:。 取消重试继续 这在诸如GetFileSize、ReadFile等操作期间发生。显然,由于该应用程序应该在后台工作,我想抑制这些消息,然后默默地失败

顺便说一句,给出这些消息的进程似乎不是我的进程,而是CSRSS.EXE(尽管原因肯定是来自我的进程的操作)

我正在考虑的一个方向是切换到NtQueryInformationFile、NtReadFile等,但我不想


谢谢

我建议您使用windows系统托盘中的图标正确断开硬件的连接,以便将其从驱动器中拉出时不会被访问。或者至少先退出ap。

尝试呼叫:

SetErrorMode(SEM_NOOPENFILEERRORBOX);
在您的主要功能开始时

从:

当系统找不到文件时,不会显示消息框。相反,错误会返回到调用进程


谢谢,但这是不可能的。用户可以在何时以及如何决定断开USB连接。我的应用程序无论如何都不应该对用户可见。我建议保持原样。如果用户希望在未正确卸载的情况下卸下驱动器,那么他们应该会收到奇怪的错误消息。每次访问之前,您都可以检查端口是否连接了某些设备。如果没有,请不要执行该操作。如果这不可能,那就按原样离开。这是理想的工作方式。