MiSessionUnlinkProcess

VOID __stdcall MiSessionUnlinkProcess(_MM_SESSION_SPACE *SessionGlobal, _EPROCESS *Process){
  _LIST_ENTRY *p_SessionProcessLinks; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *Blink; 
  _KLOCK_QUEUE_HANDLE LockHandle; 

  memset(&LockHandle, 0, sizeof(LockHandle));
  KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&stru_140C4DB30 + 522, &LockHandle);
  p_SessionProcessLinks = &Process->SessionProcessLinks;
  Flink = p_SessionProcessLinks->Flink;
  Blink = p_SessionProcessLinks->Blink;
  if( p_SessionProcessLinks->Flink->Blink != p_SessionProcessLinks || Blink->Flink != p_SessionProcessLinks )
    __fastfail(3u);
  Blink->Flink = Flink;
  Flink->Blink = Blink;
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  __writecr8(LockHandle.OldIrql);
}

Referenced by:

MiDereferenceSessionFinal