Ok, I have a diagnostic driver that needs to bash some hardware. I have a lovely INF and a build that installs fine on XP, but when I try to load it in Vista or Win7 it bombs out with a nifty “Device not started: Device has problem: 0x27: CM_PROB_DRIVER_FAILED_LOAD.”
Now, I’m possibly making some rash assumptions about what’s going on. Right now it’s just a bare skeleton that does nothing but print debug messages on open/close/IOCTL so I’m fairly sure I’m not trashing anything in my DriverEntry() routine. I’m using WDF 1.9, if that makes a difference.
I’m using the latest WinDDK, and have tried building the driver for Vista/X86 free and Win7 x86/free and neither works in Vista or Win7.
Can anyone give me pointers on where I should look first? The fact it loads on XP and my user-mode program can connect to it seems indicative of SOMETHING… but I’m not really sure what.
In setupapi.dev.log I do see the following:
! sig: No installed catalogs matching catalog name ‘’ were found that validated the file.
! sig: Error 1168: Element not found.
…but those are warnings, I believe, and shouldn’t cause things to die miserably.
Ok, I have a diagnostic driver that needs to bash some hardware. I have a lovely INF and a build that installs fine on XP, but when I try to load it in Vista or Win7 it bombs out with a nifty “Device not started: Device has problem: 0x27: CM_PROB_DRIVER_FAILED_LOAD.”
Now, I’m possibly making some rash assumptions about what’s going on. Right now it’s just a bare skeleton that does nothing but print debug messages on open/close/IOCTL so I’m fairly sure I’m not trashing anything in my DriverEntry() routine. I’m using WDF 1.9, if that makes a difference.
I’m using the latest WinDDK, and have tried building the driver for Vista/X86 free and Win7 x86/free and neither works in Vista or Win7.
Can anyone give me pointers on where I should look first? The fact it loads on XP and my user-mode program can connect to it seems indicative of SOMETHING… but I’m not really sure what.
There is one KEY piece of information that you have omitted here. Are
you running 32-bit Vista and Win7, or 64-bit?
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
Win7 and Vista both 32-bit. No co-installers as (supposedly) the OS has the latest version of WDF pre-installed (1.9). Not calling anything fancier than WdfRequestRetrieveInputBuffer() at this point, though I could comment those out pretty easily.
Is there a way to determine what version of WDF is installed on an OS? I suppose it’s possible the build folks might have forgotten that step… :-/
I’ll regenerate the logs after lunch, and check my debug output to see if DriverEntry() gets called.
-------------------------------- (Quoting)
Win7 and Vista both 32-bit. No co-installers as (supposedly) the OS has the latest version of WDF pre-installed (1.9). Not calling anything fancier than WdfRequestRetrieveInputBuffer() at this point, though I could comment those out pretty easily.
Is there a way to determine what version of WDF is installed on an OS? I suppose it’s possible the build folks might have forgotten that step… :-/
Win7 is WDF 1.9, Vista is 1.5 at RTM, 1.7 at SP1- but someone can install higher versions.
The Win7 WDK tool WdfVerifier will tell you the WDF runtime version on any system (both UMDF and KMDF), within the tech limits imposed by our design (doesn’t do too well on KMDF 1.0 vs 1.1, IIRC). It is very precise on 1.7 and up.
Finally, wrt checking driver entry- “driver failed load” is rather specific- it means your driver couldn’t load- it was non-native or its imports could not be resolved or the binary was missing or malformed, or… My main point being that if it won’t load, OS won’t call DriverEntry, because it isn’t there to be called.
Bob FTW! The Vista test image had 1.7 and not 1.9… ugh! Time to go complain.
Win7 has 1.9 but I suspect the issue there is that I’m using an incorrect method to try to force-load my driver (urgh). I might be able to find a user-mode mechanism to test there, though, just need to do more research.
Thanks to Bob and everyone for your help! You saved my sanity and my Friday!
The operative word here is KMDF. The mystery is why it loads on XP at all
since depending on the XP release, WDF may or may not be implemented.
However, having said that, given that you are building with a 7600 version
of WinDDK you are building with the 1.9 version of WDF and that will not run
on the 1.5 or 1.7 version of WDF, which is why your driver is not loading or
running on Vista. Why it is not running on Win7 is another mystery.
A later post here indicates it is not a 64bit signing which can be resolved
by connecting a host running WinDbg and setting up a test certificate or
enabling Test Signing mode.
So, now having said all THAT, do you have WinDbg connected and have you set
a breakpoint in DriverEntry? don’t use WinDbg".>
-----Original Message----- From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@woolyloach.com Sent: Friday, September 17, 2010 11:03 AM To: Windows System Software Devs Interest List Subject: [ntdev] Driver installs in XP, not in Vista or Win7?
Ok, I have a diagnostic driver that needs to bash some hardware. I have a lovely INF and a build that installs fine on XP, but when I try to load it in Vista or Win7 it bombs out with a nifty “Device not started: Device has problem: 0x27: CM_PROB_DRIVER_FAILED_LOAD.”
Now, I’m possibly making some rash assumptions about what’s going on. Right now it’s just a bare skeleton that does nothing but print debug messages on open/close/IOCTL so I’m fairly sure I’m not trashing anything in my DriverEntry() routine. I’m using WDF 1.9, if that makes a difference.
I’m using the latest WinDDK, and have tried building the driver for Vista/X86 free and Win7 x86/free and neither works in Vista or Win7.
Can anyone give me pointers on where I should look first? The fact it loads on XP and my user-mode program can connect to it seems indicative of SOMETHING… but I’m not really sure what.
In setupapi.dev.log I do see the following:
! sig: No installed catalogs matching catalog name ‘’ were found that validated the file. ! sig: Error 1168: Element not found.
…but those are warnings, I believe, and shouldn’t cause things to die miserably.
DriverEntry has nothing to do with this, as his driver isn’t getting loaded at all. He also already mentioned that he has trace statements, so while it’s possible that he doesn’t use windbg, he also may use it, but either way, that’s not the issue.