IoFindDeviceThatFailedIrp
_DEVICE_OBJECT *__stdcall IoFindDeviceThatFailedIrp(_IRP *Irp){
unsigned int StackCount;
unsigned int v2;
void **v3;
StackCount = Irp->StackCount;
v2 = 0;
if( Irp->IoStatus.Status >= 0 )
return 0i64;
v3 = &Irp->Tail.DriverContext[9 * StackCount + 2];
if( !StackCount )
return 0i64;
while( (*((_BYTE *)v3 + 3) & 2) == 0 )
{
++v2;
v3 -= 9;
if( v2 >= StackCount )
return 0i64;
}
return(_DEVICE_OBJECT *)v3[5];
}Referenced by:
PnpDeviceCompletionRoutine
PnpDiagnosticCompletionRoutine
PopDiagTraceIrpFinish
PopDiagTraceIrpFinishTelemetry
PopSystemIrpCompletion