检测到将弹出可移动驱动器(弹出之前)以关闭打开的文件句柄

时间:2018-09-18 13:53:24

标签: winapi

我的delphi应用程序打开了可移动驱动器的驱动器句柄。需要句柄以通过ReadDirectoryChangesW接收文件更改。 句柄用以下方式打开:

CreateFile(PChar(fFilePath), FILE_LIST_DIRECTORY or GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE or FILE_SHARE_DELETE, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS or FILE_FLAG_OVERLAPPED, 0);

如果我尝试通过系统托盘中的“安全删除硬件”来删除驱动器,则会收到一个消息对话框:“ Windows无法停止您的设备,因为程序仍在使用它”。 我尝试侦听更改事件,例如WM_DEVICECHANGE,DBT_DEVICEREMOVEPENDING,DBT_DEVICEREMOVECOMPLETE或类似事件,以获取有关挂起的弹出操作的信息,但这似乎为时已晚,因为在触发这些事件之前会显示对话框。 在显示此对话框之前是否有触发的事件。还是有其他选择可以检测到应该删除USB驱动器? 任何帮助表示赞赏。谢谢

0 个答案:

没有答案