1

我目前正在为Nintendo Wii Remote开发KMDF HID 微型驱动程序。我的 HID 微型驱动程序替换了 HIDClass 驱动程序的 HidBth 微型驱动程序(我使用的是 KMDF HID 微型驱动程序示例,它实际上是一个筛选器驱动程序并使用此“kmdfhidminidriver”转发所有请求)。

所以我的问题是,当我关机时 Wii 遥控器(按下电源按钮或取出电池)时,PnP-Manager 将无法识别设备已消失。Windows 仍然在设备管理器中显示该设备,并认为一切正常且正在运行。设备消失的唯一提示是,L2CAP-Channel 已关闭,我得到了L2CAP-Callback,并使用指示符代码 “RemoteDisconnect”调用。

我的问题是,我如何向 PnP 管理器发出设备已断开连接的信号?我尝试使用“WdfDeviceSetDeviceState”并将“Removed”设置为 true。但随后设备管理器显示驱动程序错误(代码 24)。我想要一个解决方案,将设备从设备管理器中删除而不会出现任何错误,例如拔下 USB 设备。

附加信息:我正在使用 WDK 8 和 WDF 1.11;驱动程序目标系统是 Win 7 和 8。

4

1 回答 1

0

好的,我必须使用“HidNotifyPresence”。它的原型在“hidport.h”中,但遗憾的是尚未记录。

它需要两个参数。第一个是设备对象,可能是 FDO。第二个是布尔值。如果为 true,则将重新枚举设备,否则将删除设备。

由于我的驱动程序是一个过滤器驱动程序,我需要提供我自己的 PassThrough (shim) 微型端口驱动程序,它将 FDO 和“HidNotifyPresence”地址传递给过滤器驱动程序。

于 2014-06-23T22:59:13.733 回答