The original INF for the device (without MIDI interface) is as follows:
;================================================================
[Version]
Signature=$CHICAGO$
Class=Media
ClassGuid={4D36E96C-E325-11CE-BFC1-08002BE10318}
Provider=%vendor%
DriverVer=04/15/2009,2.1.6.0
CatalogFile=vendor.cat
[Manufacturer]
%vendor%=DeviceList,NTx86
[DestinationDirs]
DefaultDestDir=10,system32\drivers
[SourceDisksFiles]
VendorUSB.sys=1
[SourceDisksFiles.NTx86]
VendorUSB.sys=1
[SourceDisksNames]
1=%INSTDISK%,
[ControlFlags]
ExcludeFromSelect=%Dev02a%,%Dev02b%,%Dev02c%,\
%Dev03a%,%Dev03b%,%Dev03c%,\
%Dev04a%,%Dev04b%,%Dev04c%,\
%Dev05a%,%Dev05b%,%Dev05c%,\
%Dev06a%,%Dev06b%,%Dev06c%,\
%Dev07a%,%Dev07b%,%Dev07c%,\
%Dev08a%,%Dev08b%,%Dev08c%,\
%Dev09a%,%Dev09b%,%Dev09c%,\
%Dev0Aa%,%Dev0Ab%,%Dev0Ac%,\
%Dev0Ba%,%Dev0Bb%,%Dev0Bc%,\
%Dev0Ca%,%Dev0Cb%,%Dev0Cc%,\
%Dev0Da%,%Dev0Db%,%Dev0Dc%,\
%Dev0Ea%,%Dev0Eb%,%Dev0Ec%,\
%Dev0Fa%,%Dev0Fb%,%Dev0Fc%,\
%Dev10a%,%Dev10b%,%Dev10c%,\
%Dev11a%,%Dev11b%,%Dev11c%,\
%Dev12a%,%Dev12b%,%Dev12c%,
[DeviceList]
%DeviceDescription_32%=Install_32,%Dev02%
%DeviceDescription_32%=Install_32,%Dev03%
%DeviceDescription_32%=Install_32,%Dev04%
%DeviceDescription_32%=Install_32,%Dev05%
%DeviceDescription_32%=Install_32,%Dev06%
%DeviceDescription_32%=Install_32,%Dev07%
%DeviceDescription_32%=Install_32,%Dev08%
%DeviceDescription_32%=Install_32,%Dev09%
%DeviceDescription_32%=Install_32,%Dev0A%
%DeviceDescription_32%=Install_32,%Dev0B%
%DeviceDescription_32%=Install_32,%Dev0C%
%DeviceDescription_32%=Install_32,%Dev0D%
%DeviceDescription_32%=Install_32,%Dev0E%
%DeviceDescription_32%=Install_32,%Dev0F%
%DeviceDescription_32%=Install_32,%Dev10%
%DeviceDescription_32%=Install_32,%Dev11%
%DeviceDescription_32%=Install_32,%Dev12%
[DeviceList.NTx86]
%DeviceDescription_32%=Install_32,%Dev02%
%DeviceDescription_32%=Install_32,%Dev03%
%DeviceDescription_32%=Install_32,%Dev04%
%DeviceDescription_32%=Install_32,%Dev05%
%DeviceDescription_32%=Install_32,%Dev06%
%DeviceDescription_32%=Install_32,%Dev07%
%DeviceDescription_32%=Install_32,%Dev08%
%DeviceDescription_32%=Install_32,%Dev09%
%DeviceDescription_32%=Install_32,%Dev0A%
%DeviceDescription_32%=Install_32,%Dev0B%
%DeviceDescription_32%=Install_32,%Dev0C%
%DeviceDescription_32%=Install_32,%Dev0D%
%DeviceDescription_32%=Install_32,%Dev0E%
%DeviceDescription_32%=Install_32,%Dev0F%
%DeviceDescription_32%=Install_32,%Dev10%
%DeviceDescription_32%=Install_32,%Dev11%
%DeviceDescription_32%=Install_32,%Dev12%
;---------------------------------------------------------------------------
; Windows 2000/XP
;---------------------------------------------------------------------------
[Install_32.NTx86]
CopyFiles=CopyFiles_32
[CopyFiles_32]
VendorUSB.sys,2
[Install_32.NTx86.Services]
AddService=VendorUSB,2,ServiceInstall_32
[ServiceInstall_32]
ServiceType=%SERVICE_KERNEL_DRIVER%
StartType=%SERVICE_DEMAND_START%
ErrorControl=%SERVICE_ERROR_NORMAL%
ServiceBinary=%10%\system32\drivers\VendorUSB.sys
[Install_32.NTx86.Hw]
AddReg=HwAddReg_32
[HwAddReg_32]
;---------------------------------------------------------------------------
; Windows 98
;---------------------------------------------------------------------------
[Install_32]
AddReg=AddReg_32
CopyFiles=CopyFiles_32
DriverVer=04/15/2009,2.1.6.0
[AddReg_32]
HKR,DevLoader,*ntkern
HKR,NTMPDriver,VendorUSB.sys
[Install_32.Hw]
AddReg=HwAddReg_32
;---------------------------------------------------------------------------
; Strings
;---------------------------------------------------------------------------
[Strings]
vendor=“Vendor Ltd”
INSTDISK=“Installation CD”
DeviceDescription_32=“Vendor specific 32-bit USB Driver”
Dev02=“USB\VID_xxxx&PID_0002”
Dev03=“USB\VID_xxxx&PID_0003”
Dev04=“USB\VID_xxxx&PID_0004”
Dev05=“USB\VID_xxxx&PID_0005”
Dev06=“USB\VID_xxxx&PID_0006”
Dev07=“USB\VID_xxxx&PID_0007”
Dev08=“USB\VID_xxxx&PID_0008”
Dev09=“USB\VID_xxxx&PID_0009”
Dev0A=“USB\VID_xxxx&PID_000A”
Dev0B=“USB\VID_xxxx&PID_000B”
Dev0C=“USB\VID_xxxx&PID_000C”
Dev0D=“USB\VID_xxxx&PID_000D”
Dev0E=“USB\VID_xxxx&PID_000E”
Dev0F=“USB\VID_xxxx&PID_000F”
Dev10=“USB\VID_xxxx&PID_0010”
Dev11=“USB\VID_xxxx&PID_0011”
Dev12=“USB\VID_xxxx&PID_0012”
Dev02a=%Dev02%“&MI_00”
Dev03a=%Dev03%“&MI_00”
Dev04a=%Dev04%“&MI_00”
Dev05a=%Dev05%“&MI_00”
Dev06a=%Dev06%“&MI_00”
Dev07a=%Dev07%“&MI_00”
Dev08a=%Dev08%“&MI_00”
Dev09a=%Dev09%“&MI_00”
Dev0Aa=%Dev0A%“&MI_00”
Dev0Ba=%Dev0B%“&MI_00”
Dev0Ca=%Dev0C%“&MI_00”
Dev0Da=%Dev0D%“&MI_00”
Dev0Ea=%Dev0E%“&MI_00”
Dev0Fa=%Dev0F%“&MI_00”
Dev10a=%Dev10%“&MI_00”
Dev11a=%Dev11%“&MI_00”
Dev12a=%Dev12%“&MI_00”
Dev02b=%Dev02%“&MI_01”
Dev03b=%Dev03%“&MI_01”
Dev04b=%Dev04%“&MI_01”
Dev05b=%Dev05%“&MI_01”
Dev06b=%Dev06%“&MI_01”
Dev07b=%Dev07%“&MI_01”
Dev08b=%Dev08%“&MI_01”
Dev09b=%Dev09%“&MI_01”
Dev0Ab=%Dev0A%“&MI_01”
Dev0Bb=%Dev0B%“&MI_01”
Dev0Cb=%Dev0C%“&MI_01”
Dev0Db=%Dev0D%“&MI_01”
Dev0Eb=%Dev0E%“&MI_01”
Dev0Fb=%Dev0F%“&MI_01”
Dev10b=%Dev10%“&MI_01”
Dev11b=%Dev11%“&MI_01”
Dev12b=%Dev12%“&MI_01”
Dev02c=%Dev02%“&MI_02”
Dev03c=%Dev03%“&MI_02”
Dev04c=%Dev04%“&MI_02”
Dev05c=%Dev05%“&MI_02”
Dev06c=%Dev06%“&MI_02”
Dev07c=%Dev07%“&MI_02”
Dev08c=%Dev08%“&MI_02”
Dev09c=%Dev09%“&MI_02”
Dev0Ac=%Dev0A%“&MI_02”
Dev0Bc=%Dev0B%“&MI_02”
Dev0Cc=%Dev0C%“&MI_02”
Dev0Dc=%Dev0D%“&MI_02”
Dev0Ec=%Dev0E%“&MI_02”
Dev0Fc=%Dev0F%“&MI_02”
Dev10c=%Dev10%“&MI_02”
Dev11c=%Dev11%“&MI_02”
Dev12c=%Dev12%“&MI_02”
SERVICE_KERNEL_DRIVER=1
SERVICE_DEMAND_START=3
SERVICE_ERROR_NORMAL=1
My modified INF (for device with MIDI interface) is this:
;================================================================
[Version]
Signature=$CHICAGO$
Class=Media
ClassGuid={4D36E96C-E325-11CE-BFC1-08002BE10318}
Provider=%vendor%
DriverVer=04/15/2009,2.1.6.0
CatalogFile=vendor.cat
[Manufacturer]
%vendor%=DeviceList,NTx86
[DestinationDirs]
DefaultDestDir=10,system32\drivers
[SourceDisksFiles]
VendorUSB.sys=1
[SourceDisksFiles.NTx86]
VendorUSB.sys=1
[SourceDisksNames]
1=%INSTDISK%,
[ControlFlags]
ExcludeFromSelect=%Dev02b%,%Dev02c%,\
%Dev03b%,%Dev03c%,\
%Dev04b%,%Dev04c%,\
%Dev05b%,%Dev05c%,\
%Dev06b%,%Dev06c%,\
%Dev07b%,%Dev07c%,\
%Dev08b%,%Dev08c%,\
%Dev09b%,%Dev09c%,\
%Dev0Ab%,%Dev0Ac%,\
%Dev0Bb%,%Dev0Bc%,\
%Dev0Cb%,%Dev0Cc%,\
%Dev0Db%,%Dev0Dc%,\
%Dev0Eb%,%Dev0Ec%,\
%Dev0Fb%,%Dev0Fc%,\
%Dev10b%,%Dev10c%,\
%Dev11b%,%Dev11c%,\
%Dev12b%,%Dev12c%,
[DeviceList]
%DeviceDescription_32%=Install_32,%Dev02%
%DeviceDescription_32%=Install_32,%Dev03%
%DeviceDescription_32%=Install_32,%Dev04%
%DeviceDescription_32%=Install_32,%Dev05%
%DeviceDescription_32%=Install_32,%Dev06%
%DeviceDescription_32%=Install_32,%Dev07%
%DeviceDescription_32%=Install_32,%Dev08%
%DeviceDescription_32%=Install_32,%Dev09%
%DeviceDescription_32%=Install_32,%Dev0A%
%DeviceDescription_32%=Install_32,%Dev0B%
%DeviceDescription_32%=Install_32,%Dev0C%
%DeviceDescription_32%=Install_32,%Dev0D%
%DeviceDescription_32%=Install_32,%Dev0E%
%DeviceDescription_32%=Install_32,%Dev0F%
%DeviceDescription_32%=Install_32,%Dev10%
%DeviceDescription_32%=Install_32,%Dev11%
%DeviceDescription_32%=Install_32,%Dev12%
%DeviceDescription_32%=Install_32,%Dev02a%
%DeviceDescription_32%=Install_32,%Dev03a%
%DeviceDescription_32%=Install_32,%Dev04a%
%DeviceDescription_32%=Install_32,%Dev05a%
%DeviceDescription_32%=Install_32,%Dev06a%
%DeviceDescription_32%=Install_32,%Dev07a%
%DeviceDescription_32%=Install_32,%Dev08a%
%DeviceDescription_32%=Install_32,%Dev09a%
%DeviceDescription_32%=Install_32,%Dev0Aa%
%DeviceDescription_32%=Install_32,%Dev0Ba%
%DeviceDescription_32%=Install_32,%Dev0Ca%
%DeviceDescription_32%=Install_32,%Dev0Da%
%DeviceDescription_32%=Install_32,%Dev0Ea%
%DeviceDescription_32%=Install_32,%Dev0Fa%
%DeviceDescription_32%=Install_32,%Dev10a%
%DeviceDescription_32%=Install_32,%Dev11a%
%DeviceDescription_32%=Install_32,%Dev12a%
[DeviceList.NTx86]
%DeviceDescription_32%=Install_32,%Dev02%
%DeviceDescription_32%=Install_32,%Dev03%
%DeviceDescription_32%=Install_32,%Dev04%
%DeviceDescription_32%=Install_32,%Dev05%
%DeviceDescription_32%=Install_32,%Dev06%
%DeviceDescription_32%=Install_32,%Dev07%
%DeviceDescription_32%=Install_32,%Dev08%
%DeviceDescription_32%=Install_32,%Dev09%
%DeviceDescription_32%=Install_32,%Dev0A%
%DeviceDescription_32%=Install_32,%Dev0B%
%DeviceDescription_32%=Install_32,%Dev0C%
%DeviceDescription_32%=Install_32,%Dev0D%
%DeviceDescription_32%=Install_32,%Dev0E%
%DeviceDescription_32%=Install_32,%Dev0F%
%DeviceDescription_32%=Install_32,%Dev10%
%DeviceDescription_32%=Install_32,%Dev11%
%DeviceDescription_32%=Install_32,%Dev12%
%DeviceDescription_32%=Install_32,%Dev02a%
%DeviceDescription_32%=Install_32,%Dev03a%
%DeviceDescription_32%=Install_32,%Dev04a%
%DeviceDescription_32%=Install_32,%Dev05a%
%DeviceDescription_32%=Install_32,%Dev06a%
%DeviceDescription_32%=Install_32,%Dev07a%
%DeviceDescription_32%=Install_32,%Dev08a%
%DeviceDescription_32%=Install_32,%Dev09a%
%DeviceDescription_32%=Install_32,%Dev0Aa%
%DeviceDescription_32%=Install_32,%Dev0Ba%
%DeviceDescription_32%=Install_32,%Dev0Ca%
%DeviceDescription_32%=Install_32,%Dev0Da%
%DeviceDescription_32%=Install_32,%Dev0Ea%
%DeviceDescription_32%=Install_32,%Dev0Fa%
%DeviceDescription_32%=Install_32,%Dev10a%
%DeviceDescription_32%=Install_32,%Dev11a%
%DeviceDescription_32%=Install_32,%Dev12a%
;---------------------------------------------------------------------------
; Windows 2000/XP
;---------------------------------------------------------------------------
[Install_32.NTx86]
CopyFiles=CopyFiles_32
[CopyFiles_32]
VendorUSB.sys,2
[Install_32.NTx86.Services]
AddService=VendorUSB,2,ServiceInstall_32
[ServiceInstall_32]
ServiceType=%SERVICE_KERNEL_DRIVER%
StartType=%SERVICE_DEMAND_START%
ErrorControl=%SERVICE_ERROR_NORMAL%
ServiceBinary=%10%\system32\drivers\VendorUSB.sys
[Install_32.NTx86.Hw]
AddReg=HwAddReg_32
[HwAddReg_32]
;---------------------------------------------------------------------------
; Windows 98
;---------------------------------------------------------------------------
[Install_32]
AddReg=AddReg_32
CopyFiles=CopyFiles_32
DriverVer=04/15/2009,2.1.6.0
[AddReg_32]
HKR,DevLoader,*ntkern
HKR,NTMPDriver,VendorUSB.sys
[Install_32.Hw]
AddReg=HwAddReg_32
;---------------------------------------------------------------------------
; Strings
;---------------------------------------------------------------------------
[Strings]
vendor=“Vendor Ltd”
INSTDISK=“Installation CD”
DeviceDescription_32=“Vendor specific 32-bit USB Driver”
Dev02=“USB\VID_xxxx&PID_0002”
Dev03=“USB\VID_xxxx&PID_0003”
Dev04=“USB\VID_xxxx&PID_0004”
Dev05=“USB\VID_xxxx&PID_0005”
Dev06=“USB\VID_xxxx&PID_0006”
Dev07=“USB\VID_xxxx&PID_0007”
Dev08=“USB\VID_xxxx&PID_0008”
Dev09=“USB\VID_xxxx&PID_0009”
Dev0A=“USB\VID_xxxx&PID_000A”
Dev0B=“USB\VID_xxxx&PID_000B”
Dev0C=“USB\VID_xxxx&PID_000C”
Dev0D=“USB\VID_xxxx&PID_000D”
Dev0E=“USB\VID_xxxx&PID_000E”
Dev0F=“USB\VID_xxxx&PID_000F”
Dev10=“USB\VID_xxxx&PID_0010”
Dev11=“USB\VID_xxxx&PID_0011”
Dev12=“USB\VID_xxxx&PID_0012”
Dev02a=%Dev02%“&MI_00”
Dev03a=%Dev03%“&MI_00”
Dev04a=%Dev04%“&MI_00”
Dev05a=%Dev05%“&MI_00”
Dev06a=%Dev06%“&MI_00”
Dev07a=%Dev07%“&MI_00”
Dev08a=%Dev08%“&MI_00”
Dev09a=%Dev09%“&MI_00”
Dev0Aa=%Dev0A%“&MI_00”
Dev0Ba=%Dev0B%“&MI_00”
Dev0Ca=%Dev0C%“&MI_00”
Dev0Da=%Dev0D%“&MI_00”
Dev0Ea=%Dev0E%“&MI_00”
Dev0Fa=%Dev0F%“&MI_00”
Dev10a=%Dev10%“&MI_00”
Dev11a=%Dev11%“&MI_00”
Dev12a=%Dev12%“&MI_00”
Dev02b=%Dev02%“&MI_01”
Dev03b=%Dev03%“&MI_01”
Dev04b=%Dev04%“&MI_01”
Dev05b=%Dev05%“&MI_01”
Dev06b=%Dev06%“&MI_01”
Dev07b=%Dev07%“&MI_01”
Dev08b=%Dev08%“&MI_01”
Dev09b=%Dev09%“&MI_01”
Dev0Ab=%Dev0A%“&MI_01”
Dev0Bb=%Dev0B%“&MI_01”
Dev0Cb=%Dev0C%“&MI_01”
Dev0Db=%Dev0D%“&MI_01”
Dev0Eb=%Dev0E%“&MI_01”
Dev0Fb=%Dev0F%“&MI_01”
Dev10b=%Dev10%“&MI_01”
Dev11b=%Dev11%“&MI_01”
Dev12b=%Dev12%“&MI_01”
Dev02c=%Dev02%“&MI_02”
Dev03c=%Dev03%“&MI_02”
Dev04c=%Dev04%“&MI_02”
Dev05c=%Dev05%“&MI_02”
Dev06c=%Dev06%“&MI_02”
Dev07c=%Dev07%“&MI_02”
Dev08c=%Dev08%“&MI_02”
Dev09c=%Dev09%“&MI_02”
Dev0Ac=%Dev0A%“&MI_02”
Dev0Bc=%Dev0B%“&MI_02”
Dev0Cc=%Dev0C%“&MI_02”
Dev0Dc=%Dev0D%“&MI_02”
Dev0Ec=%Dev0E%“&MI_02”
Dev0Fc=%Dev0F%“&MI_02”
Dev10c=%Dev10%“&MI_02”
Dev11c=%Dev11%“&MI_02”
Dev12c=%Dev12%“&MI_02”
SERVICE_KERNEL_DRIVER=1
SERVICE_DEMAND_START=3
SERVICE_ERROR_NORMAL=1
I just added the HW ids with MI_00 postfix in the DeviceList section, together with the original ones, since I need the INF to work for devices with or without MIDI interface (their base interface (index zero) is the same).
The actual HW id of the device is USB\VID_xxxx&PID_000B&REV_0003&MI_00 + USB\VID_xxxx&PID_000B&MI_00 with the MIDI interface enabled and USB\VID_xxxx&PID_000B without MIDI. Without MIDI interface exposed the driver installs fine (using the original INF), but fails with MIDI exposed saying that HW id USB\VID_xxxx&PID_000B&REV_0003&MI_00 cannot be matched to a driver…
/Rob