IoCallDriverWithTracing
VOID __fastcall IoCallDriverWithTracing(_DEVICE_OBJECT *DeviceObject, _IRP *Irp){
char *IrpExtension;
_ETHREAD *CurrentThread;
_LIST_ENTRY *ActivityId;
__int128 v5;
if( (Irp->AllocationFlags & 0x80u) == 0
&& (IrpExtension = (char *)Irp->Tail.IrpExtension) != 0i64
&& (*IrpExtension & 2) != 0 )
{
v5 = *(_OWORD *)(IrpExtension + 24);
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
ActivityId = (_LIST_ENTRY *)CurrentThread->ActivityId;
CurrentThread->ActivityId = (const _GUID *)&v5;
IofCallDriver((UINT64)DeviceObject, (UINT64)Irp);
KeGetCurrentThread()[1].WaitBlock[1].WaitListEntry.Flink = ActivityId;
}
else
{
IofCallDriver((UINT64)DeviceObject, (UINT64)Irp);
}
}Referenced by:
IopParseDevice