IoReuseIrp
VOID __stdcall IoReuseIrp(_IRP *Irp, INT64 Status){
char v2;
int v3;
__int64 v5;
char v6;
__int16 v7;
__int64 v8;
char v9;
__int64 v10;
__int64 v11;
__int16 v12;
char v13;
UINT64 UserDataCount;
_GUID Guid;
GUID ActivityId;
PVOID retaddr;
v2 = 0;
v3 = Status;
Guid = 0i64;
if( (MmVerifierData & 0x10) != 0 )
{
VfIoInitializeIrp(Irp, retaddr, 1u);
IovpLogStackTrace(Irp);
}
v5 = *((char *)Irp + 66);
v6 = *((_BYTE *)Irp + 71) & 0x6D;
v7 = *((_WORD *)Irp + 1);
v8 = *((_QWORD *)Irp + 25);
v9 = *((_BYTE *)Irp + 71);
if( v9 >= 0 && v8 && (*(_BYTE *)(v8 + 2) & 1) != 0 )
{
v10 = *((_QWORD *)Irp + 25);
v2 = 1;
v11 = v10;
Guid = *(_GUID *)(v10 + 24);
}
else
{
v10 = *((_QWORD *)Irp + 25);
v11 = v10;
if( v9 < 0 )
{
*((_QWORD *)Irp + 25) = 0i64;
*((_BYTE *)Irp + 71) = v9 & 0x7F;
v11 = 0i64;
goto LABEL_8;
}
}
if( v10 )
{
if( *((char *)Irp + 71) >= 0 && (*(_BYTE *)(v10 + 2) & 0x20) != 0 )
*(_QWORD *)(v10 + 40) = 0i64;
*(_WORD *)(v10 + 2) = 0;
v11 = *((_QWORD *)Irp + 25);
}
LABEL_8:
v12 = *((_WORD *)Irp + 2);
memset((INT64)Irp, 0i64);
*((_WORD *)Irp + 1) = v7;
*(_WORD *)Irp = 6;
*((_BYTE *)Irp + 67) = v5 + 1;
*((_BYTE *)Irp + 66) = v5;
v13 = *((_BYTE *)KeGetCurrentThread() + 586);
*((_QWORD *)Irp + 5) = (char *)Irp + 32;
*((_QWORD *)Irp + 4) = (char *)Irp + 32;
*((_BYTE *)Irp + 70) = v13;
*((_WORD *)Irp + 2) = v12;
*((_BYTE *)Irp + 71) = v6;
*((_DWORD *)Irp + 12) = v3;
*((_QWORD *)Irp + 23) = (char *)Irp + 64 * v5 + 8 * v5 + 208;
if( v11 )
{
*((_QWORD *)Irp + 25) = v11;
if( v2 == 1 )
IoSetActivityIdIrp(Irp, &Guid);
if( (IopFunctionPointerMask & 4) != 0
&& (IopIrpExtensionStatus & 1) != 0
&& (!IopIrpHasExtensionType(Irp, 0i64)
|| IopIsActivityTracingEventEnabled((EVENT_DESCRIPTOR *)&IoTrace_KernelIo_ReuseIrp)) )
{
ActivityId = 0i64;
EtwActivityIdControl(3u, &ActivityId);
if( IopIsActivityTracingEventEnabled((EVENT_DESCRIPTOR *)&IoTrace_KernelIo_ReuseIrp) )
{
LODWORD(UserDataCount) = 0;
EtwWriteEx(
IoTraceHandle,
(EVENT_DESCRIPTOR *)&IoTrace_KernelIo_ReuseIrp,
0i64,
0i64,
(GUID *)(v11 + 24),
&ActivityId,
UserDataCount,
0i64);
}
IoSetActivityIdIrp(Irp, &ActivityId);
}
}
}Referenced by:
PopAllocateIrp
PopPrepareIoctl
SmKmFileInfoCleanup