1 /* $Id: mcb.c,v 1.16 2004/11/21 17:47:22 navaraf Exp $
3 * reactos/ntoskrnl/fs/mcb.c
8 #include <internal/debug.h>
10 /**********************************************************************
24 FsRtlAddLargeMcbEntry(IN PLARGE_MCB Mcb
,
27 IN LONGLONG SectorCount
)
34 * FsRtlAddMcbEntry: Obsolete
39 FsRtlAddMcbEntry (IN PMCB Mcb
,
44 return FsRtlAddLargeMcbEntry(& Mcb
->LargeMcb
,
47 (LONGLONG
) SectorCount
);
54 FsRtlGetNextLargeMcbEntry(IN PLARGE_MCB Mcb
,
58 OUT PLONGLONG SectorCount
)
69 FsRtlGetNextMcbEntry (IN PMCB Mcb
,
73 OUT PULONG SectorCount
)
78 LONGLONG llSectorCount
;
80 // FIXME: how should conversion be done
81 // FIXME: between 32 and 64 bits?
82 rc
=FsRtlGetNextLargeMcbEntry (& Mcb
->LargeMcb
,
95 FsRtlInitializeLargeMcb(IN PLARGE_MCB Mcb
,
96 IN POOL_TYPE PoolType
)
99 Mcb
->PoolType
= PoolType
;
103 * FsRtlInitializeMcb: Obsolete
107 FsRtlInitializeMcb (IN PMCB Mcb
,
108 IN POOL_TYPE PoolType
)
110 FsRtlInitializeLargeMcb(& Mcb
->LargeMcb
, PoolType
);
118 FsRtlLookupLargeMcbEntry(IN PLARGE_MCB Mcb
,
120 OUT PLONGLONG Lbn OPTIONAL
,
121 OUT PLONGLONG SectorCountFromLbn OPTIONAL
,
122 OUT PLONGLONG StartingLbn OPTIONAL
,
123 OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL
,
124 OUT PULONG Index OPTIONAL
)
135 FsRtlLookupLastLargeMcbEntryAndIndex (
136 IN PLARGE_MCB OpaqueMcb
,
137 OUT PLONGLONG LargeVbn
,
138 OUT PLONGLONG LargeLbn
,
149 PFSRTL_PER_STREAM_CONTEXT
151 FsRtlLookupPerStreamContextInternal (
152 IN PFSRTL_ADVANCED_FCB_HEADER StreamContext
,
153 IN PVOID OwnerId OPTIONAL
,
154 IN PVOID InstanceId OPTIONAL
164 PVOID
/* PFSRTL_PER_FILE_OBJECT_CONTEXT*/
166 FsRtlLookupPerFileObjectContext (
167 IN PFSRTL_ADVANCED_FCB_HEADER StreamContext
,
168 IN PVOID OwnerId OPTIONAL
,
169 IN PVOID InstanceId OPTIONAL
180 FsRtlLookupLastLargeMcbEntry(IN PLARGE_MCB Mcb
,
193 FsRtlLookupLastMcbEntry (IN PMCB Mcb
,
206 FsRtlLookupMcbEntry (IN PMCB Mcb
,
209 OUT PULONG SectorCount OPTIONAL
,
221 FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb
)
224 ExAcquireFastMutex (Mcb
->FastMutex
);
225 NumberOfRuns
=Mcb
->PairCount
;
226 ExReleaseFastMutex (Mcb
->FastMutex
);
227 return(NumberOfRuns
);
232 * FsRtlNumberOfRunsInMcb: Obsolete
237 FsRtlNumberOfRunsInMcb (IN PMCB Mcb
)
239 return FsRtlNumberOfRunsInLargeMcb(& Mcb
->LargeMcb
);
247 FsRtlRemoveLargeMcbEntry(IN PLARGE_MCB Mcb
,
249 IN LONGLONG SectorCount
)
259 FsRtlRemoveMcbEntry (IN PMCB Mcb
,
261 IN ULONG SectorCount
)
274 IN BOOLEAN SelfSynchronized
284 FsRtlSplitLargeMcb(IN PLARGE_MCB Mcb
,
297 FsRtlTruncateLargeMcb(IN PLARGE_MCB Mcb
,
305 * FsRtlTruncateMcb: Obsolete
310 FsRtlTruncateMcb (IN PMCB Mcb
,
313 FsRtlTruncateLargeMcb (& Mcb
->LargeMcb
, (LONGLONG
) Vbn
);
321 FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb
)
327 * FsRtlUninitializeMcb: Obsolete
332 FsRtlUninitializeMcb (IN PMCB Mcb
)
334 FsRtlUninitializeLargeMcb(& Mcb
->LargeMcb
);