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

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

要回复问题请先登录注册