KeAttachProcess

VOID __stdcall KeAttachProcess(_EPROCESS *Process){
  _ETHREAD *CurrentThread; 
  _EPROCESS *v3; 
  UINT8 CurrentIrql; 
  UINT64 SpinCount; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v3 = CurrentThread->Tcb.ApcState.Process;
  if( v3 != Process )
  {
    if( CurrentThread->Tcb.ApcStateIndex
      || (KeGetPcr()->Prcb._bf_0 & 0x10001) != 0
      || (Process->Pcb._bf_0 & 0x400) != 0 )
    {
      KeBugCheckEx(5u, Process, v3, (PVOID)CurrentThread->Tcb.ApcStateIndex, (PVOID)(KeGetPcr()->Prcb._bf_0 & 0x10001));
    }
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(2ui64);
    LODWORD(SpinCount) = 0;
    while( _interlockedbittestandset64((volatile signed __int32 *)&CurrentThread->Tcb.ThreadLock, 0i64) )
    {
      do
        KeYieldProcessorEx(&SpinCount);
      while( CurrentThread->Tcb.ThreadLock );
    }
    KiAttachProcess(&CurrentThread->Tcb, &Process->Pcb, CurrentIrql, 0i64, &CurrentThread->Tcb.SavedApcState);
  }
}

Referenced by:

KiCompleteKernelInit
PopGracefulShutdown