使用wdm开发了一个虚拟USB总线驱动,驱动安装后会虚拟出指定的子设备。
不过由于是手动安装的,所以如果不停地进行安装,驱动会安装多次,这样虚拟出来的设备就变成了,-2,3等这样的设备名。如果是手动操作,一切有眼睛的指导,肯定可以确保只安装一次。
但实际我们是通过批处理实现的,所以如果应用程序不停的调这个批处理,设备管理器会爆炸。
所以我们的操作是这样的,先进行驱动更新,如果更新失败,可以确定设备不存在,那么如果设备不存在,我们就再安装。如果存在,更新了也就更新了,由于是同一个驱动,实际PNP管理器好像就无视了这个操作。
具体的代码如下:
CD /d %~dp0
devcon.exe disable "USB\VID_8087&PID_0A2A&REV_0001"
devcon.exe disable "USB\VID_0A12&PID_0001&REV_8891"
devcon.exe enable "USB\VID_0A12&PID_0001&REV_8891"
devcon.exe update vaudio.inf "*VaudioVA"
if %errorlevel% EQU 2 (devcon.exe install vaudio.inf "*MyVitualAudio")