我有一个用C#编写的带有.NET 2.0框架的Windows服务,该框架使用FileSystemWatcher来监视某些目录的变化。其中一些目录可能位于可移动介质上,例如USB驱动器。当新驱动器插入系统时,我会通过WMI查询获得通知,并可以设置新的FileSystemWatcher。一切都运作良好。
困难在于我希望用户能够使用Windows“安全删除硬件”应用程序弹出驱动器,但Windows报告驱动器正忙,因为我通过FileSystemWatcher监视它,并告诉用户驱动器无法移除。
我的问题是,我的Windows服务如何知道用户何时请求弹出,以便我可以删除文件系统监视器并允许请求成功?
答案 0 :(得分:2)
您需要注册以通过RegisterDeviceNotification Windows API接收设备删除查询广播事件(DBT_DEVICEQUERYREMOVE),如here所述。
据我所知,没有.NET Framework类包含此功能,因此您需要使用p / Invoke进行长时间的操作。