xref: /reactos/sdk/include/xdk/cctypes.h (revision c2c66aff)
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