PfSnSectionInfoCleanupWorkItem
VOID __stdcall PfSnSectionInfoCleanupWorkItem(_PFSN_WORKITEM_CONTEXT *Context){
UINT8 v1;
__int64 v2;
_QWORD *v3;
__int64 v4;
__int64 v5;
_ETHREAD *CurrentThread;
unsigned __int32 v7;
__int64 v8;
void *v9;
__int64 v10;
UINT8 v11;
v2 = *((_QWORD *)Context + 4);
LOBYTE(Context) = 1;
v3 = *(_QWORD **)(v2 + 8);
v4 = v3[8];
v5 = v3[9];
PsSetCurrentThreadPrefetching((_ERESOURCE *)Context, v1);
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
while( 1 )
{
v7 = _InterlockedExchangeAdd((volatile signed __int32 *)(v2 + 28), 1u);
if( v7 >= *(_DWORD *)(v2 + 32) )
break;
v8 = v7;
v9 = *(void **)(v4 + 8i64 * v7);
if( v9 )
ExFreePoolWithTag(v9, 0);
v10 = *(unsigned int *)(v5 + 4 * v8);
if( (int)v10 >= 0 )
PfSnCleanupPrefetchSectionInfo(v3[7] + 56 * v10, (__int64)v3, 1);
}
KeLeaveCriticalRegionThread(KeGetCurrentThread());
PsSetCurrentThreadPrefetching(0i64, v11);
ExReleaseRundownProtection((_EX_RUNDOWN_REF *)v2);
}Referenced by:
No references.