IopReferenceIoAttributionFromProcess
__int64 __fastcall IopReferenceIoAttributionFromProcess(__int64 a1, char a2, _QWORD *a3){
KIRQL v7;
__int64 v8;
unsigned __int64 v9;
if( !*(_QWORD *)(a1 + 2392) )
return 3221226021i64;
v7 = ExAcquireSpinLockShared(&IopDiskIoAttributionLock);
v8 = *(_QWORD *)(a1 + 2392);
v9 = v7;
if( v8 )
{
if( a2 )
{
*a3 = *(_QWORD *)(v8 + 24);
}
else
{
if( _InterlockedIncrement64((volatile signed __int64 *)(v8 + 32)) <= 1 )
__fastfail(0xEu);
*a3 = v8;
}
}
ExReleaseSpinLockSharedFromDpcLevel(&IopDiskIoAttributionLock);
__writecr8(v9);
return v8 == 0 ? 0xC0000225 : 0;
}Referenced by:
IoReferenceIoAttributionFromThread
IopSetDiskIoAttributionExtension
IopSetDiskIoAttributionFromProcess