PnpDeviceCompletionRoutine
INT64 __stdcall PnpDeviceCompletionRoutine(_DEVICE_OBJECT *DeviceObject, _IRP *Irp, PVOID Context){
__int64 v3;
__int64 v6;
DEVICE_OBJECT *DeviceThatFailedIrp;
v3 = 0i64;
*(_QWORD *)(*((_QWORD *)Context + 2) + 72i64) = 0i64;
if( *((_BYTE *)Irp + 65) )
*((_DWORD *)Context + 9) = 1;
*((_QWORD *)Context + 6) = *((_QWORD *)Irp + 7);
*((_DWORD *)Context + 10) = *((_DWORD *)Irp + 12);
_InterlockedIncrement((volatile signed __int32 *)Context + 14);
if( *((int *)Context + 10) < 0 )
{
DeviceThatFailedIrp = IoFindDeviceThatFailedIrp(Irp);
if( DeviceThatFailedIrp )
v3 = *((_QWORD *)DeviceThatFailedIrp + 1);
}
PnpDeviceCompletionQueueDispatchedEntryCompleted((_PNP_DEVICE_COMPLETION_QUEUE *)DeviceObject, (_LIST_ENTRY *)Context);
v6 = *((_QWORD *)Context + 2);
if( *((_DWORD *)Context + 8) == 781 )
PnpDiagnosticTraceObject(&KMPnPEvt_DeviceEnum_Stop, (_UNICODE_STRING *)(v6 + 40));
else
PnpTraceStartDevice(v6, *((_DWORD *)Context + 10), v3);
PnpDeviceCompletionRequestDestroy((INT64)Context);
IoFreeIrp(Irp);
return 3221225494i64;
}Referenced by:
No references.