向 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 资源管理器发送信号以使其刷新系统托盘图标吗?

从写入器向读取器发出信号时正确使用 ReentrantReadWriteLock?

在设备管理器中处理器出现黄色感叹号是啥意思啊

存储管理器--SDRAM