none
Is it possible to prevent a problematic in-box driver from automatically loading?

    Question

  • Hello,

    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.

    Thank you.


    • Edited by iquazee Monday, August 27, 2012 4:40 PM
    Monday, August 27, 2012 4:39 PM

Answers

  • 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
    Monday, August 27, 2012 10:41 PM