IopReferenceIoAttributionFromProcess
NTSTATUS __stdcall IopReferenceIoAttributionFromProcess(_EPROCESS *Process, UINT8 GetKey, VOID **ContextOut){
unsigned __int8 v7;
void *DiskIoAttribution;
unsigned __int64 v9;
if( !Process->DiskIoAttribution )
return -1073741275;
v7 = ExAcquireSpinLockShared((INT64 *)&stru_140C452E0 + 139);
DiskIoAttribution = Process->DiskIoAttribution;
v9 = v7;
if( DiskIoAttribution )
{
if( GetKey )
{
*ContextOut = (VOID *)*((_QWORD *)DiskIoAttribution + 3);
}
else
{
if( _InterlockedIncrement64((volatile signed __int64 *)DiskIoAttribution + 4) <= 1 )
__fastfail(0xEu);
*ContextOut = DiskIoAttribution;
}
}
ExReleaseSpinLockSharedFromDpcLevel((PEX_SPIN_LOCK)&stru_140C452E0 + 278);
__writecr8(v9);
return DiskIoAttribution == 0i64 ? 0xC0000225 : 0;
}Referenced by:
IoReferenceIoAttributionFromThread
IopSetDiskIoAttributionExtension
IopSetDiskIoAttributionFromProcess