PiProfileUpdateDeviceTreeCallback

NTSTATUS __stdcall PiProfileUpdateDeviceTreeCallback(_DEVICE_NODE *DeviceNode, VOID *Context){
  _PNP_DEVNODE_STATE State; 

  State = DeviceNode->State;
  if( State == DeviceNodeStarted )
  {
    if( !(unsigned int)PnpIsDeviceInstanceEnabled(0i64, &DeviceNode->InstancePath.Length, 0) )
      PnpRequestDeviceRemoval((__int64)DeviceNode, 0, 22, 0);
  }
  else if( ((State - 770) & 0xFFFFFFEF) == 0 && (DeviceNode->Flags & 0x2000) != 0 && DeviceNode->Problem == 22 )
  {
    PipClearDevNodeProblem(DeviceNode);
    if( (unsigned int)PnpIsDeviceInstanceEnabled(0i64, &DeviceNode->InstancePath.Length, 0) )
    {
      PnpRestartDeviceNode(DeviceNode);
      IoInvalidateDeviceRelations(DeviceNode->Parent->PhysicalDeviceObject, BusRelations);
    }
    else
    {
      PipSetDevNodeProblem(DeviceNode, 0x16ui64, 0);
    }
  }
  return 0;
}

Referenced by:

No references.