MiWaitForVadDeletion
VOID __stdcall MiWaitForVadDeletion(_MMVAD_SHORT *Vad){
_ETHREAD *CurrentThread;
CHAR v3;
__int64 v4[10];
memset(v4, 0i64, 0x48u);
if( Vad->VadNode.ParentValue != -1i64 )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
HIDWORD(v4[1]) = 0;
v4[3] = (__int64)&v4[2];
LODWORD(v4[8]) = 1;
v4[2] = (__int64)&v4[2];
LOWORD(v4[1]) = 263;
BYTE2(v4[1]) = 6;
MiInsertVadEvent((__int64)Vad, v4, 1);
MiUnlockVad(CurrentThread, Vad);
KeWaitForGate((_KGATE *)&v4[1], WrVirtualMemory, v3);
--CurrentThread->Tcb.SpecialApcDisable;
ExAcquirePushLockExclusiveEx(&Vad->PushLock, 0i64);
CurrentThread->$84F33738BEE95ACDF5C5BF1C8FDC7C8C::_bf_0 |= 0x80u;
}
}Referenced by:
MiCleanVad
MiLockVadRange
MiObtainReferencedSecureVad
MiObtainReferencedVadEx
MmQueryVirtualMemory