MiUpdateAvailableEvents
VOID __stdcall MiUpdateAvailableEvents(_MI_PARTITION *Partition){
UINT64 v2;
UINT8 v3;
UINT8 v4;
unsigned __int64 v5;
struct _KEVENT *v6;
UINT64 v7;
UINT8 v8;
UINT8 v9;
struct _KEVENT *v10;
struct _KLOCK_QUEUE_HANDLE LockHandle;
memset(&LockHandle, 0, sizeof(LockHandle));
KeAcquireInStackQueuedSpinLock((UINT64 *)Partition + 616, &LockHandle);
v5 = *((_QWORD *)Partition + 888);
v6 = (struct _KEVENT *)*((_QWORD *)Partition + 35);
if( v5 <= *((_QWORD *)Partition + 646) )
KeSetEvent(v6, 0);
else
KeResetEvent(v6, v2, v3, v4, (IRP *)LockHandle.LockQueue.Next);
v10 = (struct _KEVENT *)*((_QWORD *)Partition + 36);
if( v5 <= *((_QWORD *)Partition + 647) )
KeResetEvent(v10, v7, v8, v9, (IRP *)LockHandle.LockQueue.Next);
else
KeSetEvent(v10, 0);
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
}Referenced by:
MiDecreaseAvailablePages
MiIncreaseAvailablePages
MiInitializeMemoryEvents
MiInsertPageInFreeOrZeroedList
MiInsertPageInList
MiInsertProtectedStandbyPage
MiUnlinkFreeOrZeroedPage
MiUnlinkPageFromList
MiUpdatePageThresholdsDpc