PnpDeviceCompletionProcessCompletedRequest
__int64 __fastcall PnpDeviceCompletionProcessCompletedRequest(VOID *a3){
__int64 v2;
int v3;
v2 = *((_QWORD *)a3 + 2);
*(_QWORD *)(v2 + 528) = *((_QWORD *)a3 + 6);
*(_DWORD *)(v2 + 392) = *((_DWORD *)a3 + 10);
PipSetDevNodeState((_DEVICE_NODE *)v2, *((_PNP_DEVNODE_STATE *)a3 + 8));
if( *((int *)a3 + 10) >= 0 )
{
v3 = *((_DWORD *)a3 + 8);
if( v3 == 774 || v3 == 779 )
{
PipUpdatePostStartCharacteristics(*(_DEVICE_OBJECT **)(v2 + 32));
PnpSetObjectProperty(
*(&stru_140CF2E80 + 607),
*(_QWORD *)(v2 + 48),
1u,
0i64,
0i64,
(__int64)&DEVPKEY_Device_DriverProblemDesc,
0,
0i64,
0,
0);
PiSwProcessParentStartIrp(*(_DEVICE_OBJECT **)(v2 + 32));
}
}
if( *((_DWORD *)a3 + 8) == 781 )
{
if( (*(_DWORD *)(v2 + 704) & 0x80u) == 0 )
KeBugCheckEx(0xCAu, (PVOID)0xD, (PVOID)v2, (PVOID)0x80, 0i64);
PoFxIdleDevice(*(_DEVICE_OBJECT **)(v2 + 32));
*(_DWORD *)(v2 + 704) &= ~0x80u;
}
PnpDeviceCompletionRequestDestroy(a3);
return *(unsigned int *)(v2 + 392);
}Referenced by:
PipEnumerateDevice
PnpDeviceCompletionProcessCompletedRequests
PnpStartDeviceNode