2004-08-15 Casper S. Hornstrup <chorns@users.sourceforge.net>
[reactos.git] / reactos / ntoskrnl / fs / mdl.c
1 /* $Id: mdl.c,v 1.8 2004/08/15 16:39:02 chorns Exp $
2 *
3 * reactos/ntoskrnl/fs/mdl.c
4 *
5 */
6
7 #include <ntoskrnl.h>
8 #include <internal/debug.h>
9
10 /*
11 * @unimplemented
12 */
13 VOID
14 STDCALL
15 FsRtlIncrementCcFastReadResourceMiss( VOID )
16 {
17 UNIMPLEMENTED;
18 }
19
20 /*
21 * @unimplemented
22 */
23 VOID
24 STDCALL
25 FsRtlIncrementCcFastReadNotPossible( VOID )
26 {
27 UNIMPLEMENTED;
28 }
29
30 /*
31 * @unimplemented
32 */
33 VOID
34 STDCALL
35 FsRtlIncrementCcFastReadWait( VOID )
36 {
37 UNIMPLEMENTED;
38 }
39
40 /*
41 * @unimplemented
42 */
43 VOID
44 STDCALL
45 FsRtlIncrementCcFastReadNoWait( VOID )
46 {
47 UNIMPLEMENTED;
48 }
49
50
51 /**********************************************************************
52 * NAME EXPORTED
53 * FsRtlMdlRead@24
54 *
55 * DESCRIPTION
56 *
57 * ARGUMENTS
58 *
59 * RETURN VALUE
60 *
61 * @unimplemented
62 */
63 BOOLEAN
64 STDCALL
65 FsRtlMdlRead (
66 IN PFILE_OBJECT FileObject,
67 IN PLARGE_INTEGER FileOffset,
68 IN ULONG Length,
69 IN ULONG LockKey,
70 OUT PMDL *MdlChain,
71 OUT PIO_STATUS_BLOCK IoStatus
72 )
73 {
74 return FALSE; /* FIXME: call FsRtlMdlReadDev ? */
75 }
76
77
78 /**********************************************************************
79 * NAME EXPORTED
80 * FsRtlMdlReadComplete@8
81 *
82 * DESCRIPTION
83 *
84 * ARGUMENTS
85 *
86 * RETURN VALUE
87 *
88 * @unimplemented
89 */
90 BOOLEAN STDCALL
91 FsRtlMdlReadComplete(IN PFILE_OBJECT FileObject,
92 IN OUT PMDL Mdl)
93 {
94 PDEVICE_OBJECT DeviceObject [2] = {NULL};
95 PDRIVER_OBJECT DriverObject = NULL;
96
97 /*
98 * Try fast I/O first
99 */
100 DeviceObject [0] = IoGetRelatedDeviceObject (FileObject);
101 DriverObject = DeviceObject [0]->DriverObject;
102 if (NULL != DriverObject->FastIoDispatch)
103 {
104 #if 0
105 if (IRP_MJ_READ <= DriverObject->FastIoDispatch->Count)
106 {
107 return FALSE;
108 }
109 if (NULL == DriverObject->FastIoDispatch->Dispatch [IRP_MJ_READ])
110 {
111 return FALSE;
112 }
113 return DriverObject->FastIoDispatch->Dispatch
114 [IRP_MJ_READ] (
115 Mdl,
116 NULL /* FIXME: how to get the IRP? */
117 );
118 #endif
119 }
120 /*
121 * Default I/O path
122 */
123 DeviceObject [1] = IoGetBaseFileSystemDeviceObject (FileObject);
124 /*
125 * Did IoGetBaseFileSystemDeviceObject ()
126 * returned the same device
127 * IoGetRelatedDeviceObject () returned?
128 */
129 if (DeviceObject [1] != DeviceObject [0])
130 {
131 #if 0
132 DriverObject = DeviceObject [1]->DriverObject;
133 if (NULL != DriverObject->FastIoDispatch)
134 {
135 /*
136 * Check if the driver provides
137 * IRP_MJ_READ.
138 */
139 if (IRP_MJ_READ <= DriverObject->FastIoDispatch->Count)
140 {
141 if (NULL == DriverObject->FastIoDispatch->Dispatch [IRP_MJ_READ])
142 {
143 return FALSE;
144 }
145 }
146 }
147 #endif
148 DeviceObject [0] = DeviceObject [1];
149 }
150 return FsRtlMdlReadCompleteDev (
151 FileObject,
152 Mdl,
153 DeviceObject [0]
154 );
155 }
156
157
158 /**********************************************************************
159 * NAME EXPORTED
160 * FsRtlMdlReadCompleteDev@12
161 *
162 * DESCRIPTION
163 *
164 * ARGUMENTS
165 *
166 * RETURN VALUE
167 *
168 * NOTE
169 * From Bo Branten's ntifs.h v13.
170 * (CcMdlReadCompleteDev declared in internal/cc.h)
171 *
172 * @implemented
173 */
174 BOOLEAN
175 STDCALL
176 FsRtlMdlReadCompleteDev (
177 IN PFILE_OBJECT FileObject,
178 IN PMDL MdlChain,
179 IN PDEVICE_OBJECT DeviceObject
180 )
181 {
182 FileObject = FileObject; /* unused parameter */
183 CcMdlReadCompleteDev (MdlChain, DeviceObject);
184 return TRUE;
185 }
186
187
188 /**********************************************************************
189 * NAME EXPORTED
190 * FsRtlMdlReadDev@28
191 *
192 * DESCRIPTION
193 *
194 * ARGUMENTS
195 *
196 * RETURN VALUE
197 *
198 * @unimplemented
199 */
200 BOOLEAN
201 STDCALL
202 FsRtlMdlReadDev (
203 IN PFILE_OBJECT FileObject,
204 IN PLARGE_INTEGER FileOffset,
205 IN ULONG Length,
206 IN ULONG LockKey,
207 OUT PMDL *MdlChain,
208 OUT PIO_STATUS_BLOCK IoStatus,
209 IN PDEVICE_OBJECT DeviceObject
210 )
211 {
212 return FALSE;
213 }
214
215
216 /**********************************************************************
217 * NAME EXPORTED
218 * FsRtlMdlWriteComplete@12
219 *
220 * DESCRIPTION
221 *
222 * ARGUMENTS
223 *
224 * RETURN VALUE
225 *
226 * @unimplemented
227 */
228 BOOLEAN
229 STDCALL
230 FsRtlMdlWriteComplete (
231 IN PFILE_OBJECT FileObject,
232 IN PLARGE_INTEGER FileOffset,
233 IN PMDL MdlChain
234 )
235 {
236 return FALSE; /* FIXME: call FsRtlMdlWriteCompleteDev ? */
237 }
238
239
240 /**********************************************************************
241 * NAME EXPORTED
242 * FsRtlMdlWriteCompleteDev@16
243 *
244 * DESCRIPTION
245 *
246 * ARGUMENTS
247 *
248 * RETURN VALUE
249 *
250 * @unimplemented
251 */
252 BOOLEAN
253 STDCALL
254 FsRtlMdlWriteCompleteDev (
255 IN PFILE_OBJECT FileObject,
256 IN PLARGE_INTEGER FileOffset,
257 IN PMDL MdlChain,
258 IN PDEVICE_OBJECT DeviceObject
259 )
260 {
261 return FALSE;
262 }
263
264
265 /**********************************************************************
266 * NAME EXPORTED
267 * FsRtlPrepareMdlWrite@24
268 *
269 * DESCRIPTION
270 *
271 * ARGUMENTS
272 *
273 * RETURN VALUE
274 *
275 * @unimplemented
276 */
277 BOOLEAN
278 STDCALL
279 FsRtlPrepareMdlWrite (
280 IN PFILE_OBJECT FileObject,
281 IN PLARGE_INTEGER FileOffset,
282 IN ULONG Length,
283 IN ULONG LockKey,
284 OUT PMDL *MdlChain,
285 OUT PIO_STATUS_BLOCK IoStatus
286 )
287 {
288 return FALSE; /* call FsRtlPrepareMdlWriteDev ? */
289 }
290
291
292 /**********************************************************************
293 * NAME EXPORTED
294 * FsRtlPrepareMdlWriteDev@28
295 *
296 * DESCRIPTION
297 *
298 * ARGUMENTS
299 *
300 * RETURN VALUE
301 *
302 * @unimplemented
303 */
304 BOOLEAN
305 STDCALL
306 FsRtlPrepareMdlWriteDev (
307 IN PFILE_OBJECT FileObject,
308 IN PLARGE_INTEGER FileOffset,
309 IN ULONG Length,
310 IN ULONG LockKey,
311 OUT PMDL *MdlChain,
312 OUT PIO_STATUS_BLOCK IoStatus,
313 IN PDEVICE_OBJECT DeviceObject
314 )
315 {
316 return FALSE;
317 }
318
319
320 /* EOF */