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