3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: ntoskrnl/cc/fs.c
6 * PURPOSE: Implements MDL Cache Manager Functions
8 * PROGRAMMERS: Alex Ionescu
11 /* INCLUDES ******************************************************************/
15 #include <internal/debug.h>
17 /* FUNCTIONS *****************************************************************/
25 IN PFILE_OBJECT FileObject
,
26 IN PLARGE_INTEGER FileOffset
,
29 OUT PIO_STATUS_BLOCK IoStatus
37 * CcMdlReadCompleteDev@8
49 * Used by CcMdlReadComplete@8 and FsRtl
54 CcMdlReadCompleteDev(IN PMDL MdlChain
,
55 IN PFILE_OBJECT FileObject
)
60 while ((Mdl
= MdlChain
))
80 * From Bo Branten's ntifs.h v13.
86 CcMdlReadComplete(IN PFILE_OBJECT FileObject
,
89 PDEVICE_OBJECT DeviceObject
= NULL
;
90 PFAST_IO_DISPATCH FastDispatch
;
92 /* Get Fast Dispatch Data */
93 DeviceObject
= IoGetRelatedDeviceObject(FileObject
);
94 FastDispatch
= DeviceObject
->DriverObject
->FastIoDispatch
;
96 /* Check if we support Fast Calls, and check this one */
97 if (FastDispatch
&& FastDispatch
->MdlReadComplete
)
99 /* Use the fast path */
100 FastDispatch
->MdlReadComplete(FileObject
,
106 CcMdlReadCompleteDev(MdlChain
, FileObject
);
114 CcMdlWriteComplete(IN PFILE_OBJECT FileObject
,
115 IN PLARGE_INTEGER FileOffset
,
118 PDEVICE_OBJECT DeviceObject
= NULL
;
119 PFAST_IO_DISPATCH FastDispatch
;
121 /* Get Fast Dispatch Data */
122 DeviceObject
= IoGetRelatedDeviceObject(FileObject
);
123 FastDispatch
= DeviceObject
->DriverObject
->FastIoDispatch
;
125 /* Check if we support Fast Calls, and check this one */
126 if (FastDispatch
&& FastDispatch
->MdlWriteComplete
)
128 /* Use the fast path */
129 FastDispatch
->MdlWriteComplete(FileObject
,
136 CcMdlWriteCompleteDev(FileOffset
, MdlChain
, FileObject
);
141 CcMdlWriteCompleteDev(IN PLARGE_INTEGER FileOffset
,
143 IN PFILE_OBJECT FileObject
)
154 IN PFILE_OBJECT FileObject
,
167 IN PFILE_OBJECT FileObject
,
168 IN PLARGE_INTEGER FileOffset
,
171 OUT PIO_STATUS_BLOCK IoStatus