Port = PortExtension->PortNumber;
ASSERT(Port > 0);
- ASSERT(HubExtension);
-
- if (HubExtension->CurrentPowerState.DeviceState != PowerDeviceD0 &&
+ if (HubExtension &&
+ HubExtension->CurrentPowerState.DeviceState != PowerDeviceD0 &&
(HubExtension->HubFlags & USBHUB_FDO_FLAG_DEVICE_STARTED) != 0)
{
USBH_HubSetD0(HubExtension);
{
WakeIrp = NULL;
+ ASSERT(HubExtension);
if (!InterlockedDecrement(&HubExtension->PendingRequestCount))
{
KeSetEvent(&HubExtension->PendingRequestEvent,
if (WakeIrp)
{
+ ASSERT(HubExtension);
USBH_CompletePowerIrp(HubExtension, WakeIrp, STATUS_CANCELLED);
}
if (DeviceHandle)
{
+ ASSERT(HubExtension);
Status = USBD_RemoveDeviceEx(HubExtension, DeviceHandle, 0);
if (HubExtension->PortData &&
{
PortExtension->PortPdoFlags &= ~USBHUB_PDO_FLAG_DEVICE_STARTED;
- if (HubExtension->PortData)
+ if (HubExtension && HubExtension->PortData)
{
PortData = &HubExtension->PortData[Port - 1];
DPRINT1("USBH_PdoRemoveDevice: call IoWMIRegistrationControl UNIMPLEMENTED. FIXME\n");
- USBHUB_FlushAllTransfers(HubExtension);
+ if (HubExtension)
+ USBHUB_FlushAllTransfers(HubExtension);
IoDeleteDevice(PortDevice);
}
}
- DPRINT("USBH_PdoRemoveDevice: call USBH_CheckIdleDeferred()\n");
- USBH_CheckIdleDeferred(HubExtension);
+ if (HubExtension)
+ {
+ DPRINT("USBH_PdoRemoveDevice: call USBH_CheckIdleDeferred()\n");
+ USBH_CheckIdleDeferred(HubExtension);
+ }
return Status;
}