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.