SetupAPI must reboot the system before it can remove certain devices—for example, a storage device that is in the paging path. Additionally, if a device’s driver stack does not support Plug and Play, the Plug and Play manager will automatically veto the stopping and restarting of the device.
A veto results in a reboot request, which SetupAPI makes by setting the DI_NEEDREBOOT flag. If this request is made either during a client-side installation or during a server-side installation when an interactive user is logged on, SetupAPI displays a dialog box informing the user that rebooting is required. Otherwise, SetupAPI displays the dialog box the next time an interactive user logs on to the system.
The following example contains messages indicating that a storage device in the paging path vetoed its own removal.
@ 11:47:25.167 #W100 Query-removal during install of "Device_Instance_ID" was vetoed by "Device_Instance_ID" (veto type 6: PNP_VetoDevice).
@ 11:47:25.187 #W104 Device "Device_Instance_ID" required reboot: Query remove failed (install) CfgMgr32 returned: 0x17: CR_REMOVE_VETOED.
@ 11:47:25.207 #I121 Device install of "Device_Instance_ID" finished successfully.
In the previous example, the #W100 message indicates that the storage device vetoed its own removal. The message also indicates that the veto type is PNP_VetoDevice, which means that, although the device supports the specified operation, it rejected that operation for device-specific reasons.
Tip
Additional veto types exist. To locate all the veto messages in a SetupAPI log file, search for PNP_Veto to find all the PNP_Veto* words. For more information about veto types, see “PNP_VETO_TYPE” in the Windows DDK documentation.
Share with your friends: |