Re: [ntdev] DI_NEEDREBOOT returned by SetupDiClassInstaller upon driver installation

The driver could not be loaded because a previous instance is still loaded.

Unload failure could be caused by resource leak? Did you use verifier to check the driver?

Best Regards!
Zhang Pei

Sent: ‎Friday‎, ‎August‎ ‎15‎, ‎2014 ‎3‎:‎54‎ ‎AM
To: Windows System Software Devs Interest List


I’ve got a simple filter driver that I’m installing for all devices connected to serial ports on a 32-bit Windows XP (upper filter driver for class guid “4D36E978-E325-11CE-BFC1-08002BE10318”). I would like to install it without a reboot. All installation WDF steps are successfully executed. I then restart all subdevices of the target device. This is done by going over sub-devices through SetupDiEnumDeviceInfo, stopping and then starting them:

params.StateChange = DICS_STOP;
params.HwProfile = 0; // only for current HW profile

// now start it again:
params.StateChange = DICS_START;


SetupDiGetDeviceInstallParams(…,&installParams );

if( installParams.Flags & DI_NEEDREBOOT )


One of the sub-devices always returns an indication that a reboot is required.

setupapi.log has the following lines:

#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ACPI\PNP0400\4&1D401FB5&0”.
#I309 DICS_STOP: Device has been stopped.
#-166 Device install function: DIF_PROPERTYCHANGE.
#I292 Changing device properties of “ACPI\PNP0400\4&1D401FB5&0”.
#W114 Device “ACPI\PNP0400\4&1D401FB5&0” required reboot: Device has problem: 0x26: CM_PROB_DRIVER_FAILED_PRIOR_UNLOAD.
#I307 DICS_START: Device could not be started.

Which seems to indicate that one of the drivers down the stack could not be unloaded. Could it be some sort of limitation of the standard XP serial driver (serial.sys/serenum.sys)? Or is there something wrong with the way a restart is implemented?

I would appreciate your input regarding this issue. Thanks!

NTDEV is sponsored by OSR

Visit the list at:


For our schedule of WDF, WDM, debugging and other seminars visit:

To unsubscribe, visit the List Server section of OSR Online at