Windows 向PnP管理器发送设备不存在的信号

Windows 向PnP管理器发送设备不存在的信号,windows,driver,hid,device-manager,kmdf,Windows,Driver,Hid,Device Manager,Kmdf,我目前正在为任天堂Wii遥控器开发KMDF HID微型驱动程序。我的 HID minidriver替换我正在使用的HIDClass驱动程序的HidBth minidriver KMDF HID迷你驱动程序示例,它实际上是一个过滤器驱动程序,并使用 此KMDFIDMINIdriver用于转发所有请求 所以我的问题是,当我按下电源按钮或取下电池关闭Wii遥控器电源时,PnP管理器不会启动 确认设备不见了。Windows仍然在设备管理器中显示该设备,并认为一切都很好 跑步唯一的提示是L2CAP通道已关

我目前正在为任天堂Wii遥控器开发KMDF HID微型驱动程序。我的 HID minidriver替换我正在使用的HIDClass驱动程序的HidBth minidriver KMDF HID迷你驱动程序示例,它实际上是一个过滤器驱动程序,并使用 此KMDFIDMINIdriver用于转发所有请求

所以我的问题是,当我按下电源按钮或取下电池关闭Wii遥控器电源时,PnP管理器不会启动 确认设备不见了。Windows仍然在设备管理器中显示该设备,并认为一切都很好 跑步唯一的提示是L2CAP通道已关闭,设备已关闭 关闭,我得到了L2CAP回调,调用了指示符代码 远程断开连接

我的问题是,如何向PnP管理器发送设备已断开连接的信号?我 尝试使用WdfDeviceSetDeviceState并将Removed设置为true。但是后来 设备管理器显示驱动程序错误代码24。我想要一个解决方案, 在没有任何错误的情况下从设备管理器中删除设备,如 拔下USB设备的插头

附加信息:我正在使用WDK 8和WDF 1.11;驾驶员目标系统是
赢7分和8分。

好的,我必须使用HidNotifyPresence。它是hidport.h中的原型,但不幸的是还没有文档记录

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

因为我的驱动程序是一个过滤器驱动程序,所以我需要提供自己的PassThrough shim微型端口驱动程序,它将FDO和HidNotifyPresence地址传递给过滤器驱动程序