3 * reactos/ntoskrnl/fs/mdl.c
7 #include <internal/cc.h>
10 /**********************************************************************
24 IN PFILE_OBJECT FileObject,
25 IN PLARGE_INTEGER FileOffset,
29 OUT PIO_STATUS_BLOCK IoStatus
32 return FALSE; /* FIXME: call FsRtlMdlReadDev ? */
36 /**********************************************************************
38 * FsRtlMdlReadComplete@8
48 FsRtlMdlReadComplete(IN PFILE_OBJECT FileObject,
51 PDEVICE_OBJECT DeviceObject [2] = {NULL};
52 PDRIVER_OBJECT DriverObject = NULL;
57 DeviceObject [0] = IoGetRelatedDeviceObject (FileObject);
58 DriverObject = DeviceObject [0]->DriverObject;
59 if (NULL != DriverObject->FastIoDispatch)
62 if (IRP_MJ_READ <= DriverObject->FastIoDispatch->Count)
66 if (NULL == DriverObject->FastIoDispatch->Dispatch [IRP_MJ_READ])
70 return DriverObject->FastIoDispatch->Dispatch
73 NULL /* FIXME: how to get the IRP? */
80 DeviceObject [1] = IoGetBaseFileSystemDeviceObject (FileObject);
82 * Did IoGetBaseFileSystemDeviceObject ()
83 * returned the same device
84 * IoGetRelatedDeviceObject () returned?
86 if (DeviceObject [1] != DeviceObject [0])
89 DriverObject = DeviceObject [1]->DriverObject;
90 if (NULL != DriverObject->FastIoDispatch)
93 * Check if the driver provides
96 if (IRP_MJ_READ <= DriverObject->FastIoDispatch->Count)
98 if (NULL == DriverObject->FastIoDispatch->Dispatch [IRP_MJ_READ])
105 DeviceObject [0] = DeviceObject [1];
107 return FsRtlMdlReadCompleteDev (
115 /**********************************************************************
117 * FsRtlMdlReadCompleteDev@12
126 * From Bo Branten's ntifs.h v13.
127 * (CcMdlReadCompleteDev declared in internal/cc.h)
131 FsRtlMdlReadCompleteDev (
132 IN PFILE_OBJECT FileObject,
134 IN PDEVICE_OBJECT DeviceObject
137 FileObject = FileObject; /* unused parameter */
138 CcMdlReadCompleteDev (MdlChain, DeviceObject);
143 /**********************************************************************
157 IN PFILE_OBJECT FileObject,
158 IN PLARGE_INTEGER FileOffset,
162 OUT PIO_STATUS_BLOCK IoStatus,
163 IN PDEVICE_OBJECT DeviceObject
170 /**********************************************************************
172 * FsRtlMdlWriteComplete@12
183 FsRtlMdlWriteComplete (
184 IN PFILE_OBJECT FileObject,
185 IN PLARGE_INTEGER FileOffset,
189 return FALSE; /* FIXME: call FsRtlMdlWriteCompleteDev ? */
193 /**********************************************************************
195 * FsRtlMdlWriteCompleteDev@16
206 FsRtlMdlWriteCompleteDev (
207 IN PFILE_OBJECT FileObject,
208 IN PLARGE_INTEGER FileOffset,
210 IN PDEVICE_OBJECT DeviceObject
217 /**********************************************************************
219 * FsRtlPrepareMdlWrite@24
230 FsRtlPrepareMdlWrite (
231 IN PFILE_OBJECT FileObject,
232 IN PLARGE_INTEGER FileOffset,
236 OUT PIO_STATUS_BLOCK IoStatus
239 return FALSE; /* call FsRtlPrepareMdlWriteDev ? */
243 /**********************************************************************
245 * FsRtlPrepareMdlWriteDev@28
256 FsRtlPrepareMdlWriteDev (
257 IN PFILE_OBJECT FileObject,
258 IN PLARGE_INTEGER FileOffset,
262 OUT PIO_STATUS_BLOCK IoStatus,
263 IN PDEVICE_OBJECT DeviceObject