I know this error message has been dealt with before. However, I did not find relevant answers top the problem I’m facing.
My KMDF driver was compiled as a KMDF 1.9 and as a KMDF 1.5.
The 1.9 functions on XP/Vista/W7 platforms. However, I’d like to compile it as a 1.5 driver and install it on Vista (so no reboot will be needed).
When I install the driver’s 1.5 version on Vista (x86) I get the above error in file setupapi.dev.log and the device cannot start. However, it does load: I used WinDBG to step through DriverEntry() from beginning to end (Returned status 0).
I compared with the 1.9 log and I’ve noticed that in the 1.9 there was no restart. It says:
“Device restart was skipped becasuse the DI_NEEDRESTART or DI_NEEDREBOOT flag was set.”
Below is the relevant section of setupapi.dev.log. Search for “!!!” for the error. I put lines around the part next to it which differs from the equivalent 1.9 log:
dvi: Default installer: Enter 12:31:14.563
dvi: {Install DEVICE}
inf: Opened PNF: ‘c:\windows\system32\driverstore\filerepository\vjoy.inf_e35ec623\vjoy.inf’ ([strings] ) dvi: Writing BASIC Logical Configurations… inf: {Install Inf Section [vjoy.Inst.NT]} inf: {Install Inf Section [vjoy.Inst.NT] exit (0x00000000)} dvi: Processing Registry/Property directives… inf: {Install Inf Section [vjoy.Inst.NT]} inf: {Install Inf Section [vjoy.Inst.NT] exit (0x00000000)} inf: {Install Inf Section [vjoy.Inst.NT.Hw]} inf: AddReg=vjoy.AddReg (vjoy.inf line 58) inf: HKR,UpperFilters,0x00010000,hidkmdf (vjoy.inf line 71) inf: {Install Inf Section [vjoy.Inst.NT.Hw] exit (0x00000000)} dvi: {Writing Device Properties} dvi: Provider name=Shaul Eizikovich dvi: DriverDate 01/04/2011 dvi: DriverVersion=6.0.6000.16386 dvi: Class name=HIDClass dvi: Manufacturer=Shaul Eizikovich dvi: Matching DeviceID=root\vid_1234&pid_bead&rev_0002 dvi: Strong Name=oem4.inf:Vendor.NTx86:vjoy.Inst:6.0.6000.16386:root\vid_1234&pid_bead&rev_0002 dvi: {Writing Device Properties - Complete} inf: {Install Inf Section [vjoy.Inst.NT.Services]} inf: AddService=hidkmdf,hidkmdf_Service_Inst, (vjoy.inf line 64) inf: ServiceType=1 (vjoy.inf line 75) inf: StartType=3 (vjoy.inf line 76) inf: ErrorControl=1 (vjoy.inf line 77) inf: ServiceBinary=C:\Windows\system32\DRIVERS\hidkmdf.sys (vjoy.inf line 78) inf: DisplayName=“Filter Driver Service for HID-KMDF Interface layer” (vjoy.inf line 74) inf: LoadOrderGroup=“PNP Filter” (vjoy.inf line 79) dvi: Add Service: Created service ‘hidkmdf’. inf: AddService=vjoy,0x00000002,vjoy_Service_Inst (vjoy.inf line 65) inf: ServiceType=0x1 (vjoy.inf line 118) inf: StartType=0x3 (vjoy.inf line 119) inf: ErrorControl=0x0 (vjoy.inf line 120) inf: ServiceBinary=C:\Windows\system32\DRIVERS\vjoy.sys (vjoy.inf line 121) inf: DisplayName=“vJoy Device” (vjoy.inf line 117) dvi: Add Service: Created service ‘vjoy’. inf: {Install Inf Section [vjoy.Inst.NT.Services] exit(0x00000000)} dvi: {Install DEVICE exit (0x00000000)} dvi: Writing common driver property settings. dvi: DriverDescription=vJoy Device dvi: DeviceDisplayName=vJoy Device ---------------------------------------------------------------------------------------------------------------- dvi: {Restarting Devices} 12:31:15.574 dvi: Restart: ROOT\HIDCLASS\0000 dvi: Restart complete. !!! dvi: Device not started: Device has problem: 0x27: CM_PROB_DRIVER_FAILED_LOAD. dvi: {Restarting Devices exit} 12:31:19.523 ---------------------------------------------------------------------------------------------------------------- dvi: Default installer: Exit
I know this error message has been dealt with before. However, I did not find relevant answers top the problem I’m facing.
My KMDF driver was compiled as a KMDF 1.9 and as a KMDF 1.5.
The 1.9 functions on XP/Vista/W7 platforms. However, I’d like to compile it as a 1.5 driver and install it on Vista (so no reboot will be needed).
When I install the driver’s 1.5 version on Vista (x86) I get the above error in file setupapi.dev.log and the device cannot start. However, it does load: I used WinDBG to step through DriverEntry() from beginning to end (Returned status 0).
I compared with the 1.9 log and I’ve noticed that in the 1.9 there was no restart. It says:
“Device restart was skipped becasuse the DI_NEEDRESTART or DI_NEEDREBOOT flag was set.”
Below is the relevant section of setupapi.dev.log. Search for “!!!” for the error. I put lines around the part next to it which differs from the equivalent 1.9 log:
…
inf: {Install Inf Section [vjoy.Inst.NT.Services]}
inf: AddService=hidkmdf,hidkmdf_Service_Inst, (vjoy.inf line 64)
inf: ServiceType=1 (vjoy.inf line 75)
inf: StartType=3 (vjoy.inf line 76)
inf: ErrorControl=1 (vjoy.inf line 77)
inf: ServiceBinary=C:\Windows\system32\DRIVERS\hidkmdf.sys (vjoy.inf line 78)
inf: DisplayName=“Filter Driver Service for HID-KMDF Interface layer” (vjoy.inf line 74)
inf: LoadOrderGroup=“PNP Filter” (vjoy.inf line 79)
dvi: Add Service: Created service ‘hidkmdf’.
inf: AddService=vjoy,0x00000002,vjoy_Service_Inst (vjoy.inf line 65)
If this is a filter driver, then you do not want to use “2” in your
AddService line. That make this the primary driver for the device.
Your primary driver needs to be some kind of HID driver. Are you
installing a device filter or a class filter?
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
Those codes don’t lie, so the obvious question is “which driver”? Since this snippet shows 2, my off-the cuff guess is you’re trying to use KMDF 1.9 hidkmdf on a KMDF 1.5 runtime, and it’s the one that won’t load.
But that is definitely just a guess- the part about some driver not loading and all you’ve proved so far is it isn’t the one you looked at isn’t a guess.
>
To: Windows System Software Devs Interest List
Subject: [ntdev] CM_PROB_DRIVER_FAILED_LOAD On Vista x86
I know this error message has been dealt with before. However, I did not find relevant answers top the problem I’m facing.
My KMDF driver was compiled as a KMDF 1.9 and as a KMDF 1.5.
The 1.9 functions on XP/Vista/W7 platforms. However, I’d like to compile it as a 1.5 driver and install it on Vista (so no reboot will be needed).
When I install the driver’s 1.5 version on Vista (x86) I get the above error in file setupapi.dev.log and the device cannot start. However, it does load: I used WinDBG to step through DriverEntry() from beginning to end (Returned status 0).
I compared with the 1.9 log and I’ve noticed that in the 1.9 there was no restart. It says:
“Device restart was skipped becasuse the DI_NEEDRESTART or DI_NEEDREBOOT flag was set.”
Below is the relevant section of setupapi.dev.log. Search for “!!!” for the error. I put lines around the part next to it which differs from the equivalent 1.9 log:
dvi: Default installer: Enter 12:31:14.563
dvi: {Install DEVICE}
inf: Opened PNF: ‘c:\windows\system32\driverstore\filerepository\vjoy.inf_e35ec623\vjoy.inf’ ([strings] ) dvi: Writing BASIC Logical Configurations… inf: {Install Inf Section [vjoy.Inst.NT]} inf: {Install Inf Section [vjoy.Inst.NT] exit (0x00000000)} dvi: Processing Registry/Property directives… inf: {Install Inf Section [vjoy.Inst.NT]} inf: {Install Inf Section [vjoy.Inst.NT] exit (0x00000000)} inf: {Install Inf Section [vjoy.Inst.NT.Hw]} inf: AddReg=vjoy.AddReg (vjoy.inf line 58) inf: HKR,UpperFilters,0x00010000,hidkmdf (vjoy.inf line 71) inf: {Install Inf Section [vjoy.Inst.NT.Hw] exit (0x00000000)} dvi: {Writing Device Properties} dvi: Provider name=Shaul Eizikovich dvi: DriverDate 01/04/2011 dvi: DriverVersion=6.0.6000.16386 dvi: Class name=HIDClass dvi: Manufacturer=Shaul Eizikovich dvi: Matching DeviceID=root\vid_1234&pid_bead&rev_0002 dvi: Strong Name=oem4.inf:Vendor.NTx86:vjoy.Inst:6.0.6000.16386:root\vid_1234&pid_bead&rev_0002 dvi: {Writing Device Properties - Complete} inf: {Install Inf Section [vjoy.Inst.NT.Services]} inf: AddService=hidkmdf,hidkmdf_Service_Inst, (vjoy.inf line 64) inf: ServiceType=1 (vjoy.inf line 75) inf: StartType=3 (vjoy.inf line 76) inf: ErrorControl=1 (vjoy.inf line 77) inf: ServiceBinary=C:\Windows\system32\DRIVERS\hidkmdf.sys (vjoy.inf line 78) inf: DisplayName=“Filter Driver Service for HID-KMDF Interface layer” (vjoy.inf line 74) inf: LoadOrderGroup=“PNP Filter” (vjoy.inf line 79) dvi: Add Service: Created service ‘hidkmdf’. inf: AddService=vjoy,0x00000002,vjoy_Service_Inst (vjoy.inf line 65) inf: ServiceType=0x1 (vjoy.inf line 118) inf: StartType=0x3 (vjoy.inf line 119) inf: ErrorControl=0x0 (vjoy.inf line 120) inf: ServiceBinary=C:\Windows\system32\DRIVERS\vjoy.sys (vjoy.inf line 121) inf: DisplayName=“vJoy Device” (vjoy.inf line 117) dvi: Add Service: Created service ‘vjoy’. inf: {Install Inf Section [vjoy.Inst.NT.Services] exit(0x00000000)} dvi: {Install DEVICE exit (0x00000000)} dvi: Writing common driver property settings. dvi: DriverDescription=vJoy Device dvi: DeviceDisplayName=vJoy Device ---------------------------------------------------------------------------------------------------------------- dvi: {Restarting Devices} 12:31:15.574 dvi: Restart: ROOT\HIDCLASS\0000 dvi: Restart complete. !!! dvi: Device not started: Device has problem: 0x27: CM_PROB_DRIVER_FAILED_LOAD. dvi: {Restarting Devices exit} 12:31:19.523 ---------------------------------------------------------------------------------------------------------------- dvi: Default installer: Exit
Thank you both for your replies. I’m in the middle of testing your suggestions. I have a few questions:
Tim:
If this is a filter driver, then you do not want to use “2” in your
AddService line. That make this the primary driver for the device.
Your primary driver needs to be some kind of HID driver. Are you
installing a device filter or a class filter?
You are quite right. it IS a filter driver and the documentation indeed prohibits using 2 (SPSVCINST_ASSOCSERVICE) in the AddService line.
However, I follow example “hidusbfx2” and this is exactly what MS do. I tried to remove it, but could not install as at least one driver should be attributed with SPSVCINST_ASSOCSERVICE. In addition, the same original INF works fine with 1.9.
Bob:
Those codes don’t lie, so the obvious question is “which driver”? Since this
snippet shows 2, my off-the cuff guess is you’re trying to use KMDF 1.9 hidkmdf
on a KMDF 1.5 runtime, and it’s the one that won’t load.
TRUE! I did not manage to compile hidkmdf.sys under WDM 6000 yet so I don’t know if this is the correct answer.
However, I’m confused. hidkmdf.sys is not a wdf driver, or is it. I think it is a good-old WDM driver. If so, what is the meaning of “KMDF 1.9 hidkmdf”?
Those codes don’t lie, so the obvious question is “which driver”?
Since this snippet shows 2, my off-the cuff guess is you’re trying to
use KMDF 1.9 hidkmdf on a KMDF 1.5 runtime, and it’s the one that won’t load.
TRUE! I did not manage to compile hidkmdf.sys under WDM 6000 yet so I don’t know if this is the correct answer.
However, I’m confused. hidkmdf.sys is not a wdf driver, or is it. I think it is a good-old WDM driver. If so, what is the meaning of “KMDF 1.9 hidkmdf”?
It means I don’t know whether it Is WDM or not- and I’m not interested in looking it up at the moment- I don’t need the knowledge and I don’t intend to acquire it. I said it was an off-the-cuff guess, and that’s all it was ever meant to be.
“Driver failed to load” is very precise- it only happens when a driver in the stack cannot be loaded by the OS loader. When I’m trying to figure out which one, I turn on module load messages in the debugger (Alt-Ctrl-V in WinDbg toggles this, and yes, this feature’s not called precisely what I just called it, and I really don’t care about that nomenclature being “accurate”, either)- the one that failed won’t be listed.
Bob, You have solved the problem!
I managed to compile hidkmdf.sys, which I think is a WDM shim driver, under DDK 6000. Now my driver installs on Vista.
It still is a mystery to me .
Thank you very much!