MiEmptyAccessLogs
VOID __stdcall MiEmptyAccessLogs(PVOID Context){
PSLIST_ENTRY v1;
void *i;
__int64 NextProcess;
UINT64 v4;
_KPROCESS *v5;
INT64 v6;
INT64 v7;
UINT8 *v8;
void *j;
void *v10;
INT64 v11;
UINT8 *v12;
void *v13;
__int64 SessionVm;
INT64 v15;
UINT8 *v16;
INT64 *v17;
__int64 v18;
struct _KLOCK_QUEUE_HANDLE LockHandle;
_KAPC_STATE ApcState;
memset(&ApcState, 0, sizeof(ApcState));
memset(&LockHandle, 0, sizeof(LockHandle));
KeAcquireInStackQueuedSpinLock(&qword_140C4E580, &LockHandle);
if( (_DWORD)dword_140C4E568 )
{
stru_140C4E548.Parameter = 0i64;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
}
else
{
v1 = 0i64;
do
{
stru_140C4E548.Parameter = (void *)2;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
for( i = 0i64; ; i = v5 )
{
NextProcess = PsGetNextProcess(i);
v5 = (_EPROCESS *)NextProcess;
if( !NextProcess )
break;
v6 = NextProcess + 1664;
if( MiGetSharedVm(NextProcess + 1664)[5] )
{
KiStackAttachProcess((_KPROCESS *)v5, 0i64, &ApcState);
MiDrainSystemAccessLog(v6, v7, v8);
KiUnstackDetachProcess(&ApcState, 0i64);
}
}
for( j = 0i64; ; j = v13 )
{
LODWORD(v10) = MiGetNextSession(j, v4);
v13 = v10;
if( !v10 )
break;
if( MmAttachSession(v10, &ApcState) >= 0 )
{
SessionVm = MiGetSessionVm();
MiDrainSystemAccessLog(SessionVm, v15, v16);
MmDetachSession(v13, &ApcState);
}
}
v17 = &qword_140C4ED40;
v18 = 3i64;
do
{
if( v17[14] )
MiDrainSystemAccessLog((INT64)v17, v11, v12);
v17 += 40;
--v18;
}
while( v18 );
MiCheckAndProcessCcAccessLog(0i64, 1i64);
KeAcquireInStackQueuedSpinLock(&qword_140C4E580, &LockHandle);
}
while( stru_140C4E548.Parameter != (void *)2 );
if( !(_DWORD)dword_140C4E568 )
{
v1 = P;
P = 0i64;
}
stru_140C4E548.Parameter = 0i64;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
if( v1 )
ExFreePoolWithTag(v1, 0);
}
}Referenced by:
No references.