Hi,
I am writing a UMDF driver to act as a replacement for a third-party
product. The driver sits on top of WinUSB to connect to the device and the
INF file installs both the WinUSB and Wdf coinstallers along with my UMDF
dll in order that the code can function on XP as well as Vista.
I am developing on Windows XP, so the setupapi.log file contains errors
about being unsigned (E360) but ignores them. Setupapi.log reports that all
is OK in terms of installation, but right at the end it reports
PROB_CM_FAILED_START (0xA) followed by a message saying that ‘Device install
of “VID_xxxx&PID_yyyy” finished sucessfully.’
Not sure I would call ‘PROB_CM_FAILED_START’ finished sucessfully, but …
None of the log files: setupapi.log, setupact.log, wdf01005Inst.log,
wudf_update.log, or winusb_update.log show any signs of there being a
problem, so I have no idea as to why the device failed to start.
Searching online produced some sketchy results but imply that a driver in
the device stack failed the IRP_MN_START_DEVICE request, but say that
identifying which one it is not easy.
I am building using the Vista/Longhorn build-environment for checked x86
fvrom WinDDK 6000.
I took the MS UMDF skeleton driver, modified it’s INF file to match my
device Vid/Pid and built it.
It goes through the same process but then also fails in the same way.
Below are the setupapi.log and INF file for my driver installation.
–>
setupapi.log
[SetupAPI Log]
OS Version = 5.1.2600 Service Pack 2
Platform ID = 2 (NT)
Service Pack = 2.0
Suite = 0x0100
Product Type = 1
Architecture = x86
[2007/11/27 15:34:13 2996.543 Driver Install]
#-019 Searching for hardware ID(s):
usb\vid_XXXX&pid_ZZZZ&rev_0000,usb\vid_XXXX&pid_ZZZZ
#-018 Searching for compatible ID(s):
usb\class_ff&subclass_00&prot_00,usb\class_ff&subclass_00,usb\class_ff
#-198 Command line processed:
c:\6d622d6b73db0da752bf00811053\update\update.exe /quiet /ER
/log:“D:\WINDOWS\temp\winusb_update.log”
#I063 Selected driver installs from section [XiLoad] in
“d:\windows\inf\oem0.inf”.
#I320 Class GUID of device remains: {36FC9E60-C465-11CF-8056-444553540000}.
#I060 Set selected driver.
[2007/11/27 15:33:32 3648.2]
#-199 Executing “D:\WINDOWS\system32\rundll32.exe” with command line:
rundll32.exe newdev.dll,ClientSideInstall
\.\pipe\PNP_Device_Install_Pipe_0.{B92F0016-FC1C-4FD6-92D2-8F5BA8C451D0}
#I060 Set selected driver.
#-019 Searching for hardware ID(s):
usb\vid_XXXX&pid_YYYY&rev_0000,usb\vid_XXXX&pid_YYYY
#-018 Searching for compatible ID(s):
usb\class_ff&subclass_00&prot_00,usb\class_ff&subclass_00,usb\class_ff
#-166 Device install function: DIF_SELECTBESTCOMPATDRV.
#W059 Selecting best compatible driver failed. Error 0xe0000228: There are
no compatible drivers for this device.
#W157 Default installer failed. Error 0xe0000228: There are no compatible
drivers for this device.
#I060 Set selected driver.
#-019 Searching for hardware ID(s):
usb\vid_XXXX&pid_YYYY&rev_0000,usb\vid_XXXX&pid_YYYY
#-018 Searching for compatible ID(s):
usb\class_ff&subclass_00&prot_00,usb\class_ff&subclass_00,usb\class_ff
#-019 Searching for hardware ID(s):
usb\vid_XXXX&pid_YYYY&rev_0000,usb\vid_XXXX&pid_YYYY
#-018 Searching for compatible ID(s):
usb\class_ff&subclass_00&prot_00,usb\class_ff&subclass_00,usb\class_ff
#-019 Searching for hardware ID(s):
usb\vid_XXXX&pid_YYYY&rev_0000,usb\vid_XXXX&pid_YYYY
#-018 Searching for compatible ID(s):
usb\class_ff&subclass_00&prot_00,usb\class_ff&subclass_00,usb\class_ff
#-019 Searching for hardware ID(s):
usb\vid_XXXX&pid_YYYY&rev_0000,usb\vid_XXXX&pid_YYYY
#-018 Searching for compatible ID(s):
usb\class_ff&subclass_00&prot_00,usb\class_ff&subclass_00,usb\class_ff
#I022 Found “USB\vid_XXXX&pid_YYYY” in
d:\xitron\projects\umdfxiusb\install\XiUsb.inf; Device: “Xitron Ecrm USB”;
Driver: “Xitron Ecrm USB”; Provider: “Xitron, Inc.”; Mfg: “Xitron, Inc.”;
Section name: “XiUsb_Install”.
#I087 Driver node not trusted, rank changed from 0x00000001 to 0x00008001.
#I023 Actual install section: [XiUsb_Install.NT]. Rank: 0x00008001.
Effective driver date: 11/23/2007.
#-124 Doing copy-only install of “USB\VID_XXXX&PID_YYYY\5&3B2881D3&0&4”.
#E360 An unsigned or incorrectly signed file
“d:\xitron\projects\umdfxiusb\install\xiusb.inf” for driver “Xitron Ecrm
USB” will be installed (Policy=Ignore). Error 0xe000022f: The third-party
INF does not contain digital signature information.
#W187 Install failed, attempting to restore original files.
#E360 An unsigned or incorrectly signed file
“d:\xitron\projects\umdfxiusb\install\xiusb.inf” for driver “Xitron Ecrm
USB” will be installed (Policy=Ignore). Error 0xe000022f: The third-party
INF does not contain digital signature information.
#-024 Copying file “d:\xitron\projects\umdfxiusb\install\XiUsb.dll” to
“D:\WINDOWS\system32\DRIVERS\UMDF\XiUsb.dll”.
#E360 An unsigned or incorrectly signed file
“d:\xitron\projects\umdfxiusb\install\xiusb.inf” for driver “Xitron Ecrm
USB” will be installed (Policy=Ignore). Error 0xe000022f: The third-party
INF does not contain digital signature information.
#-336 Copying file
“d:\xitron\projects\umdfxiusb\install\WudfUpdate_01005.dll” to
“D:\WINDOWS\system32\WudfUpdate_01005.dll” via temporary file
“D:\WINDOWS\system32\SET123.tmp”.
#E360 An unsigned or incorrectly signed file
“d:\xitron\projects\umdfxiusb\install\xiusb.inf” for driver “Xitron Ecrm
USB” will be installed (Policy=Ignore). Error 0xe000022f: The third-party
INF does not contain digital signature information.
#-336 Copying file
“d:\xitron\projects\umdfxiusb\install\WdfCoInstaller01005.dll” to
“D:\WINDOWS\system32\WdfCoInstaller01005.dll” via temporary file
“D:\WINDOWS\system32\SET125.tmp”.
#E360 An unsigned or incorrectly signed file
“d:\xitron\projects\umdfxiusb\install\xiusb.inf” for driver “Xitron Ecrm
USB” will be installed (Policy=Ignore). Error 0xe000022f: The third-party
INF does not contain digital signature information.
#-336 Copying file
“d:\xitron\projects\umdfxiusb\install\WinUSBCoInstaller.dll” to
“D:\WINDOWS\system32\WinUSBCoInstaller.dll” via temporary file
“D:\WINDOWS\system32\SET127.tmp”.
#E360 An unsigned or incorrectly signed file
“d:\xitron\projects\umdfxiusb\install\xiusb.inf” for driver “Xitron Ecrm
USB” will be installed (Policy=Ignore). Error 0xe000022f: The third-party
INF does not contain digital signature information.
#-166 Device install function: DIF_REGISTER_COINSTALLERS.
#I056 Coinstallers registered.
#-166 Device install function: DIF_INSTALLINTERFACES.
#-011 Installing section [XiUsb_Install.NT.Interfaces] from
“d:\xitron\projects\umdfxiusb\install\xiusb.inf”.
#I054 Interfaces installed.
#-166 Device install function: DIF_INSTALLDEVICE.
#I123 Doing full install of “USB\VID_XXXX&PID_YYYY\5&3B2881D3&0&4”.
#E360 An unsigned or incorrectly signed file
“d:\xitron\projects\umdfxiusb\install\xiusb.inf” for driver “Xitron Ecrm
USB” will be installed (Policy=Ignore). Error 0xe000022f: The third-party
INF does not contain digital signature information.
#I163 Device not started: Device has problem: 0x0a: CM_PROB_FAILED_START.
#I121 Device install of “USB\VID_XXXX&PID_YYYY\5&3B2881D3&0&4” finished
successfully.
xiusb.inf
;
; XitronUSB.inf - Install the Xitron USB UMDF for a WinUSB connected device.
;
; Copyright (c) 2007 Xitron, Inc.
;
[Version]
Signature=“$Windows NT$”
Class=%ClassName%
ClassGuid={4DFA4B11-F3CE-4fd9-9C8D-005363A07FAA}
Provider=%ProviderName%
CatalogFile=xiusb.cat
DriverVer=11/23/2007,1.0.0.1
[Manufacturer]
%ProviderName%=XiUsb,NTx86
[XiUsb.NTx86]
“Xitron Agfa USB”=XiUsb_Install, USB\vid_XXXX&pid_YYYY “Xitron Lino
USB”=XiUsb_Install, USB\vid_XXXX&pid_YYYY “Xitron Ecrm USB”=XiUsb_Install,
USB\vid_XXXX&pid_YYYY
[ClassInstall32]
AddReg=XiUsb_UpdateRegistry
[XiUsb_UpdateRegistry]
HKR,%ClassName%
HKR,Icon,“-5”
[SourceDisksFiles]
XiUsb.dll=1
WudfUpdate_01005.dll=1
WdfCoInstaller01005.dll=1
WinUsbCoInstaller.dll=1
[SourceDisksNames]
1 = %MediaDescription%
; =================== UMDF XiUsb Device ==================================
[XiUsb_Install.NT]
CopyFiles=XiUsb_CopyFiles ; Install icon file.
Include=WINUSB.INF ; Import sections from WinUsb.inf
Needs=WINUSB.NT ; Run the CopyFiles & AddReg
directives for WinUsb.inf
[XiUsb_Install.NT.HW]
AddReg=XiUsb_Install_Device_AddReg
[XiUsb_Install.NT.Services]
AddService=WUDFRd,0x000001fa,WUDFRD_ServiceInstall ; flag 0x2 sets this as
the service for the device
AddService=WinUsb,0x000001f8,WinUsb_ServiceInstall ; this service is
installed because its a filter
[XiUsb_Install.NT.CoInstallers]
AddReg=CoInstallers_AddReg
CopyFiles=CoInstallers_CopyFiles
[XiUsb_Install.NT.Wdf]
UmdfDispatcher=WinUsb
UmdfService=XiUsb, XiUsb_Install_Wdf
UmdfServiceOrder=XiUsb
KmdfService=WINUSB, WinUsb_Install_Wdf
[WinUsb_Install_Wdf]
KmdfLibraryVersion=1.5
[XiUsb_Install_Wdf]
UmdfLibraryVersion=1.5.0
DriverCLSID={4DFA4B11-F3CE-4fd9-9C8D-005363A07FAA}
ServiceBinary=%12%\UMDF\XiUsb.dll
[XiUsb_Install_Device_AddReg]
HKR,“LowerFilters”,0x10008,“WinUsb” ; RecordWinUsb as a
lower filter for my device.
[WUDFRD_ServiceInstall]
DisplayName = %WudfRdDisplayName%
ServiceType = 1
StartType = 3
ErrorControl = 1
ServiceBinary = %12%\WUDFRd.sys
LoadOrderGroup = Base
[WinUsb_ServiceInstall]
DisplayName = %WinUsb_SvcDesc%
ServiceType = 1
StartType = 3
ErrorControl = 1
ServiceBinary = %12%\WinUSB.sys
LoadOrderGroup = Base
[CoInstallers_AddReg]
HKR,CoInstallers32,0x00010000,“WudfUpdate_01005.dll”,
“WinUSBCoInstaller.dll”, “WdfCoInstaller01005.dll,WdfCoInstaller”
[CoInstallers_CopyFiles]
WudfUpdate_01005.dll
WdfCoInstaller01005.dll
WinUSBCoInstaller.dll
[DestinationDirs]
XiUsb_CopyFiles=12,UMDF ; copy to
system32/drivers/umdf
CoInstallers_CopyFiles=11 ; copy to system32
[XiUsb_CopyFiles]
XiUsb.dll
; =================== Generic ==================================
[Strings]
ClassName=“XitronUsb”
ProviderName=“Xitron, Inc.”
MediaDescription=“XitronUSB Driver Installation Media”
WudfRdDisplayName=“WDF - UMDF Reflector”
WinUsb_SvcDesc=“WinUSB”
<–
I cannot see any obvious reason why the driver is failing to start.
Any ideas as to how best I approach the problem?
Peter Young
Xitron, Inc.