Implemented:
[reactos.git] / reactos / ntoskrnl / fs / mcb.c
1 /* $Id: mcb.c,v 1.17 2004/12/30 18:30:05 ion Exp $
2 *
3 * reactos/ntoskrnl/fs/mcb.c
4 *
5 */
6
7 #include <ntoskrnl.h>
8 #include <internal/debug.h>
9
10 /**********************************************************************
11 * NAME EXPORTED
12 *
13 * DESCRIPTION
14 *
15 * ARGUMENTS
16 *
17 * RETURN VALUE
18 *
19 * NOTES
20 *
21 * @unimplemented
22 */
23 BOOLEAN STDCALL
24 FsRtlAddLargeMcbEntry(IN PLARGE_MCB Mcb,
25 IN LONGLONG Vbn,
26 IN LONGLONG Lbn,
27 IN LONGLONG SectorCount)
28 {
29 UNIMPLEMENTED;
30 return(FALSE);
31 }
32
33 /*
34 * FsRtlAddMcbEntry: Obsolete
35 *
36 * @implemented
37 */
38 BOOLEAN STDCALL
39 FsRtlAddMcbEntry (IN PMCB Mcb,
40 IN VBN Vbn,
41 IN LBN Lbn,
42 IN ULONG SectorCount)
43 {
44 return FsRtlAddLargeMcbEntry(& Mcb->LargeMcb,
45 (LONGLONG) Vbn,
46 (LONGLONG) Lbn,
47 (LONGLONG) SectorCount);
48 }
49
50 /*
51 * @unimplemented
52 */
53 BOOLEAN STDCALL
54 FsRtlGetNextLargeMcbEntry(IN PLARGE_MCB Mcb,
55 IN ULONG RunIndex,
56 OUT PLONGLONG Vbn,
57 OUT PLONGLONG Lbn,
58 OUT PLONGLONG SectorCount)
59 {
60 UNIMPLEMENTED;
61 return(FALSE);
62 }
63
64
65 /*
66 * @implemented
67 */
68 BOOLEAN STDCALL
69 FsRtlGetNextMcbEntry (IN PMCB Mcb,
70 IN ULONG RunIndex,
71 OUT PVBN Vbn,
72 OUT PLBN Lbn,
73 OUT PULONG SectorCount)
74 {
75 BOOLEAN Return = FALSE;
76 LONGLONG llVbn;
77 LONGLONG llLbn;
78 LONGLONG llSectorCount;
79
80 /* Call the Large version */
81 Return = FsRtlGetNextLargeMcbEntry(&Mcb->LargeMcb,
82 RunIndex,
83 &llVbn,
84 &llLbn,
85 &llSectorCount);
86
87 /* Return everything typecasted */
88 *Vbn = (ULONG)llVbn;
89 *Lbn = (ULONG)llLbn;
90 *SectorCount = (ULONG)llSectorCount;
91
92 /* And return the original value */
93 return(Return);
94 }
95
96
97 /*
98 * @unimplemented
99 */
100 VOID STDCALL
101 FsRtlInitializeLargeMcb(IN PLARGE_MCB Mcb,
102 IN POOL_TYPE PoolType)
103 {
104 UNIMPLEMENTED;
105 Mcb->PoolType = PoolType;
106 }
107
108 /*
109 * FsRtlInitializeMcb: Obsolete
110 * @implemented
111 */
112 VOID STDCALL
113 FsRtlInitializeMcb (IN PMCB Mcb,
114 IN POOL_TYPE PoolType)
115 {
116 FsRtlInitializeLargeMcb(& Mcb->LargeMcb, PoolType);
117 }
118
119
120 /*
121 * @unimplemented
122 */
123 BOOLEAN STDCALL
124 FsRtlLookupLargeMcbEntry(IN PLARGE_MCB Mcb,
125 IN LONGLONG Vbn,
126 OUT PLONGLONG Lbn OPTIONAL,
127 OUT PLONGLONG SectorCountFromLbn OPTIONAL,
128 OUT PLONGLONG StartingLbn OPTIONAL,
129 OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
130 OUT PULONG Index OPTIONAL)
131 {
132 UNIMPLEMENTED;
133 return(FALSE);
134 }
135
136 /*
137 * @unimplemented
138 */
139 BOOLEAN
140 STDCALL
141 FsRtlLookupLastLargeMcbEntryAndIndex (
142 IN PLARGE_MCB OpaqueMcb,
143 OUT PLONGLONG LargeVbn,
144 OUT PLONGLONG LargeLbn,
145 OUT PULONG Index
146 )
147 {
148 UNIMPLEMENTED;
149 return(FALSE);
150 }
151
152 /*
153 * @unimplemented
154 */
155 PFSRTL_PER_STREAM_CONTEXT
156 STDCALL
157 FsRtlLookupPerStreamContextInternal (
158 IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
159 IN PVOID OwnerId OPTIONAL,
160 IN PVOID InstanceId OPTIONAL
161 )
162 {
163 UNIMPLEMENTED;
164 return(FALSE);
165 }
166
167 /*
168 * @unimplemented
169 */
170 PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/
171 STDCALL
172 FsRtlLookupPerFileObjectContext (
173 IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
174 IN PVOID OwnerId OPTIONAL,
175 IN PVOID InstanceId OPTIONAL
176 )
177 {
178 UNIMPLEMENTED;
179 return(FALSE);
180 }
181
182 /*
183 * @unimplemented
184 */
185 BOOLEAN STDCALL
186 FsRtlLookupLastLargeMcbEntry(IN PLARGE_MCB Mcb,
187 OUT PLONGLONG Vbn,
188 OUT PLONGLONG Lbn)
189 {
190 UNIMPLEMENTED;
191 return(FALSE);
192 }
193
194
195 /*
196 * @implemented
197 */
198 BOOLEAN STDCALL
199 FsRtlLookupLastMcbEntry(IN PMCB Mcb,
200 OUT PVBN Vbn,
201 OUT PLBN Lbn)
202 {
203 BOOLEAN Return = FALSE;
204 LONGLONG llVbn;
205 LONGLONG llLbn;
206
207 /* Call the Large version */
208 Return = FsRtlLookupLastLargeMcbEntry(&Mcb->LargeMcb,
209 &llVbn,
210 &llLbn);
211
212 /* Return everything typecasted */
213 *Vbn = (ULONG)llVbn;
214 *Lbn = (ULONG)llLbn;
215
216 /* And return the original value */
217 return(Return);
218 }
219
220
221 /*
222 * @implemented
223 */
224 BOOLEAN STDCALL
225 FsRtlLookupMcbEntry(IN PMCB Mcb,
226 IN VBN Vbn,
227 OUT PLBN Lbn,
228 OUT PULONG SectorCount OPTIONAL,
229 OUT PULONG Index)
230 {
231 BOOLEAN Return = FALSE;
232 LONGLONG llLbn;
233 LONGLONG llSectorCount;
234
235 /* Call the Large version */
236 Return = FsRtlLookupLargeMcbEntry(&Mcb->LargeMcb,
237 (LONGLONG)Vbn,
238 &llLbn,
239 &llSectorCount,
240 NULL,
241 NULL,
242 Index);
243
244 /* Return everything typecasted */
245 *Lbn = (ULONG)llLbn;
246 if (SectorCount) *SectorCount = (ULONG)llSectorCount;
247
248 /* And return the original value */
249 return(Return);
250 }
251
252
253 /*
254 * @implemented
255 */
256 ULONG STDCALL
257 FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb)
258 {
259 ULONG NumberOfRuns;
260 ExAcquireFastMutex (Mcb->FastMutex);
261 NumberOfRuns=Mcb->PairCount;
262 ExReleaseFastMutex (Mcb->FastMutex);
263 return(NumberOfRuns);
264 }
265
266
267 /*
268 * FsRtlNumberOfRunsInMcb: Obsolete
269 *
270 * @implemented
271 */
272 ULONG STDCALL
273 FsRtlNumberOfRunsInMcb (IN PMCB Mcb)
274 {
275 return FsRtlNumberOfRunsInLargeMcb(& Mcb->LargeMcb);
276 }
277
278
279 /*
280 * @unimplemented
281 */
282 VOID STDCALL
283 FsRtlRemoveLargeMcbEntry(IN PLARGE_MCB Mcb,
284 IN LONGLONG Vbn,
285 IN LONGLONG SectorCount)
286 {
287 UNIMPLEMENTED;
288 }
289
290
291 /*
292 * @implemented
293 */
294 VOID STDCALL
295 FsRtlRemoveMcbEntry (IN PMCB Mcb,
296 IN VBN Vbn,
297 IN ULONG SectorCount)
298 {
299 /* Call the large function */
300 return FsRtlRemoveLargeMcbEntry(&Mcb->LargeMcb,
301 (LONGLONG)Vbn,
302 (LONGLONG)SectorCount);
303 }
304
305
306 /*
307 * @unimplemented
308 */
309 VOID
310 STDCALL
311 FsRtlResetLargeMcb (
312 IN PLARGE_MCB Mcb,
313 IN BOOLEAN SelfSynchronized
314 )
315 {
316 UNIMPLEMENTED;
317 }
318
319 /*
320 * @unimplemented
321 */
322 BOOLEAN STDCALL
323 FsRtlSplitLargeMcb(IN PLARGE_MCB Mcb,
324 IN LONGLONG Vbn,
325 IN LONGLONG Amount)
326 {
327 UNIMPLEMENTED;
328 return(FALSE);
329 }
330
331
332 /*
333 * @unimplemented
334 */
335 VOID STDCALL
336 FsRtlTruncateLargeMcb(IN PLARGE_MCB Mcb,
337 IN LONGLONG Vbn)
338 {
339 UNIMPLEMENTED;
340 }
341
342
343 /*
344 * FsRtlTruncateMcb: Obsolete
345 *
346 * @implemented
347 */
348 VOID STDCALL
349 FsRtlTruncateMcb (IN PMCB Mcb,
350 IN VBN Vbn)
351 {
352 FsRtlTruncateLargeMcb (& Mcb->LargeMcb, (LONGLONG) Vbn);
353 }
354
355
356 /*
357 * @unimplemented
358 */
359 VOID STDCALL
360 FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb)
361 {
362 UNIMPLEMENTED;
363 }
364
365 /*
366 * FsRtlUninitializeMcb: Obsolete
367 *
368 * @implemented
369 */
370 VOID STDCALL
371 FsRtlUninitializeMcb (IN PMCB Mcb)
372 {
373 FsRtlUninitializeLargeMcb(& Mcb->LargeMcb);
374 }
375
376
377 /* EOF */
378