MiGetVadWakeList
__int64 *__fastcall MiGetVadWakeList(__int64 a1, int a2){
__int64 **v2;
__int64 *v3;
_EPROCESS *Process;
_MMSUPPORT_SHARED *p_Shared;
UINT8 CurrentIrql;
__int64 *v8;
__int64 *v10;
v2 = (__int64 **)(a1 + 56);
v3 = 0i64;
Process = KeGetCurrentThread()->ApcState.Process;
if( (Process->Vm.Instance.Flags._bf_0 & 7) == 2 )
p_Shared = (_MMSUPPORT_SHARED *)((char *)&stru_140C4DB30 + 6544);
else
p_Shared = &Process->Vm.Shared;
CurrentIrql = KeGetCurrentIrql();
__writecr8(2ui64);
ExpAcquireSpinLockExclusive((INT64 *)&p_Shared->WorkingSetLock, CurrentIrql);
p_Shared->GoodCitizenWaiting = 0;
v8 = *v2;
if( *v2 )
{
do
{
v10 = (__int64 *)*v8;
if( (a2 & (_DWORD)v8[8]) != 0 )
{
*v8 = (__int64)v3;
v3 = v8;
*v2 = v10;
}
else
{
v2 = (__int64 **)v8;
}
v8 = v10;
}
while( v10 );
}
MiUnlockWorkingSetExclusive(&Process->Vm.Instance, CurrentIrql);
return v3;
}Referenced by:
MiDeletePartialCloneVads
MiFreePlaceholderStorage
MiFreeRotateView
MiFreeVadEventBitmap
MiReleaseVadEventBlocks