CcSerializeWithLazyWriter
CHAR __stdcall CcSerializeWithLazyWriter(INT64 a1, INT64 a2, UINT8 *a3){
CHAR v4;
__int64 v5;
_WORK_QUEUE_ENTRY *v7;
__int64 v8;
_WORK_QUEUE_ENTRY **v9;
_KLOCK_QUEUE_HANDLE LockHandle;
memset(&LockHandle, 0, sizeof(LockHandle));
v4 = 1;
if( (*(_DWORD *)(a2 + 152) & 0x20) != 0 )
{
KeAcquireInStackQueuedSpinLockAtDpcLevel((PKSPIN_LOCK)(a1 + 192), &LockHandle);
v5 = *(_QWORD *)(a2 + 496);
if( v5 )
{
v7 = (_WORK_QUEUE_ENTRY *)(v5 & 0xFFFFFFFFFFFFFFFEui64);
v8 = *(_QWORD *)v7;
if( *(_WORK_QUEUE_ENTRY **)(*(_QWORD *)v7 + 8i64) != v7
|| (v9 = (_WORK_QUEUE_ENTRY **)*((_QWORD *)v7 + 1), *v9 != v7) )
{
__fastfail(3u);
}
*v9 = (_WORK_QUEUE_ENTRY *)v8;
*(_QWORD *)(v8 + 8) = v9;
*((_QWORD *)v7 + 1) = 0i64;
*(_QWORD *)v7 = 0i64;
*(_QWORD *)(a2 + 496) = 0i64;
*(_DWORD *)(a2 + 152) &= ~0x20u;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
CcFreeWorkQueueEntry(v7);
}
else
{
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
return 0;
}
}
return v4;
}Referenced by:
CcFlushCachePriv