119 "CCPF: InitializePrefetecher()\n");
171 Private = Private->
Flink)
210 if (IdenticalStreamFileObject)
211 Map = IdenticalStreamFileObject->SectionObjectPointer->SharedCacheMap;
214 DPRINT1(
"Linking SFO %x to previous SFO %x through cache map %x #\n",
216 IdenticalStreamFileObject,
223 DPRINT(
"Initializing file object for (%p) %wZ\n",
228 FileObject->SectionObjectPointer->SharedCacheMap = Map;
235 DPRINT(
"FileSizes->ValidDataLength %I64x\n",
241 DPRINT(
"New Map %p\n", Map);
246 if (!PrivateCacheMap)
249 sizeof(*PrivateCacheMap));
251 FileObject->PrivateCacheMap = PrivateCacheMap;
256 PrivateCacheMap->
Map = Map;
277 for (
Count = 0,
Entry = Map->AssociatedBcb.Flink;
278 Entry != &Map->AssociatedBcb;
294 DPRINT(
"Uninitializing file object for %wZ SectionObjectPointer %x\n",
310 ASSERT(!Map || Map == PrivateCacheMap->Map);
316 if (
IsListEmpty(&PrivateCacheMap->Map->PrivateCacheMaps))
319 while (!
IsListEmpty(&PrivateCacheMap->Map->AssociatedBcb))
340 DPRINT(
"Uninit complete\n");
424 PVOID PinnedBcb, PinnedBuffer;
427 DPRINT(
"S %I64x E %I64x\n",
428 StartOffset->QuadPart,
429 EndOffset->QuadPart);
451 DPRINT(
"Zero last half %I64x %lx\n",
468 DPRINT1(
"RtlZeroMemory(%p, %lx)\n",
495 DPRINT(
"Zero full page %I64x\n",
515 DPRINT(
"Zero first half %I64x %lx\n",
531 DPRINT1(
"RtlZeroMemory(%x,%x)\n", ZeroBuf, ToWrite);
559 if (
Bcb->FileOffset.QuadPart +
Bcb->Length >= LowerBound.
QuadPart &&
562 DPRINT(
"Bcb #%x (@%I64x)\n",
564 Bcb->FileOffset.QuadPart);
573 Bcb->FileOffset.QuadPart +
Bcb->Length);
591 ListEntry = ListEntry->
Flink;
BOOLEAN NTAPI CcpUnpinData(PNOCC_BCB Bcb, BOOLEAN ActuallyRelease)
CLIENT_ID CcUnmapThreadId
BOOLEAN NTAPI CcPurgeCacheSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN UninitializeCacheMaps)
PFILE_OBJECT NTAPI MmGetFileObjectForSection(IN PVOID Section)
_Must_inspect_result_ typedef _In_ PVOID Unused
DECLSPEC_NORETURN NTSYSAPI VOID NTAPI RtlRaiseStatus(_In_ NTSTATUS Status)
VOID NTAPI CcSetDirtyPageThreshold(IN PFILE_OBJECT FileObject, IN ULONG DirtyPageThreshold)
#define STATUS_INSUFFICIENT_RESOURCES
HANDLE CcLazyWriteThreadHandle
_In_ ULONG _In_ ULONG _In_ ULONG Length
PFILE_OBJECT CcpFindOtherStreamFileObject(PFILE_OBJECT FileObject)
FAST_MUTEX CompletedTracesLock
VOID NTAPI CcpUnmapThread(PVOID Unused)
IN PVCB IN VBO IN ULONG OUT PBCB * Bcb
#define ROUND_UP(n, align)
_In_ WDFDPC _In_ BOOLEAN Wait
#define CACHE_NUM_SECTIONS
#define CcpFlushCache(M, F, L, I, D)
BOOLEAN NTAPI CcpAcquireFileLock(PNOCC_CACHE_MAP Map)
#define PAGE_ROUND_DOWN(x)
BOOLEAN NTAPI CcInitializeCacheManager(VOID)
NTSYSAPI ULONG __cdecl DbgPrintEx(_In_ ULONG ComponentId, _In_ ULONG Level, _In_z_ _Printf_format_string_ PCSTR Format,...)
CLIENT_ID CcLazyWriteThreadId
VOID CcpReferenceCache(ULONG Sector)
static CC_FILE_SIZES FileSizes
#define InsertTailList(ListHead, Entry)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
PFILE_OBJECT NTAPI CcGetFileObjectFromBcb(PVOID Bcb)
NOCC_BCB CcCacheSections[CACHE_NUM_SECTIONS]
BOOLEAN NTAPI CcGetFileSizes(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes)
_Must_inspect_result_ _In_ PDEVICE_OBJECT _In_ PSECTION_OBJECT_POINTERS SectionObjectPointer
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
PFILE_OBJECT NTAPI CcGetFileObjectFromSectionPtrs(IN PSECTION_OBJECT_POINTERS SectionObjectPointer)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
BOOLEAN NTAPI CcZeroData(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER StartOffset, IN PLARGE_INTEGER EndOffset, IN BOOLEAN Wait)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
FAST_MUTEX GlobalPageOperation
struct _LIST_ENTRY * Flink
LIST_ENTRY CompletedTraces
const struct winhelp_callbacks Callbacks
PROS_SECTION_OBJECT SectionObject
#define NT_SUCCESS(StatCode)
VOID NTAPI CcInitializeCacheMap(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes, IN BOOLEAN PinAccess, IN PCACHE_MANAGER_CALLBACKS Callbacks, IN PVOID LazyWriteContext)
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)
#define ObDereferenceObject
PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite
LIST_ENTRY PrivateCacheMaps
VOID NTAPI CcpLazyWriteThread(PVOID Unused)
VOID NTAPI CcpReleaseFileLock(PNOCC_CACHE_MAP Map)
PRTL_BITMAP CcCacheBitmap
#define MiSimpleWrite(F, O, B, L, R)
#define ExAllocatePool(type, size)
LARGE_INTEGER ValidDataLength
LIST_ENTRY CcpAllSharedCacheMaps
VOID NTAPI CcPfInitializePrefetcher(VOID)
NTSTATUS NTAPI MmExtendCacheSection(PROS_SECTION_OBJECT Section, PLARGE_INTEGER NewSize, BOOLEAN ExtendFile)
#define KeInitializeEvent(pEvt, foo, foo2)
LARGE_INTEGER AllocationSize
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
VOID CcpDereferenceCache(ULONG Sector, BOOLEAN Immediate)
struct _NOCC_PRIVATE_CACHE_MAP NOCC_PRIVATE_CACHE_MAP
BOOLEAN NTAPI CcUninitializeCacheMap(IN PFILE_OBJECT FileObject, IN OPTIONAL PLARGE_INTEGER TruncateSize, IN OPTIONAL PCACHE_UNINITIALIZE_EVENT UninitializeEvent)
PFSN_PREFETCHER_GLOBALS CcPfGlobals
_In_ PFCB _In_ LONGLONG FileOffset
#define InitializeListHead(ListHead)
VOID NTAPI CcSetFileSizes(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes)
ULONG NTAPI CcpCountCacheSections(IN PNOCC_CACHE_MAP Map)
CACHE_MANAGER_CALLBACKS Callbacks
struct _NOCC_BCB * PNOCC_BCB
#define UNIMPLEMENTED_DBGBREAK(...)
#define ObReferenceObject
PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite
#define RtlZeroMemory(Destination, Length)
#define RtlCopyMemory(Destination, Source, Length)
LONG CcOutstandingDeletes
ULONG ReadAheadGranularity
#define DPFLTR_TRACE_LEVEL
BOOLEAN NTAPI CcPreparePinWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Zero, IN ULONG Flags, OUT PVOID *Bcb, OUT PVOID *Buffer)
HANDLE CcUnmapThreadHandle
struct _NOCC_PRIVATE_CACHE_MAP * PNOCC_PRIVATE_CACHE_MAP
base of all file and directory entries
struct _NOCC_CACHE_MAP * PNOCC_CACHE_MAP
NTSTATUS NTAPI MiSimpleRead(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset, PVOID Buffer, ULONG Length, BOOLEAN Paging, PIO_STATUS_BLOCK ReadStatus)
PULONG MinorVersion OPTIONAL