IopAddBugcheckTriageDeviceNode
NTSTATUS __stdcall IopAddBugcheckTriageDeviceNode(_TRIAGE_DEVICE_NODE *TriageDevNode){
NTSTATUS v1;
int v3;
_IRP *PendingIrp;
_TRIAGE_POP_FX_DEVICE *FxDevice;
_IRP *Irp;
_UNICODE_STRING TriageString;
v1 = 0;
v3 = 0;
while( 1 )
{
++v3;
if( !KiIsAddressRangeValid((INT64)TriageDevNode, 88i64) )
break;
IoAddTriageDumpDataBlock(TriageDevNode, (_BYTE *)0x58);
TriageString = TriageDevNode->InstancePath;
IopAddBugcheckTriageUnicodeString(&TriageString);
TriageString = TriageDevNode->ServiceName;
IopAddBugcheckTriageUnicodeString(&TriageString);
PendingIrp = TriageDevNode->PendingIrp;
if( PendingIrp )
IopAddBugcheckTriageIrp(PendingIrp, 0);
FxDevice = TriageDevNode->FxDevice;
if( FxDevice )
{
if( KiIsAddressRangeValid((INT64)TriageDevNode->FxDevice, 56i64) )
{
IoAddTriageDumpDataBlock(FxDevice, (_BYTE *)0x38);
Irp = FxDevice->Irp;
if( Irp )
IopAddBugcheckTriageIrp(Irp, 0);
}
}
IopAddBugcheckTriageDevice(TriageDevNode->PhysicalDeviceObject);
TriageDevNode = TriageDevNode->Parent;
if( !TriageDevNode || v3 >= 10 )
return v1;
}
return -1073741823;
}Referenced by:
IopAddBugcheckPnpWatchdogTriageData
IopAddBugcheckTriageCompletionQueue
IopAddBugcheckTriageDataFromParameters
IopAddBugcheckTriageIrp