KeQueryOwnerMutant

VOID __stdcall KeQueryOwnerMutant(PKMUTANT Mutant, PCLIENT_ID ClientId){
  unsigned __int8 CurrentIrql; 
  _ETHREAD *OwnerThread; 

  ClientId->UniqueProcess = 0i64;
  ClientId->UniqueThread = 0i64;
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  KiAcquireKobjectLockSafe(Mutant);
  OwnerThread = Mutant->OwnerThread;
  if( OwnerThread )
    *ClientId = OwnerThread->Cid;
  _InterlockedAnd((volatile signed __int32 *)Mutant, 0xFFFFFF7F);
  __writecr8(CurrentIrql);
}

Referenced by:

NtQueryMutant