4

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

非常感谢你!

4

1 回答 1

1

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

于 2012-12-14T14:36:22.907 回答