1 $if (_NTIFS_) 2 /* Common Cache Types */ 3 4 #define VACB_MAPPING_GRANULARITY (0x40000) 5 #define VACB_OFFSET_SHIFT (18) 6 7 typedef struct _PUBLIC_BCB { 8 CSHORT NodeTypeCode; 9 CSHORT NodeByteSize; 10 ULONG MappedLength; 11 LARGE_INTEGER MappedFileOffset; 12 } PUBLIC_BCB, *PPUBLIC_BCB; 13 14 typedef struct _CC_FILE_SIZES { 15 LARGE_INTEGER AllocationSize; 16 LARGE_INTEGER FileSize; 17 LARGE_INTEGER ValidDataLength; 18 } CC_FILE_SIZES, *PCC_FILE_SIZES; 19 20 typedef BOOLEAN 21 (NTAPI *PACQUIRE_FOR_LAZY_WRITE) ( 22 _In_ PVOID Context, 23 _In_ BOOLEAN Wait); 24 25 typedef VOID 26 (NTAPI *PRELEASE_FROM_LAZY_WRITE) ( 27 _In_ PVOID Context); 28 29 typedef BOOLEAN 30 (NTAPI *PACQUIRE_FOR_READ_AHEAD) ( 31 _In_ PVOID Context, 32 _In_ BOOLEAN Wait); 33 34 typedef VOID 35 (NTAPI *PRELEASE_FROM_READ_AHEAD) ( 36 _In_ PVOID Context); 37 38 typedef struct _CACHE_MANAGER_CALLBACKS { 39 PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite; 40 PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite; 41 PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead; 42 PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead; 43 } CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS; 44 45 typedef struct _CACHE_UNINITIALIZE_EVENT { 46 struct _CACHE_UNINITIALIZE_EVENT *Next; 47 KEVENT Event; 48 } CACHE_UNINITIALIZE_EVENT, *PCACHE_UNINITIALIZE_EVENT; 49 50 typedef VOID 51 (NTAPI *PDIRTY_PAGE_ROUTINE) ( 52 _In_ PFILE_OBJECT FileObject, 53 _In_ PLARGE_INTEGER FileOffset, 54 _In_ ULONG Length, 55 _In_ PLARGE_INTEGER OldestLsn, 56 _In_ PLARGE_INTEGER NewestLsn, 57 _In_ PVOID Context1, 58 _In_ PVOID Context2); 59 60 typedef VOID 61 (NTAPI *PFLUSH_TO_LSN) ( 62 _In_ PVOID LogHandle, 63 _In_ LARGE_INTEGER Lsn); 64 65 typedef VOID 66 (NTAPI *PCC_POST_DEFERRED_WRITE) ( 67 _In_ PVOID Context1, 68 _In_ PVOID Context2); 69 70 #define UNINITIALIZE_CACHE_MAPS (1) 71 #define DO_NOT_RETRY_PURGE (2) 72 #define DO_NOT_PURGE_DIRTY_PAGES (0x4) 73 74 #define CC_FLUSH_AND_PURGE_NO_PURGE (0x1) 75 $endif (_NTIFS_) 76