MiWaitForAvailablePages
NTSTATUS __fastcall MiWaitForAvailablePages(UINT64 *a1, LARGE_INTEGER *a2){
UINT64 v4;
UINT8 v5;
UINT8 v6;
NTSTATUS result;
IRP *Timeout;
struct _KLOCK_QUEUE_HANDLE LockHandle;
memset(&LockHandle, 0, sizeof(LockHandle));
KeAcquireInStackQueuedSpinLock(a1 + 616, &LockHandle);
if( a1[888] < 0x420 )
{
KeResetEvent(a1 + 625, v4, v5, v6, Timeout);
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
return KeWaitForSingleObject(a1 + 625, WrFreePage, 0, 0, a2);
}
else
{
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
result = KiIrqlFlags;
__writecr8(LockHandle.OldIrql);
}
return result;
}Referenced by:
MiDelayFaultingThread