3 * reactos/ntoskrnl/fs/mdl.c
7 #include <internal/cc.h>
10 /**********************************************************************
25 IN PFILE_OBJECT FileObject,
26 IN PLARGE_INTEGER FileOffset,
30 OUT PIO_STATUS_BLOCK IoStatus
33 return FALSE; /* FIXME: call FsRtlMdlReadDev ? */
37 /**********************************************************************
39 * FsRtlMdlReadComplete@8
50 FsRtlMdlReadComplete(IN PFILE_OBJECT FileObject,
53 PDEVICE_OBJECT DeviceObject [2] = {NULL};
54 PDRIVER_OBJECT DriverObject = NULL;
59 DeviceObject [0] = IoGetRelatedDeviceObject (FileObject);
60 DriverObject = DeviceObject [0]->DriverObject;
61 if (NULL != DriverObject->FastIoDispatch)
64 if (IRP_MJ_READ <= DriverObject->FastIoDispatch->Count)
68 if (NULL == DriverObject->FastIoDispatch->Dispatch [IRP_MJ_READ])
72 return DriverObject->FastIoDispatch->Dispatch
75 NULL /* FIXME: how to get the IRP? */
82 DeviceObject [1] = IoGetBaseFileSystemDeviceObject (FileObject);
84 * Did IoGetBaseFileSystemDeviceObject ()
85 * returned the same device
86 * IoGetRelatedDeviceObject () returned?
88 if (DeviceObject [1] != DeviceObject [0])
91 DriverObject = DeviceObject [1]->DriverObject;
92 if (NULL != DriverObject->FastIoDispatch)
95 * Check if the driver provides
98 if (IRP_MJ_READ <= DriverObject->FastIoDispatch->Count)
100 if (NULL == DriverObject->FastIoDispatch->Dispatch [IRP_MJ_READ])
107 DeviceObject [0] = DeviceObject [1];
109 return FsRtlMdlReadCompleteDev (
117 /**********************************************************************
119 * FsRtlMdlReadCompleteDev@12
128 * From Bo Branten's ntifs.h v13.
129 * (CcMdlReadCompleteDev declared in internal/cc.h)
135 FsRtlMdlReadCompleteDev (
136 IN PFILE_OBJECT FileObject,
138 IN PDEVICE_OBJECT DeviceObject
141 FileObject = FileObject; /* unused parameter */
142 CcMdlReadCompleteDev (MdlChain, DeviceObject);
147 /**********************************************************************
162 IN PFILE_OBJECT FileObject,
163 IN PLARGE_INTEGER FileOffset,
167 OUT PIO_STATUS_BLOCK IoStatus,
168 IN PDEVICE_OBJECT DeviceObject
175 /**********************************************************************
177 * FsRtlMdlWriteComplete@12
189 FsRtlMdlWriteComplete (
190 IN PFILE_OBJECT FileObject,
191 IN PLARGE_INTEGER FileOffset,
195 return FALSE; /* FIXME: call FsRtlMdlWriteCompleteDev ? */
199 /**********************************************************************
201 * FsRtlMdlWriteCompleteDev@16
213 FsRtlMdlWriteCompleteDev (
214 IN PFILE_OBJECT FileObject,
215 IN PLARGE_INTEGER FileOffset,
217 IN PDEVICE_OBJECT DeviceObject
224 /**********************************************************************
226 * FsRtlPrepareMdlWrite@24
238 FsRtlPrepareMdlWrite (
239 IN PFILE_OBJECT FileObject,
240 IN PLARGE_INTEGER FileOffset,
244 OUT PIO_STATUS_BLOCK IoStatus
247 return FALSE; /* call FsRtlPrepareMdlWriteDev ? */
251 /**********************************************************************
253 * FsRtlPrepareMdlWriteDev@28
265 FsRtlPrepareMdlWriteDev (
266 IN PFILE_OBJECT FileObject,
267 IN PLARGE_INTEGER FileOffset,
271 OUT PIO_STATUS_BLOCK IoStatus,
272 IN PDEVICE_OBJECT DeviceObject