b93ba6f931dd9cd1f0f951310e868e85604ed86a
[reactos.git] / include / ddk / ccfuncs.h
1
2 #ifndef _NTOS_CCFUNCS_H
3 #define _NTOS_CCFUNCS_H
4 /* $Id$ */
5
6 /* exported variables */
7 /*
8 CcFastMdlReadWait
9 CcFastReadNotPossible
10 CcFastReadWait
11 */
12
13 /* for CcPin*() */
14 #define PIN_WAIT                         (1)    /* Waiting allowed */
15 #define PIN_EXCLUSIVE                    (2)    /* Exclusive Bcb access; default is shared; PIN_WAIT required */
16 #define PIN_NO_READ                      (4)    /* Do not yet map the data; does it hurt? PIN_WAIT required */
17 #define PIN_IF_BCB                       (8)    /* Never created new Bcb; FAIL if not yet existing */
18
19 /* for CcMap*() */
20 #define MAP_WAIT                         (1)    /* Waiting allowed */
21 #define MAP_NO_READ                      (16)   /* Do not yet map the data; does it hurt? */
22
23
24 BOOLEAN
25 STDCALL
26 CcCanIWrite (
27         IN      PFILE_OBJECT    FileObject,
28         IN      ULONG           BytesToWrite,
29         IN      BOOLEAN         Wait,
30         IN      BOOLEAN         Retrying
31         );
32
33 BOOLEAN
34 STDCALL
35 CcCopyRead (
36         IN      PFILE_OBJECT            FileObject,
37         IN      PLARGE_INTEGER          FileOffset,
38         IN      ULONG                   Length,
39         IN      BOOLEAN                 Wait,
40         OUT     PVOID                   Buffer,
41         OUT     PIO_STATUS_BLOCK        IoStatus
42         );
43
44 BOOLEAN
45 STDCALL
46 CcCopyWrite (
47         IN      PFILE_OBJECT            FileObject,
48         IN      PLARGE_INTEGER          FileOffset,
49         IN      ULONG                   Length,
50         IN      BOOLEAN                 Wait,
51         IN      PVOID                   Buffer
52         );
53
54 VOID
55 STDCALL
56 CcDeferWrite (
57         IN      PFILE_OBJECT            FileObject,
58         IN      PCC_POST_DEFERRED_WRITE PostRoutine,
59         IN      PVOID                   Context1,
60         IN      PVOID                   Context2,
61         IN      ULONG                   BytesToWrite,
62         IN      BOOLEAN                 Retrying
63         );
64
65 BOOLEAN
66 STDCALL
67 CcFastCopyRead (
68         IN      PFILE_OBJECT            FileObject,
69         IN      ULONG                   FileOffset,
70         IN      ULONG                   Length,
71         IN      ULONG                   PageCount,
72         OUT     PVOID                   Buffer,
73         OUT     PIO_STATUS_BLOCK        IoStatus
74         );
75
76 BOOLEAN
77 STDCALL
78 CcFastCopyWrite (
79         IN      PFILE_OBJECT            FileObject,
80         IN      PLARGE_INTEGER          FileOffset,
81         IN      ULONG                   Length,
82         IN      PVOID                   Buffer
83         );
84
85 VOID
86 STDCALL
87 CcFlushCache (
88         IN      PSECTION_OBJECT_POINTERS        SectionObjectPointer,
89         IN      PLARGE_INTEGER                  FileOffset OPTIONAL,
90         IN      ULONG                           Length,
91         OUT     PIO_STATUS_BLOCK                IoStatus OPTIONAL
92         );
93
94 LARGE_INTEGER
95 STDCALL
96 CcGetDirtyPages (
97         IN      PVOID                   LogHandle,
98         IN      PDIRTY_PAGE_ROUTINE     DirtyPageRoutine,
99         IN      PVOID                   Context1,
100         IN      PVOID                   Context2
101         );
102
103 PFILE_OBJECT
104 STDCALL
105 CcGetFileObjectFromBcb (
106         IN      PVOID   Bcb
107         );
108
109 PFILE_OBJECT
110 STDCALL
111 CcGetFileObjectFromSectionPtrs (
112         IN      PSECTION_OBJECT_POINTERS        SectionObjectPointer
113         );
114
115 LARGE_INTEGER
116 STDCALL
117 CcGetLsnForFileObject (
118         IN      PFILE_OBJECT    FileObject,
119         OUT     PLARGE_INTEGER  OldestLsn OPTIONAL
120         );
121
122 VOID
123 STDCALL
124 CcInitializeCacheMap (
125         IN      PFILE_OBJECT                    FileObject,
126         IN      PCC_FILE_SIZES                  FileSizes,
127         IN      BOOLEAN                         PinAccess,
128         IN      PCACHE_MANAGER_CALLBACKS        CallBacks,
129         IN      PVOID                           LazyWriterContext
130         );
131
132 BOOLEAN
133 STDCALL
134 CcIsThereDirtyData (
135         IN      PVPB    Vpb
136         );
137
138 BOOLEAN
139 STDCALL
140 CcMapData (
141         IN      PFILE_OBJECT            FileObject,
142         IN      PLARGE_INTEGER          FileOffset,
143         IN      ULONG                   Length,
144         IN      ULONG                   Flags,
145         OUT     PVOID                   * Bcb,
146         OUT     PVOID                   * Buffer
147         );
148
149 VOID
150 STDCALL
151 CcMdlRead (
152         IN      PFILE_OBJECT            FileObject,
153         IN      PLARGE_INTEGER          FileOffset,
154         IN      ULONG                   Length,
155         OUT     PMDL                    * MdlChain,
156         OUT     PIO_STATUS_BLOCK        IoStatus
157         );
158
159 VOID
160 STDCALL
161 CcMdlReadComplete (
162         IN      PFILE_OBJECT    FileObject,
163         IN      PMDL            MdlChain
164         );
165
166 VOID
167 STDCALL
168 CcMdlWriteComplete (
169         IN      PFILE_OBJECT            FileObject,
170         IN      PLARGE_INTEGER          FileOffset,
171         IN      PMDL                    MdlChain
172         );
173
174 BOOLEAN
175 STDCALL
176 CcPinMappedData (
177         IN      PFILE_OBJECT            FileObject,
178         IN      PLARGE_INTEGER          FileOffset,
179         IN      ULONG                   Length,
180         IN      ULONG                   Flags,
181         OUT     PVOID                   * Bcb
182         );
183
184 BOOLEAN
185 STDCALL
186 CcPinRead (
187         IN      PFILE_OBJECT            FileObject,
188         IN      PLARGE_INTEGER          FileOffset,
189         IN      ULONG                   Length,
190         IN      ULONG                   Flags,
191         OUT     PVOID                   * Bcb,
192         OUT     PVOID                   * Buffer
193         );
194
195 VOID
196 STDCALL
197 CcPrepareMdlWrite (
198         IN      PFILE_OBJECT            FileObject,
199         IN      PLARGE_INTEGER          FileOffset,
200         IN      ULONG                   Length,
201         OUT     PMDL                    * MdlChain,
202         OUT     PIO_STATUS_BLOCK        IoStatus
203         );
204
205 BOOLEAN
206 STDCALL
207 CcPreparePinWrite (
208         IN      PFILE_OBJECT            FileObject,
209         IN      PLARGE_INTEGER          FileOffset,
210         IN      ULONG                   Length,
211         IN      BOOLEAN                 Zero,
212         IN      BOOLEAN                 Wait,
213         OUT     PVOID                   * Bcb,
214         OUT     PVOID                   * Buffer
215         );
216
217 BOOLEAN
218 STDCALL
219 CcPurgeCacheSection (
220         IN      PSECTION_OBJECT_POINTERS        SectionObjectPointer,
221         IN      PLARGE_INTEGER                  FileOffset OPTIONAL,
222         IN      ULONG                           Length,
223         IN      BOOLEAN                         UninitializeCacheMaps
224         );
225
226 #define CcReadAhead(FO,FOFF,LEN) \
227 { \
228         if ((LEN) >= 256) \
229         { \
230                 CcScheduleReadAhead((FO),(FOFF),(LEN)); \
231         } \
232
233
234 VOID
235 STDCALL
236 CcRepinBcb (
237         IN      PVOID   Bcb
238         );
239
240 VOID
241 STDCALL
242 CcScheduleReadAhead (
243         IN      PFILE_OBJECT            FileObject,
244         IN      PLARGE_INTEGER          FileOffset,
245         IN      ULONG                   Length
246         );
247
248 VOID
249 STDCALL
250 CcSetAdditionalCacheAttributes (
251         IN      PFILE_OBJECT    FileObject,
252         IN      BOOLEAN         DisableReadAhead,
253         IN      BOOLEAN         DisableWriteBehind
254         );
255
256 VOID
257 STDCALL
258 CcSetBcbOwnerPointer (
259         IN      PVOID   Bcb,
260         IN      PVOID   Owner
261         );
262
263 VOID
264 STDCALL
265 CcSetDirtyPageThreshold (
266         IN      PFILE_OBJECT    FileObject,
267         IN      ULONG           DirtyPageThreshold
268         );
269
270 VOID
271 STDCALL
272 CcSetDirtyPinnedData (
273         IN      PVOID           Bcb,
274         IN      PLARGE_INTEGER  Lsn     OPTIONAL
275         );
276
277 VOID
278 STDCALL
279 CcSetFileSizes (
280         IN      PFILE_OBJECT    FileObject,
281         IN      PCC_FILE_SIZES  FileSizes
282         );
283
284 VOID
285 STDCALL
286 CcSetLogHandleForFile (
287         IN      PFILE_OBJECT    FileObject,
288         IN      PVOID           LogHandle,
289         IN      PFLUSH_TO_LSN   FlushToLsnRoutine
290         );
291
292 VOID
293 STDCALL
294 CcSetReadAheadGranularity (
295         IN      PFILE_OBJECT    FileObject,
296         IN      ULONG           Granularity
297         );
298
299 BOOLEAN
300 STDCALL
301 CcUninitializeCacheMap (
302         IN      PFILE_OBJECT                    FileObject,
303         IN      PLARGE_INTEGER                  TruncateSize OPTIONAL,
304         IN      PCACHE_UNINITIALIZE_EVENT       UninitializeCompleteEvent OPTIONAL
305         );
306
307 VOID
308 STDCALL
309 CcUnpinData (
310         IN      PVOID   Bcb
311         );
312
313 VOID
314 STDCALL
315 CcUnpinDataForThread (
316         IN      PVOID                   Bcb,
317         IN      ERESOURCE_THREAD        ResourceThreadId
318         );
319
320 VOID
321 STDCALL
322 CcUnpinRepinnedBcb (
323         IN      PVOID                   Bcb,
324         IN      BOOLEAN                 WriteThrough,
325         IN      PIO_STATUS_BLOCK        IoStatus
326         );
327
328 BOOLEAN
329 STDCALL
330 CcZeroData (
331         IN      PFILE_OBJECT    FileObject,
332         IN      PLARGE_INTEGER  StartOffset,
333         IN      PLARGE_INTEGER  EndOffset,
334         IN      BOOLEAN         Wait
335         );
336
337 #endif
338
339 /* EOF */