CcAddDirtyPagesToExternalCache
VOID __stdcall CcAddDirtyPagesToExternalCache(PVOID ExternalCacheContext, UINT64 Pages){
UINT64 v2;
__int64 v4;
unsigned int v5;
__int64 v6;
struct _KLOCK_QUEUE_HANDLE LockHandle;
v2 = Pages;
memset(&LockHandle, 0, sizeof(LockHandle));
v4 = *((_QWORD *)PspSystemPartition + 1);
if( Pages )
{
do
{
v5 = v2;
if( v2 > 0xFFFFFFFF )
v5 = -1;
v2 -= v5;
KeAcquireInStackQueuedSpinLock((UINT64 *)(v4 + 128), &LockHandle);
v6 = *((_QWORD *)ExternalCacheContext + 1);
if( !v6 )
{
CcScheduleLazyWriteScan(v4, 0);
v6 = *((_QWORD *)ExternalCacheContext + 1);
}
*((_QWORD *)ExternalCacheContext + 1) = v5 + v6;
CcChargeDirtyPages(0i64, 0i64, 0i64, v5);
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
}
while( v2 );
}
}Referenced by:
No references.