I am having an issue with a third-party driver included in Windows 8 Pro (MSDN RTM) - it causes a BSOD after the device is plugged in into the USB port.
The device is Samsung Galaxy Nexus phone (in ADB mode), and the in-box driver is provided by Samsung.
The error code is STOP 0xC2 (BAD_POOL_CALLER) and the stack trace looks like this:1: kd> k
Child-SP RetAddr Call Site
fffff880`0b24e448 fffff800`11cdfb6e nt!KeBugCheckEx
fffff880`0b24e450 fffff880`0b52eeb5 nt!ExFreePool+0xaac
fffff880`0b24e530 fffff880`0b530189 ssudbus+0x1eb5
fffff880`0b24e570 fffff880`0b536f0e ssudbus+0x3189
fffff880`0b24e5d0 fffff880`0b52e46d ssudbus+0x9f0e
fffff880`0b24e6b0 fffff800`11ef8832 ssudbus+0x146d
fffff880`0b24e730 fffff800`11b745d6 nt!PnpAsynchronousCall+0xce
fffff880`0b24e770 fffff800`11eebcb7 nt!PnpStartDevice+0xc2
fffff880`0b24e840 fffff800`11eebb2f nt!PnpStartDeviceNode+0x147
fffff880`0b24e910 fffff800`11ef8336 nt!PipProcessStartPhase1+0x5f
fffff880`0b24e940 fffff800`11f03a41 nt!PipProcessDevNodeTree+0x3e2
fffff880`0b24ebc0 fffff800`11b7588a nt!PiRestartDevice+0xbd
fffff880`0b24ec10 fffff800`11b22391 nt!PnpDeviceActionWorker+0x3ce
fffff880`0b24ecc0 fffff800`11a91521 nt!ExpWorkerThread+0x142
fffff880`0b24ed50 fffff800`11acfdd6 nt!PspSystemThreadStartup+0x59
fffff880`0b24eda0 00000000`00000000 nt!KiStartSystemThread+0x16
To avoid the BSOD, I have then to manually update the driver with a generic Google driver from Android SDK
(the Google ADB driver is based on WinUSB so it's just an INF file + coinstaller - thus, no chance to cause a BSOD).
However, if I then plug in the device into another USB port, Windows attempts to load ssudbus.sys again, and the issue reoccurs.
According to the TechNet article (http://technet.microsoft.com/en-us/library/hh825697.aspx) Windows prefers exact PNPID match when searching for drivers, so, it always prefers the in-box driver in this case.
Is it possible to blacklist the incompatible in-box driver somewhere in the Registry or in a config file?
Of course, I can just delete the directory from C:\Windows\System32\DriverStore\FileRepository\, but AFAIK, this may later cause problems when installing a Windows service pack in the future.
- Edited by iquazee Monday, August 27, 2012 4:40 PM
Seems like I found a workaround for the problem.
Actually, this wasn't an in-box driver, although it did have Microsoft digital signature with the same date/time as all the other Windows drivers!
The driver was downloaded from the Internet (didn't realize it is now turned on by default without any prompts!), and the whole process was taking like 5 seconds, so it was not obvious.
In the DeviceSetupManager Event Log:
Driver update 4b9f6cab-3750-47a4-9944-57eea40ac186 has been downloaded from Windows Update, download time was 5155 milliseconds
The workaround for now is to go to System->Properties->Hardware->Device Installation Settings->No->Never install driver software from Windows Update.
Then (to list cached drivers): pnputil -e
And to remove the cached drivers: pnputil -f -d oemXX.inf
By the way, it looks strange that there are only two options: "Always install" and "Never install" from Windows Update, and no manual approval option.
So, I am basically forced to completely disable the feature if I am concerned about system stability.
- Marked as answer by iquazee Monday, August 27, 2012 10:41 PM