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