CcFreeWorkQueueEntry
INT8 __stdcall CcFreeWorkQueueEntry(INT64 ListEntry){
struct _KPRCB *CurrentPrcb;
INT64 v3;
__int64 v4;
CurrentPrcb = KeGetCurrentPrcb();
v3 = *(_QWORD *)(ListEntry + 128);
v4 = *((_QWORD *)CurrentPrcb + 268);
++*(_DWORD *)(v4 + 28);
if( *(_WORD *)v4 < *(_WORD *)(v4 + 16)
|| (++*(_DWORD *)(v4 + 32),
v4 = *((_QWORD *)CurrentPrcb + 269),
++*(_DWORD *)(v4 + 28),
*(_WORD *)v4 < *(_WORD *)(v4 + 16)) )
{
RtlpInterlockedPushEntrySList((PSLIST_HEADER)v4, (PSLIST_ENTRY)ListEntry);
}
else
{
++*(_DWORD *)(v4 + 32);
(*(void(__fastcall **)(INT64))(v4 + 56))(ListEntry);
}
return CcDereferencePartition(v3);
}Referenced by:
CcAsyncReadWorker
CcCompleteAsyncReadWorker
CcMapAndCopyInToCache
CcPostWorkQueueAsyncRead
CcSerializeWithLazyWriter
CcUninitializeCacheMap
CcWaitForUninitializeCacheMap
CcWorkerThread
CcWriteBehind