在Windows服务中检测可移动媒体弹出请求

时间:2011-01-24 15:01:12

标签: .net windows-services removable-drive

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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