6 #define _CC_DEBUG_ 0x00 11 #define CC_API_DEBUG 0x01 17 #ifdef NEW_DEBUG_SYSTEM_IMPLEMENTED // enable when Debug Filters are implemented 18 #define CCTRACE(x, ...) \ 20 DbgPrintEx("%s [%.16s] - ", \ 22 PsGetCurrentProcess()->ImageFileName); \ 23 DbgPrintEx(__VA_ARGS__); \ 26 #define CCTRACE(x, ...) \ 27 if (x & CcRosTraceLevel) \ 29 DbgPrint("%s [%.16s] - ", \ 31 PsGetCurrentProcess()->ImageFileName); \ 32 DbgPrint(__VA_ARGS__); \ 36 #define CCTRACE(x, fmt, ...) DPRINT(fmt, ##__VA_ARGS__) 201 #define READAHEAD_DISABLED 0x1 202 #define WRITEBEHIND_DISABLED 0x2 203 #define SHARED_CACHE_MAP_IN_CREATION 0x4 204 #define SHARED_CACHE_MAP_IN_LAZYWRITE 0x8 286 #define NODE_TYPE_DEFERRED_WRITE 0x02FC 287 #define NODE_TYPE_PRIVATE_MAP 0x02FE 288 #define NODE_TYPE_SHARED_MAP 0x02FF 401 PVOID LazyWriterContext
469 #define CcBugCheck(A, B, C) KeBugCheckEx(CACHE_MANAGER, BugCheckFileId | ((ULONG)(__LINE__)), A, B, C) 472 #define CcRosVacbIncRefCount(vacb) CcRosVacbIncRefCount_(vacb,__FILE__,__LINE__) 473 #define CcRosVacbDecRefCount(vacb) CcRosVacbDecRefCount_(vacb,__FILE__,__LINE__) 474 #define CcRosVacbGetRefCount(vacb) CcRosVacbGetRefCount_(vacb,__FILE__,__LINE__) 477 CcRosVacbIncRefCount_(
483 CcRosVacbDecRefCount_(
489 CcRosVacbGetRefCount_(
495 #define CcRosVacbIncRefCount(vacb) InterlockedIncrement((PLONG)&(vacb)->ReferenceCount) 510 #define CcRosVacbGetRefCount(vacb) InterlockedCompareExchange((PLONG)&(vacb)->ReferenceCount, 0, 0)
struct _INTERNAL_BCB * PINTERNAL_BCB
ULONG CcDirtyPageThreshold
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST NPAGED_LOOKASIDE_LIST
_In_ ULONG _In_ ULONG _In_ ULONG Length
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
FAST_MUTEX CompletedTracesLock
struct _PF_SECTION_INFO PF_SECTION_INFO
struct _LAZY_WRITER * PLAZY_WRITER
LARGE_INTEGER SectionSize
struct _PFSN_TRACE_HEADER PFSN_TRACE_HEADER
LIST_ENTRY SharedCacheMapLinks
_In_ WDFDPC _In_ BOOLEAN Wait
struct _PF_SCENARIO_ID PF_SCENARIO_ID
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL * MdlChain
PPFSN_TRACE_HEADER SystemWideTrace
NTSTATUS CcRosFlushDirtyPages(ULONG Target, PULONG Count, BOOLEAN Wait, BOOLEAN CalledFromLazy)
struct _PF_TRACE_HEADER PF_TRACE_HEADER
VOID CcPostWorkQueue(IN PWORK_QUEUE_ENTRY WorkItem, IN PLIST_ENTRY WorkQueue)
LIST_ENTRY CompletedTracesLink
VOID NTAPI CcPfInitializePrefetcher(VOID)
VOID NTAPI CcShutdownLazyWriter(VOID)
struct _WORK_QUEUE_ENTRY WORK_QUEUE_ENTRY
LIST_ENTRY DirtyVacbListHead
static CC_FILE_SIZES FileSizes
PROS_VACB CcRosLookupVacb(PROS_SHARED_CACHE_MAP SharedCacheMap, LONGLONG FileOffset)
struct _PF_SCENARIO_ID * PPF_SCENARIO_ID
LIST_ENTRY CcRegularWorkQueue
LIST_ENTRY CcExpressWorkQueue
NTSTATUS CcRosInitializeFileCache(PFILE_OBJECT FileObject, PCC_FILE_SIZES FileSizes, BOOLEAN PinAccess, PCACHE_MANAGER_CALLBACKS CallBacks, PVOID LazyWriterContext)
NTSTATUS CcRosReleaseFileCache(PFILE_OBJECT FileObject)
struct _PFSN_TRACE_HEADER * PPFSN_TRACE_HEADER
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
_Inout_ PMDL MemoryDescriptorList
PF_LOG_ENTRY Entries[ANYSIZE_ARRAY]
VOID CcRosReferenceCache(PFILE_OBJECT FileObject)
LIST_ENTRY CacheMapVacbListEntry
struct _PF_LOG_ENTRY PF_LOG_ENTRY
VOID CcRosMarkDirtyVacb(PROS_VACB Vacb)
struct _PF_LOG_ENTRY * PPF_LOG_ENTRY
SHARED_CACHE_MAP * SharedCacheMap
KSPIN_LOCK CcDeferredWriteSpinLock
_Reserved_ PVOID Reserved
PCACHE_MANAGER_CALLBACKS Callbacks
struct _WORK_QUEUE_ENTRY::@1699::@1700 Read
VOID NTAPI CcScanDpc(PKDPC Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
PROS_SHARED_CACHE_MAP SharedCacheMap
NTSTATUS CcRosReleaseVacb(PROS_SHARED_CACHE_MAP SharedCacheMap, PROS_VACB Vacb, BOOLEAN Dirty, BOOLEAN Mapped)
LIST_ENTRY CacheMapVacbListHead
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
struct _ROS_VACB ROS_VACB
KSPIN_LOCK ActiveTracesLock
FORCEINLINE BOOLEAN IsPointInRange(_In_ LONGLONG Offset1, _In_ LONGLONG Length1, _In_ LONGLONG Point)
NTSTATUS CcRosFlushVacb(_In_ PROS_VACB Vacb, _Out_opt_ PIO_STATUS_BLOCK Iosb)
struct _WORK_QUEUE_ENTRY::@1699::@1703 Notification
LIST_ENTRY CcDeferredWrites
LIST_ENTRY CompletedTraces
BOOLEAN CcInitializeCacheManager(VOID)
LIST_ENTRY CcPostTickWorkQueue
volatile ULONG ReferenceCount
NTSTATUS CcRosGetVacb(PROS_SHARED_CACHE_MAP SharedCacheMap, LONGLONG FileOffset, PROS_VACB *Vacb)
struct _WORK_QUEUE_ENTRY * PWORK_QUEUE_ENTRY
LIST_ENTRY CcIdleWorkerThreadList
LIST_ENTRY TraceBuffersLink
struct _ROS_SHARED_CACHE_MAP ROS_SHARED_CACHE_MAP
FORCEINLINE ULONG CcRosVacbDecRefCount(PROS_VACB vacb)
struct _PFSN_TRACE_DUMP * PPFSN_TRACE_DUMP
struct _PFSN_PREFETCHER_GLOBALS PFSN_PREFETCHER_GLOBALS
ULONG CcPinMappedDataCount
#define InterlockedDecrement
VOID CcScheduleLazyWriteScan(BOOLEAN NoDelay)
BOOLEAN CcRosEnsureVacbResident(_In_ PROS_VACB Vacb, _In_ BOOLEAN Wait, _In_ BOOLEAN NoRead, _In_ ULONG Offset, _In_ ULONG Length)
NTSTATUS CcRosRequestVacb(PROS_SHARED_CACHE_MAP SharedCacheMap, LONGLONG FileOffset, PROS_VACB *Vacb)
VOID CcPostDeferredWrites(VOID)
VOID NTAPI CcMdlReadComplete2(IN PFILE_OBJECT FileObject, IN PMDL MemoryDescriptorList)
struct _PFSN_LOG_ENTRIES PFSN_LOG_ENTRIES
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
FORCEINLINE BOOLEAN DoRangesIntersect(_In_ LONGLONG Offset1, _In_ LONGLONG Length1, _In_ LONGLONG Offset2, _In_ LONGLONG Length2)
struct _PFSN_LOG_ENTRIES * PPFSN_LOG_ENTRIES
_In_ ULONG _In_ ULONG Offset
struct _WORK_QUEUE_ENTRY::@1699::@1701 Write
VOID NTAPI CcInitView(VOID)
PKEVENT CompletedTracesEvent
LARGE_INTEGER CcIdleDelay
PRIVATE_CACHE_MAP PrivateCacheMap
struct _PF_TRACE_HEADER * PPF_TRACE_HEADER
struct _ROS_VACB * PROS_VACB
union _WORK_QUEUE_ENTRY::@1699 Parameters
_In_ PFCB _In_ LONGLONG FileOffset
struct _PFSN_PREFETCHER_GLOBALS * PPFSN_PREFETCHER_GLOBALS
VOID CcRosUnmarkDirtyVacb(PROS_VACB Vacb, BOOLEAN LockViews)
struct _ROS_SHARED_CACHE_MAP * PROS_SHARED_CACHE_MAP
struct _PFSN_TRACE_DUMP PFSN_TRACE_DUMP
NPAGED_LOOKASIDE_LIST CcTwilightLookasideList
VOID NTAPI CcShutdownSystem(VOID)
LIST_ENTRY DirtyVacbListEntry
VOID CcPerformReadAhead(IN PFILE_OBJECT FileObject)
struct _LAZY_WRITER LAZY_WRITER
enum _WORK_QUEUE_FUNCTIONS WORK_QUEUE_FUNCTIONS
LARGE_INTEGER ValidDataLength
VOID CcRosDereferenceCache(PFILE_OBJECT FileObject)
struct _PF_SECTION_INFO * PPF_SECTION_INFO
NTSTATUS CcRosInternalFreeVacb(IN PROS_VACB Vacb)
enum _WORK_QUEUE_FUNCTIONS * PWORK_QUEUE_FUNCTIONS
_Must_inspect_result_ _In_ PWDF_WORKITEM_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWORKITEM * WorkItem
VOID NTAPI CcInitCacheZeroPage(VOID)
LIST_ENTRY WorkQueueLinks
ULONG CcNumberWorkerThreads
VOID NTAPI CcWorkerThread(PVOID Parameter)
struct _INTERNAL_BCB INTERNAL_BCB
VOID NTAPI CcMdlWriteComplete2(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain)
LIST_ENTRY VacbLruListEntry
_In_opt_ PVOID DeferredContext