我正在为 Nintendo Wii Remote 开发 KMDF HID微型驱动程序。我的 HID minidriver替换了HIDCth驱动程序的HidBth微型驱动程序(我正在使用 KMDF HID minidriver示例,它实际上是一个过滤器驱动程序并使用 这个“kmdfhidminidriver”转发所有请求。)
所以我的问题是,当我关闭电源 Wii遥控器(按下电源按钮或取出电池)时,PnP-Manager不会 认识到设备已经消失。 Windows仍然在设备管理器中显示设备并认为一切正常 运行。设备消失的唯一提示是,L2CAP-Channel是 关闭,我用指标代码调用 L2CAP-Callback 的 “RemoteDisconnect”即可。
我的问题是,如何通知PnP-Manager设备已断开连接?一世 尝试使用“WdfDeviceSetDeviceState”,“已移除”设置为true。但那么 设备管理器显示驱动程序错误(代码24)。我想有一个解决方案, 将设备从设备管理器中删除而没有任何错误,例如 拔掉USB设备。
其他信息:我正在使用WDK 8和WDF 1.11;驱动程序目标系统 赢7和8。
答案 0 :(得分:0)
好的,我必须使用" HidNotifyPresence"。它是" hidport.h"的原型,但遗憾的是还没有记录。
需要两个参数。第一个是设备对象,可能是FDO。第二个是BOOLEAN。如果为true,则将重新枚举设备,否则设备将被移除。
由于我的驱动程序是一个过滤器驱动程序,我需要提供我自己的PassThrough(shim)微型端口驱动程序,它将通过FDO和" HidNotifyPresence"地址到过滤器驱动程序。