MiSignalNonPagedPoolWatchers
VOID __fastcall MiSignalNonPagedPoolWatchers(INT64 a1){
UINT64 v1;
UINT8 v2;
UINT8 v3;
__int64 v4;
unsigned __int64 v5;
struct _KLOCK_QUEUE_HANDLE LockHandle;
memset(&LockHandle, 0, sizeof(LockHandle));
KeAcquireInStackQueuedSpinLock(&qword_140C51E00, &LockHandle);
if( qword_140C50BD0 )
{
v4 = *(_QWORD *)MiState;
v5 = qword_140C4C608;
if( qword_140C4C608 >= (unsigned __int64)(*(_QWORD *)MiState - 5120i64) )
{
if( qword_140C50BD0->Header.SignalState )
KeResetEvent(qword_140C50BD0, v1, v2, v3, (IRP *)LockHandle.LockQueue.Next);
}
else if( !qword_140C50BD0->Header.SignalState )
{
KeSetEvent(qword_140C50BD0, 0);
}
if( v5 >= v4 - 2048 )
{
if( !VirtualAddress->Header.SignalState )
KeSetEvent(VirtualAddress, 0);
}
else if( VirtualAddress->Header.SignalState )
{
KeResetEvent(VirtualAddress, v1, v2, v3, (IRP *)LockHandle.LockQueue.Next);
}
}
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
}Referenced by:
MiInitializeMemoryEvents
MiInitializeNonPagedPoolThresholds