从C#中的设备句柄获取驱动器号

时间:2012-12-14 11:17:29

标签: c# windows events

我正在使用一个小工具来记录USB设备中的活动。 我的工具用作捕获所有设备事件的Windows服务,基本上我在捕获DBT_DEVICEARRIVAL事件后立即开始监视USB设备。在此之后,我需要在获得DBT_DEVICEQUERYREMOVE后立即停止监视器(否则我的服务将拒绝设备被安全弹出)。问题是该工具应该能够监控多个设备,因此我需要能够确定用户试图弹出哪个设备。 我发现DBT_DEVICEQUERYREMOVE事件带有DEV_BROADCAST_HANDLE结构。我试图从这个结构中提取一些有用的信息,这些信息可以让我识别正在弹出的设备。我发现设备有一个句柄,我试图使用系统函数GetFinalPathNameByHandle提取驱动器号但是没有正常工作(返回空值)。 不知道怎么办?

非常感谢!

1 个答案:

答案 0 :(得分:1)

由于答案似乎没有我想象的那么明显:为您感兴趣的每个设备调用RegisterDeviceNotification,通过其句柄识别设备。由于您创建了注册,因此您将知道哪个驱动器号映射到哪个通知句柄。