向 PnP 管理器发出设备已消失的信号
Posted
技术标签:
【中文标题】向 PnP 管理器发出设备已消失的信号【英文标题】:Signal the PnP-Manager the device is gone 【发布时间】:2014-06-20 22:31:36 【问题描述】:我目前正在为 Nintendo Wii Remote 开发 KMDF HID 微型驱动器。我的 HID 微型驱动程序替换了 HIDClass 驱动程序的 HidBth 微型驱动程序(我正在使用 KMDF HID 微型驱动程序示例,它实际上是一个过滤器驱动程序并使用 这个“kmdfhidminidriver”转发所有请求)。
所以我的问题是,当我 关闭 Wii 遥控器(按下电源按钮或取出电池)时,PnP-Manager 不会 识别设备不见了。 Windows 仍然在设备管理器中显示设备并认为一切正常, 跑步。设备消失的唯一提示是,L2CAP 通道是 关闭,我得到了使用指标代码调用的 L2CAP-Callback “远程断开”。
我的问题是,我如何向 PnP-Manager 发出设备已断开连接的信号?一世 尝试使用 "WdfDeviceSetDeviceState" 并将 "Removed" 设置为 true。但随后 设备管理器显示驱动程序错误(代码 24)。我想有一个解决方案, 设备从设备管理器中删除而没有任何错误的位置,例如 拔下 USB 设备。
附加信息:我正在使用 WDK 8 和 WDF 1.11;驱动程序目标系统是 赢得 7 和 8。
【问题讨论】:
【参考方案1】:好的,我必须使用“HidNotifyPresence”。它的原型在“hidport.h”中,但遗憾的是尚未记录。
它需要两个参数。第一个是设备对象,可能是 FDO。第二个是布尔值。如果为 true,设备将被重新枚举,否则设备将被删除。
由于我的驱动程序是过滤器驱动程序,我需要提供自己的 PassThrough (shim) 微型端口驱动程序,它将 FDO 和“HidNotifyPresence”地址传递给过滤器驱动程序。
【讨论】:
以上是关于向 PnP 管理器发出设备已消失的信号的主要内容,如果未能解决你的问题,请参考以下文章
联想thinkpad笔记本 蓝屏后设备管理器里面独立显卡突然消失了
向 Microsoft 团队发出警报管理器/prometheus 警报
您可以向 Windows 资源管理器发送信号以使其刷新系统托盘图标吗?