如何在Windows中取消枚举PNP设备?

如何在Windows中取消枚举PNP设备?,windows,driver,wdk,device-manager,plug-and-play,Windows,Driver,Wdk,Device Manager,Plug And Play,我正在做一些驱动程序编程,我有一个伪设备的PNP驱动程序,它有自己的自定义设备设置类。驱动程序是一个伪总线枚举器并创建伪设备,这与toaster示例不同 无论如何,我现在在HKLM\SYSTEM\CurrentControlSet\Enum中有很多旧的、不需要的条目。是否有一些很好的实用程序用于删除旧设备枚举?我似乎无法用devcon或pnputil完成这项工作。我可以手动删除它,但考虑到只有系统对枚举中的大部分内容拥有完全控制权限,devcon remove不起作用的原因是devcon硬编码D

我正在做一些驱动程序编程,我有一个伪设备的PNP驱动程序,它有自己的自定义设备设置类。驱动程序是一个伪总线枚举器并创建伪设备,这与toaster示例不同


无论如何,我现在在
HKLM\SYSTEM\CurrentControlSet\Enum
中有很多旧的、不需要的条目。是否有一些很好的实用程序用于删除旧设备枚举?我似乎无法用
devcon
pnputil
完成这项工作。我可以手动删除它,但考虑到只有
系统
枚举
中的大部分内容拥有完全控制权限,
devcon remove
不起作用的原因是devcon硬编码
DIGCF_PRESENT
标志,并且您以前不需要的设备当前不存在,您可以编译删除该标志的自己的版本


提示:开始查看
cmdRemove
函数。

通常的方法是在某种类型的虚拟机上进行测试,您可以随时擦除和重新加载虚拟机。当您需要与真正的硬件对话时,您会做什么?同样的事情,但使用物理机。:-)哦,如果你说的是USB设备,通常应该可以将它连接到你的虚拟机上,我想你可以在这个设置中进行一些测试,但当然你还需要在至少一台物理机器上进行测试。关键是机器可以根据需要经常擦拭和重新装载。(任何删除旧设备枚举的操作,或者即使忽略它们,都有可能干扰未来的测试。唯一可靠的解决方案是重新安装。)(当然,这并不意味着没有现有的解决方案,而且根据您的情况,它对于您的目的可能足够可靠。)哦,也许我应该提及
sysprep
作为一个选项。这样做的主要问题是,您只能对任何给定的Windows实例进行固定次数的sysprep-4或5次,IIRC,因此它只能推迟问题的发生。