CcPreparePinWrite(): Updated function prototype for NT-5.1sp1
[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 #ifndef LIBCAPTIVE
95 LARGE_INTEGER
96 #else /* !LIBCAPTIVE */
97 gint64
98 #endif /* LIBCAPTIVE */
99 STDCALL
100 CcGetDirtyPages (
101         IN      PVOID                   LogHandle,
102         IN      PDIRTY_PAGE_ROUTINE     DirtyPageRoutine,
103         IN      PVOID                   Context1,
104         IN      PVOID                   Context2
105         );
106
107 PFILE_OBJECT
108 STDCALL
109 CcGetFileObjectFromBcb (
110         IN      PVOID   Bcb
111         );
112
113 PFILE_OBJECT
114 STDCALL
115 CcGetFileObjectFromSectionPtrs (
116         IN      PSECTION_OBJECT_POINTERS        SectionObjectPointer
117         );
118
119 LARGE_INTEGER
120 STDCALL
121 CcGetLsnForFileObject (
122         IN      PFILE_OBJECT    FileObject,
123         OUT     PLARGE_INTEGER  OldestLsn OPTIONAL
124         );
125
126 VOID
127 STDCALL
128 CcInitializeCacheMap (
129         IN      PFILE_OBJECT                    FileObject,
130         IN      PCC_FILE_SIZES                  FileSizes,
131         IN      BOOLEAN                         PinAccess,
132         IN      PCACHE_MANAGER_CALLBACKS        CallBacks,
133         IN      PVOID                           LazyWriterContext
134         );
135
136 BOOLEAN
137 STDCALL
138 CcIsThereDirtyData (
139         IN      PVPB    Vpb
140         );
141
142 BOOLEAN
143 STDCALL
144 CcMapData (
145         IN      PFILE_OBJECT            FileObject,
146         IN      PLARGE_INTEGER          FileOffset,
147         IN      ULONG                   Length,
148         IN      ULONG                   Flags,
149         OUT     PVOID                   * Bcb,
150         OUT     PVOID                   * Buffer
151         );
152
153 VOID
154 STDCALL
155 CcMdlRead (
156         IN      PFILE_OBJECT            FileObject,
157         IN      PLARGE_INTEGER          FileOffset,
158         IN      ULONG                   Length,
159         OUT     PMDL                    * MdlChain,
160         OUT     PIO_STATUS_BLOCK        IoStatus
161         );
162
163 VOID
164 STDCALL
165 CcMdlReadComplete (
166         IN      PFILE_OBJECT    FileObject,
167         IN      PMDL            MdlChain
168         );
169
170 VOID
171 STDCALL
172 CcMdlWriteComplete (
173         IN      PFILE_OBJECT            FileObject,
174         IN      PLARGE_INTEGER          FileOffset,
175         IN      PMDL                    MdlChain
176         );
177
178 BOOLEAN
179 STDCALL
180 CcPinMappedData (
181         IN      PFILE_OBJECT            FileObject,
182         IN      PLARGE_INTEGER          FileOffset,
183         IN      ULONG                   Length,
184         IN      ULONG                   Flags,
185         OUT     PVOID                   * Bcb
186         );
187
188 BOOLEAN
189 STDCALL
190 CcPinRead (
191         IN      PFILE_OBJECT            FileObject,
192         IN      PLARGE_INTEGER          FileOffset,
193         IN      ULONG                   Length,
194         IN      ULONG                   Flags,
195         OUT     PVOID                   * Bcb,
196         OUT     PVOID                   * Buffer
197         );
198
199 VOID
200 STDCALL
201 CcPrepareMdlWrite (
202         IN      PFILE_OBJECT            FileObject,
203         IN      PLARGE_INTEGER          FileOffset,
204         IN      ULONG                   Length,
205         OUT     PMDL                    * MdlChain,
206         OUT     PIO_STATUS_BLOCK        IoStatus
207         );
208
209 BOOLEAN
210 STDCALL
211 CcPreparePinWrite (
212         IN      PFILE_OBJECT            FileObject,
213         IN      PLARGE_INTEGER          FileOffset,
214         IN      ULONG                   Length,
215         IN      BOOLEAN                 Zero,
216         IN      ULONG                   Flags,
217         OUT     PVOID                   * Bcb,
218         OUT     PVOID                   * Buffer
219         );
220
221 BOOLEAN
222 STDCALL
223 CcPurgeCacheSection (
224         IN      PSECTION_OBJECT_POINTERS        SectionObjectPointer,
225         IN      PLARGE_INTEGER                  FileOffset OPTIONAL,
226         IN      ULONG                           Length,
227         IN      BOOLEAN                         UninitializeCacheMaps
228         );
229
230 #define CcReadAhead(FO,FOFF,LEN) \
231 { \
232         if ((LEN) >= 256) \
233         { \
234                 CcScheduleReadAhead((FO),(FOFF),(LEN)); \
235         } \
236
237
238 VOID
239 STDCALL
240 CcRepinBcb (
241         IN      PVOID   Bcb
242         );
243
244 VOID
245 STDCALL
246 CcScheduleReadAhead (
247         IN      PFILE_OBJECT            FileObject,
248         IN      PLARGE_INTEGER          FileOffset,
249         IN      ULONG                   Length
250         );
251
252 VOID
253 STDCALL
254 CcSetAdditionalCacheAttributes (
255         IN      PFILE_OBJECT    FileObject,
256         IN      BOOLEAN         DisableReadAhead,
257         IN      BOOLEAN         DisableWriteBehind
258         );
259
260 VOID
261 STDCALL
262 CcSetBcbOwnerPointer (
263         IN      PVOID   Bcb,
264         IN      PVOID   Owner
265         );
266
267 VOID
268 STDCALL
269 CcSetDirtyPageThreshold (
270         IN      PFILE_OBJECT    FileObject,
271         IN      ULONG           DirtyPageThreshold
272         );
273
274 VOID
275 STDCALL
276 CcSetDirtyPinnedData (
277         IN      PVOID           Bcb,
278         IN      PLARGE_INTEGER  Lsn     OPTIONAL
279         );
280
281 VOID
282 STDCALL
283 CcSetFileSizes (
284         IN      PFILE_OBJECT    FileObject,
285         IN      PCC_FILE_SIZES  FileSizes
286         );
287
288 VOID
289 STDCALL
290 CcSetLogHandleForFile (
291         IN      PFILE_OBJECT    FileObject,
292         IN      PVOID           LogHandle,
293         IN      PFLUSH_TO_LSN   FlushToLsnRoutine
294         );
295
296 VOID
297 STDCALL
298 CcSetReadAheadGranularity (
299         IN      PFILE_OBJECT    FileObject,
300         IN      ULONG           Granularity
301         );
302
303 BOOLEAN
304 STDCALL
305 CcUninitializeCacheMap (
306         IN      PFILE_OBJECT                    FileObject,
307         IN      PLARGE_INTEGER                  TruncateSize OPTIONAL,
308         IN      PCACHE_UNINITIALIZE_EVENT       UninitializeCompleteEvent OPTIONAL
309         );
310
311 VOID
312 STDCALL
313 CcUnpinData (
314         IN      PVOID   Bcb
315         );
316
317 VOID
318 STDCALL
319 CcUnpinDataForThread (
320         IN      PVOID                   Bcb,
321         IN      ERESOURCE_THREAD        ResourceThreadId
322         );
323
324 VOID
325 STDCALL
326 CcUnpinRepinnedBcb (
327         IN      PVOID                   Bcb,
328         IN      BOOLEAN                 WriteThrough,
329         IN      PIO_STATUS_BLOCK        IoStatus
330         );
331
332 BOOLEAN
333 STDCALL
334 CcZeroData (
335         IN      PFILE_OBJECT    FileObject,
336         IN      PLARGE_INTEGER  StartOffset,
337         IN      PLARGE_INTEGER  EndOffset,
338         IN      BOOLEAN         Wait
339         );
340
341 #endif
342
343 /* EOF */