IoReferenceIoAttributionFromThread

NTSTATUS __stdcall IoReferenceIoAttributionFromThread(_ETHREAD *Thread, PVOID *OpaqueContext){
  _ETHREAD *WorkOnBehalfThread; 
  UINT64 v5; 
  _EPROCESS *Process; 
  NTSTATUS v7; 
  UINT64 v9; 

  LODWORD(v9) = 0;
  WorkOnBehalfThread = PsGetWorkOnBehalfThread((VOID **)Thread, &v9);
  v5 = (UINT64)WorkOnBehalfThread;
  if( WorkOnBehalfThread )
    Process = WorkOnBehalfThread->Tcb.Process;
  else
    Process = Thread->Tcb.Process;
  v7 = IopReferenceIoAttributionFromProcess(Process, 0, OpaqueContext);
  if( (_DWORD)v9 )
    ObDereferenceObjectDeferDelete(v5);
  return v7;
}

Referenced by:

CcAsyncCopyRead
CcCopyReadEx
CcScheduleReadAheadEx
MiCheckAndUpdateIoAttribution