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