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