VOID
CcInitializeVacbs(
)
{
SIZE_T VacbBytes;
PVACB NextVacb;
// 根据全局信息 计算缓存 即除以256KB
// 初始化缓存信息参数 挂入队列 等待使用
CcNumberVacbs = (MmSizeOfSystemCacheInPages >> (VACB_OFFSET_SHIFT - PAGE_SHIFT)) - 2;
VacbBytes = CcNumberVacbs * sizeof(VACB);
CcVacbs = (PVACB) ExAllocatePoolWithTag( NonPagedPool, VacbBytes, 'aVcC' );
if (CcVacbs != NULL)
{
CcBeyondVacbs = (PVACB)((PCHAR)CcVacbs + VacbBytes);
RtlZeroMemory( CcVacbs, VacbBytes );
InitializeListHead( &CcVacbLru );
InitializeListHead( &CcVacbFreeList );
for (NextVacb = CcVacbs; NextVacb < CcBeyondVacbs; NextVacb++)
{
InsertTailList( &CcVacbFreeList, &NextVacb->LruList );
}
}
}