PiSwProcessParentStartIrp

VOID __stdcall PiSwProcessParentStartIrp(_DEVICE_OBJECT *ParentDeviceObject){
  INT64 v1; 
  char *DeviceNode; 
  _ETHREAD *CurrentThread; 
  _LIST_ENTRY *Children; 

  if( ParentDeviceObject )
    DeviceNode = (char *)ParentDeviceObject->DeviceObjectExtension->DeviceNode;
  else
    DeviceNode = 0i64;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquireResourceExclusiveLite((UINT64)&PiSwLockObj, 1, v1);
  Children = PiSwFindChildren((_UNICODE_STRING *)(DeviceNode + 40));
  ExReleaseResourceLite(&PiSwLockObj);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  if( Children )
    IoInvalidateDeviceRelations(ParentDeviceObject, SingleBusRelations);
}

Referenced by:

PnpDeviceCompletionProcessCompletedRequest
PnpStartDeviceNode