【问题标题】:Get the drive letter from device handle in C# [duplicate]从 C# 中的设备句柄获取驱动器号 [重复]
【发布时间】:2012-12-02 09:24:40
【问题描述】:

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

非常感谢!

【问题讨论】:

  • @MSalters 我的问题是一个具体问题,不包含在您评论中所述的问题中。有什么想法吗?

标签: c# windows events


【解决方案1】:

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

【讨论】:

  • 我猜想通过pinvoke使用该功能?
  • @Default:我认为没有其他办法。 Windows 的原生 API 仍然是基于 C 的。
猜你喜欢
  • 2014-05-26
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多