Our QA guy passed a Windows 2000 Pro box over to me where he had reproduced an issue loading the latest driver I released. It loads fine on Windows XP and Vista (vista support was newly added to the driver).
I enabled kernel debugging on the system, turned verbose output on, and then watched the OS boot and took note of all the SYS files that were loaded. >>>My driver was never loaded.<<<
HOWEVER, the INF file was installed. The device name was at-least recognized by its common name in the Device manager. But there’s a ! on the icon and the only thing Windows says is that it can’t find the drivers for the device.
Now my first question is: If Windows didn’t list my SYS file in the kernel debugger output, does that mean that it didn’t TRY to load it? Or does that mean that it didn’t SUCCESSFULLY load it?
If the latter, I would set my sights on the fact that the newest driver was built against a newer DDK which might reference symbols not in the older 2000 kernel. If the former, I’d keep poking at the INF files.
If anyone else has any suggestions, they would be much appreciated.
Thanks!
Jason
xxxxx@digitaltundra.com wrote:
Our QA guy passed a Windows 2000 Pro box over to me where he had reproduced an issue loading the latest driver I released. It loads fine on Windows XP and Vista (vista support was newly added to the driver).
I enabled kernel debugging on the system, turned verbose output on, and then watched the OS boot and took note of all the SYS files that were loaded. >>>My driver was never loaded.<<<
HOWEVER, the INF file was installed. The device name was at-least recognized by its common name in the Device manager. But there’s a ! on the icon and the only thing Windows says is that it can’t find the drivers for the device.
Now my first question is: If Windows didn’t list my SYS file in the kernel debugger output, does that mean that it didn’t TRY to load it? Or does that mean that it didn’t SUCCESSFULLY load it?
Yes.
Does it really matter? The course of action you suggest is clear and
correct:
If the latter, I would set my sights on the fact that the newest driver was built against a newer DDK which might reference symbols not in the older 2000 kernel. If the former, I’d keep poking at the INF files.
If you built against a newer DDK, then it’s quite possible you are
referring to symbols which do not exist. Build it in the Win2K
environment first. If it still doesn’t load, then you might have INF
issues.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
Tim Roberts wrote:
If you built against a newer DDK, then it’s quite possible you are
referring to symbols which do not exist. Build it in the Win2K
environment first. If it still doesn’t load, then you might have INF
issues.
Also, just building in the Win2k environment won’t guarantee that you aren’t missing exports from the kernel. Depending on your code, you might need things like -DWIN2K_COMPAT_SLIST_USAGE and so on.
Besides what others have said, look at the lm command it will tell you if
the system has unloaded your driver.
–
Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Website: http://www.windrvr.com
Blog: http://msmvps.com/blogs/WinDrvr
Remove StopSpam to reply
wrote in message news:xxxxx@ntdev…
> Our QA guy passed a Windows 2000 Pro box over to me where he had
> reproduced an issue loading the latest driver I released. It loads fine
> on Windows XP and Vista (vista support was newly added to the driver).
>
> I enabled kernel debugging on the system, turned verbose output on, and
> then watched the OS boot and took note of all the SYS files that were
> loaded. >>>My driver was never loaded.<<<
>
> HOWEVER, the INF file was installed. The device name was at-least
> recognized by its common name in the Device manager. But there’s a ! on
> the icon and the only thing Windows says is that it can’t find the drivers
> for the device.
>
> Now my first question is: If Windows didn’t list my SYS file in the kernel
> debugger output, does that mean that it didn’t TRY to load it? Or does
> that mean that it didn’t SUCCESSFULLY load it?
>
> If the latter, I would set my sights on the fact that the newest driver
> was built against a newer DDK which might reference symbols not in the
> older 2000 kernel. If the former, I’d keep poking at the INF files.
>
> If anyone else has any suggestions, they would be much appreciated.
>
> Thanks!
> Jason
>
> Also, just building in the Win2k environment won’t guarantee that you aren’t
missing exports from the kernel. Depending on your code, you might need
things
like -DWIN2K_COMPAT_SLIST_USAGE and so on.
Build in w2k build env fails without this.
–
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com
If you want to debug this at runtime, I blogged about how to do that. http://blogs.msdn.com/doronh/archive/2006/03/13/550844.aspx. You could also run depends.exe on the sys file on a win2k machine and it should tell you if there is an unresolved import.
d
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Don Burn
Sent: Friday, January 18, 2008 10:57 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] Newbie: Driver loading problems on Windows 2000
Besides what others have said, look at the lm command it will tell you if
the system has unloaded your driver.
–
Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Website: http://www.windrvr.com
Blog: http://msmvps.com/blogs/WinDrvr
Remove StopSpam to reply
wrote in message news:xxxxx@ntdev…
> Our QA guy passed a Windows 2000 Pro box over to me where he had
> reproduced an issue loading the latest driver I released. It loads fine
> on Windows XP and Vista (vista support was newly added to the driver).
>
> I enabled kernel debugging on the system, turned verbose output on, and
> then watched the OS boot and took note of all the SYS files that were
> loaded. >>>My driver was never loaded.<<<
>
> HOWEVER, the INF file was installed. The device name was at-least
> recognized by its common name in the Device manager. But there’s a ! on
> the icon and the only thing Windows says is that it can’t find the drivers
> for the device.
>
> Now my first question is: If Windows didn’t list my SYS file in the kernel
> debugger output, does that mean that it didn’t TRY to load it? Or does
> that mean that it didn’t SUCCESSFULLY load it?
>
> If the latter, I would set my sights on the fact that the newest driver
> was built against a newer DDK which might reference symbols not in the
> older 2000 kernel. If the former, I’d keep poking at the INF files.
>
> If anyone else has any suggestions, they would be much appreciated.
>
> Thanks!
> Jason
>
—
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
xxxxx@digitaltundra.com wrote:
Now my first question is: If Windows didn’t list my SYS file in the kernel debugger output, does that mean that it didn’t TRY to load it? Or does that mean that it didn’t SUCCESSFULLY load it?
Doron Holan has something in his blog somewhere about creative use of:
bp nt!MmLoadSystemImage
bp nt!MiResolveImageReferences
http://blogs.msdn.com/doronh/archive/2006/03/13/550844.aspx
He mentions a bit about the arguments and return values, and how you can
use them to fault find. A very nice tip IMHO.
MH.