Monday, September 22, 2008

3Com 3C900 driver causes DRIVER_POWER_STATE_FAILURE in Vista

I got a 3Com 3C900-Combo Ethernet card because I occasionally needed to access a 10BASE2 network. It's not officially supported in Vista but the XP drivers seemed to work well.

I was occasionally getting DRIVER_POWER_STATE_FAILURE (9f) bluescreens when entering or resuming from S3 standby but they were so rare that I ignored them. Last night I decided to see if I could get any useful information from the minidump. Google searches showed the meanings of bluescreen arguments. The first one was three, which meant that "A device object has been blocking an Irp for too long a time". However, the other ones were addresses in memory and so further searches weren't helpful.

It seemed that I needed to use WinDbg from the Debugging Tools for Windows. I first tried it without the symbols and that wasn't helpful. Then I tried it with Microsoft's symbol server and downloaded symbols and it kept failing. First I had to deal with:
Unable to load image ntoskrnl.exe, Win32 error 0n2
*** WARNING: Unable to verify timestamp for ntoskrnl.exe
*** ERROR: Module load completed but symbols could not be loaded for ntoskrnl.exe
Then I had to deal with:
***** Kernel symbols are WRONG. Please fix symbols to do analysis.
Finally after setting everything up from the WinDbg GUI instead of using command line options, everything worked and I got some very helpful information:
FAILURE_BUCKET_ID:  0x9F_IMAGE_el90XND5.SYS

BUCKET_ID: OLD_IMAGE_el90XND5.SYS
It was almost like magic. After failing for no apparent reason, WinDbg now worked and it gave me exactly what I wanted. El90XND5.SYS is the 3C900 driver.

I wonder if there are any 10BASE2 cards which are officially supported in Vista.

No comments: