1 /* $Id: mdl.c,v 1.8 2004/08/15 16:39:02 chorns Exp $
3 * reactos/ntoskrnl/fs/mdl.c
8 #include <internal/debug.h>
15 FsRtlIncrementCcFastReadResourceMiss( VOID
)
25 FsRtlIncrementCcFastReadNotPossible( VOID
)
35 FsRtlIncrementCcFastReadWait( VOID
)
45 FsRtlIncrementCcFastReadNoWait( VOID
)
51 /**********************************************************************
66 IN PFILE_OBJECT FileObject
,
67 IN PLARGE_INTEGER FileOffset
,
71 OUT PIO_STATUS_BLOCK IoStatus
74 return FALSE
; /* FIXME: call FsRtlMdlReadDev ? */
78 /**********************************************************************
80 * FsRtlMdlReadComplete@8
91 FsRtlMdlReadComplete(IN PFILE_OBJECT FileObject
,
94 PDEVICE_OBJECT DeviceObject
[2] = {NULL
};
95 PDRIVER_OBJECT DriverObject
= NULL
;
100 DeviceObject
[0] = IoGetRelatedDeviceObject (FileObject
);
101 DriverObject
= DeviceObject
[0]->DriverObject
;
102 if (NULL
!= DriverObject
->FastIoDispatch
)
105 if (IRP_MJ_READ
<= DriverObject
->FastIoDispatch
->Count
)
109 if (NULL
== DriverObject
->FastIoDispatch
->Dispatch
[IRP_MJ_READ
])
113 return DriverObject
->FastIoDispatch
->Dispatch
116 NULL
/* FIXME: how to get the IRP? */
123 DeviceObject
[1] = IoGetBaseFileSystemDeviceObject (FileObject
);
125 * Did IoGetBaseFileSystemDeviceObject ()
126 * returned the same device
127 * IoGetRelatedDeviceObject () returned?
129 if (DeviceObject
[1] != DeviceObject
[0])
132 DriverObject
= DeviceObject
[1]->DriverObject
;
133 if (NULL
!= DriverObject
->FastIoDispatch
)
136 * Check if the driver provides
139 if (IRP_MJ_READ
<= DriverObject
->FastIoDispatch
->Count
)
141 if (NULL
== DriverObject
->FastIoDispatch
->Dispatch
[IRP_MJ_READ
])
148 DeviceObject
[0] = DeviceObject
[1];
150 return FsRtlMdlReadCompleteDev (
158 /**********************************************************************
160 * FsRtlMdlReadCompleteDev@12
169 * From Bo Branten's ntifs.h v13.
170 * (CcMdlReadCompleteDev declared in internal/cc.h)
176 FsRtlMdlReadCompleteDev (
177 IN PFILE_OBJECT FileObject
,
179 IN PDEVICE_OBJECT DeviceObject
182 FileObject
= FileObject
; /* unused parameter */
183 CcMdlReadCompleteDev (MdlChain
, DeviceObject
);
188 /**********************************************************************
203 IN PFILE_OBJECT FileObject
,
204 IN PLARGE_INTEGER FileOffset
,
208 OUT PIO_STATUS_BLOCK IoStatus
,
209 IN PDEVICE_OBJECT DeviceObject
216 /**********************************************************************
218 * FsRtlMdlWriteComplete@12
230 FsRtlMdlWriteComplete (
231 IN PFILE_OBJECT FileObject
,
232 IN PLARGE_INTEGER FileOffset
,
236 return FALSE
; /* FIXME: call FsRtlMdlWriteCompleteDev ? */
240 /**********************************************************************
242 * FsRtlMdlWriteCompleteDev@16
254 FsRtlMdlWriteCompleteDev (
255 IN PFILE_OBJECT FileObject
,
256 IN PLARGE_INTEGER FileOffset
,
258 IN PDEVICE_OBJECT DeviceObject
265 /**********************************************************************
267 * FsRtlPrepareMdlWrite@24
279 FsRtlPrepareMdlWrite (
280 IN PFILE_OBJECT FileObject
,
281 IN PLARGE_INTEGER FileOffset
,
285 OUT PIO_STATUS_BLOCK IoStatus
288 return FALSE
; /* call FsRtlPrepareMdlWriteDev ? */
292 /**********************************************************************
294 * FsRtlPrepareMdlWriteDev@28
306 FsRtlPrepareMdlWriteDev (
307 IN PFILE_OBJECT FileObject
,
308 IN PLARGE_INTEGER FileOffset
,
312 OUT PIO_STATUS_BLOCK IoStatus
,
313 IN PDEVICE_OBJECT DeviceObject