[CLT2012]
[reactos.git] / ntoskrnl / cache / mdlsup.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Kernel
4 * FILE: ntoskrnl/cache/logsup.c
5 * PURPOSE: Logging and configuration routines
6 * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
7 */
8
9 /* INCLUDES *******************************************************************/
10
11 #include <ntoskrnl.h>
12 #include "newcc.h"
13 #define NDEBUG
14 #include <debug.h>
15
16 /* GLOBALS ********************************************************************/
17
18 /* FUNCTIONS ******************************************************************/
19 \f
20
21 PMDL
22 NTAPI
23 CcpBuildCacheMdl
24 (PFILE_OBJECT FileObject,
25 PLARGE_INTEGER FileOffset,
26 ULONG Length,
27 PIO_STATUS_BLOCK IOSB)
28 {
29 PMDL Mdl;
30 PVOID Bcb, Buffer;
31
32 BOOLEAN Result = CcMapData
33 (FileObject,
34 FileOffset,
35 Length,
36 PIN_WAIT,
37 &Bcb,
38 &Buffer);
39
40 if (!Result)
41 {
42 IOSB->Information = 0;
43 IOSB->Status = STATUS_UNSUCCESSFUL;
44 return NULL;
45 }
46
47 IOSB->Information = Length;
48 IOSB->Status = STATUS_SUCCESS;
49
50 Mdl = IoAllocateMdl
51 (Buffer,
52 Length,
53 FALSE,
54 FALSE,
55 NULL);
56
57 if (!Mdl)
58 {
59 IOSB->Information = 0;
60 IOSB->Status = STATUS_NO_MEMORY;
61 return NULL;
62 }
63
64 IOSB->Information = Length;
65 IOSB->Status = STATUS_SUCCESS;
66
67 return Mdl;
68 }
69
70 VOID
71 NTAPI
72 CcMdlRead(IN PFILE_OBJECT FileObject,
73 IN PLARGE_INTEGER FileOffset,
74 IN ULONG Length,
75 OUT PMDL *MdlChain,
76 OUT PIO_STATUS_BLOCK IoStatus)
77 {
78 *MdlChain = CcpBuildCacheMdl
79 (FileObject,
80 FileOffset,
81 Length,
82 IoStatus);
83 }
84 \f
85 VOID
86 NTAPI
87 CcMdlReadComplete(IN PFILE_OBJECT FileObject,
88 IN PMDL MdlChain)
89 {
90 IoFreeMdl(MdlChain);
91 }
92
93 VOID
94 NTAPI
95 CcMdlReadComplete2(IN PMDL MdlChain,
96 IN PFILE_OBJECT FileObject)
97 {
98 DPRINT("Not sure\n");
99 }
100 \f
101 VOID
102 NTAPI
103 CcPrepareMdlWrite(IN PFILE_OBJECT FileObject,
104 IN PLARGE_INTEGER FileOffset,
105 IN ULONG Length,
106 OUT PMDL *MdlChain,
107 OUT PIO_STATUS_BLOCK IoStatus)
108 {
109 *MdlChain = CcpBuildCacheMdl
110 (FileObject,
111 FileOffset,
112 Length,
113 IoStatus);
114 }
115
116 VOID
117 NTAPI
118 CcMdlWriteComplete(IN PFILE_OBJECT FileObject,
119 IN PLARGE_INTEGER FileOffset,
120 IN PMDL MdlChain)
121 {
122 IoFreeMdl(MdlChain);
123 }
124
125 VOID
126 NTAPI
127 CcMdlWriteComplete2(IN PFILE_OBJECT FileObject,
128 IN PLARGE_INTEGER FileOffset,
129 IN PMDL MdlChain)
130 {
131 DPRINT("Not sure\n");
132 }
133
134 VOID
135 NTAPI
136 CcMdlWriteAbort(IN PFILE_OBJECT FileObject,
137 IN PMDL MdlChain)
138 {
139 ASSERT(FALSE);
140 IoFreeMdl(MdlChain);
141 }
142
143 /* EOF */