MiEmptyAccessLogs
VOID __stdcall MiEmptyAccessLogs(VOID *Context){
void *v1;
_EPROCESS *i;
_LIST_ENTRY *NextProcess;
UINT64 v4;
_LIST_ENTRY *v5;
_MMSUPPORT_INSTANCE *v6;
VOID *j;
void *NextSession;
void *v9;
INT64 v10;
INT16 v11;
_MMSUPPORT_INSTANCE *SessionVm;
_MMSUPPORT_INSTANCE *v13;
__int64 v14;
_KLOCK_QUEUE_HANDLE LockHandle;
_KAPC_STATE ApcState;
memset(&ApcState, 0, sizeof(ApcState));
memset(&LockHandle, 0, sizeof(LockHandle));
KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&stru_140C4DB30 + 330, &LockHandle);
if( *(&stru_140C4DB30 + 654) )
{
*(&stru_140C4DB30 + 326) = 0i64;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
}
else
{
v1 = 0i64;
do
{
*(&stru_140C4DB30 + 326) = 2i64;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
for( i = 0i64; ; i = (_EPROCESS *)v5 )
{
NextProcess = PsGetNextProcess(i);
v5 = NextProcess;
if( !NextProcess )
break;
v6 = (_MMSUPPORT_INSTANCE *)&NextProcess[104];
if( MiGetSharedVm((_MMSUPPORT_INSTANCE *)&NextProcess[104])->AccessLog )
{
KiStackAttachProcess(v5, 0i64, &ApcState);
MiDrainSystemAccessLog(v6);
KiUnstackDetachProcess(&ApcState, 0i64);
}
}
for( j = 0i64; ; j = v9 )
{
NextSession = MiGetNextSession(j, v4);
v9 = NextSession;
if( !NextSession )
break;
if( MmAttachSession(NextSession, &ApcState) >= 0 )
{
SessionVm = MiGetSessionVm(v10, v4, v11);
MiDrainSystemAccessLog(SessionVm);
MmDetachSession(v9, &ApcState);
}
}
v13 = (_MMSUPPORT_INSTANCE *)((char *)&stru_140C4DB30 + 4624);
v14 = 3i64;
do
{
if( v13->MinimumWorkingSetSize )
MiDrainSystemAccessLog(v13);
v13 = (_MMSUPPORT_INSTANCE *)((char *)v13 + 320);
--v14;
}
while( v14 );
MiCheckAndProcessCcAccessLog(0i64, 1ui64);
KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&stru_140C4DB30 + 330, &LockHandle);
}
while( *(&stru_140C4DB30 + 326) != 2i64 );
if( !*(&stru_140C4DB30 + 654) )
{
v1 = (void *)*(&stru_140C4DB30 + 378);
*(&stru_140C4DB30 + 378) = 0i64;
}
*(&stru_140C4DB30 + 326) = 0i64;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
if( v1 )
ExFreePoolWithTag(v1, 0);
}
}Referenced by:
No references.