2

我有一个用 .NET 2.0 框架用 C# 编写的 Windows 服务,它使用 FileSystemWatcher 来监视某些目录的更改。其中一些目录可能位于可移动媒体上,例如 USB 驱动器。当新驱动器插入系统时,我会通过 WMI 查询获得通知,并且可以设置新的 FileSystemWatcher。这一切都运作良好。

困难在于我希望用户能够使用 Windows“安全删除硬件”应用程序弹出驱动器,但 Windows 报告驱动器很忙,因为我正在通过 FileSystemWatcher 对其进行监视,并告诉用户驱动器不能删除。

那么,我的问题是,我的 Windows 服务如何知道用户何时请求弹出,以便我可以删除我的文件系统监视器并允许请求成功?

4

1 回答 1

2

您需要通过 RegisterDeviceNotification Windows API 注册以接收设备移除查询广播事件 (DBT_DEVICEQUERYREMOVE),如此处所述

据我所知,没有包装此功能的 .NET Framework 类,因此您需要使用 p/Invoke 长期进行。

于 2011-01-24T16:28:27.613 回答