MiAttachThreadDone

VOID __stdcall MiAttachThreadDone(_MMSUPPORT_INSTANCE *Vm){
  _KGATE *ExitOutswapGate; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  _MMSUPPORT_FLAGS Flags; 
  memset(&LockHandle, 0, sizeof(LockHandle));
  KeAcquireInStackQueuedSpinLock(&WorkerRoutine, &LockHandle);
  Flags = Vm->Flags;
  *((_BYTE *)&Flags.0 + 1) = *((_BYTE *)&Flags.0 + 1) & 0xF | (16 * ((*((_BYTE *)&Flags.0 + 1) >> 4) - 1));
  Vm->Flags.u1 = Flags.u1;
  ExitOutswapGate = Vm->ExitOutswapGate;
  if( ExitOutswapGate )
    KeSignalGate(ExitOutswapGate, 1i64);
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  __writecr8(LockHandle.OldIrql);
}

Referenced by:

MiSharePages
MiTrimSharedPageFromViews
MiUnlockStealVm
MmQueryCommitReleaseState
MmReleaseCommitForMemResetPages