FsRtlNumberOfRunsInLargeMcb() implemented (simple).
[reactos.git] / reactos / ntoskrnl / fs / mcb.c
index db395f3..58327ff 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mcb.c,v 1.3 2002/09/05 20:41:05 ea Exp $
+/* $Id: mcb.c,v 1.9 2003/04/27 16:25:25 ea Exp $
  *
  * reactos/ntoskrnl/fs/mcb.c
  *
@@ -29,17 +29,17 @@ FsRtlAddLargeMcbEntry(IN PLARGE_MCB Mcb,
   return(FALSE);
 }
 
-
-VOID
-STDCALL
-FsRtlAddMcbEntry (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2,
-       DWORD   Unknown3
-       )
+/* FsRtlAddMcbEntry: Obsolete */
+BOOLEAN STDCALL
+FsRtlAddMcbEntry (IN PMCB     Mcb,
+                 IN VBN      Vbn,
+                 IN LBN      Lbn,
+                 IN ULONG    SectorCount)
 {
-       UNIMPLEMENTED
+  return FsRtlAddLargeMcbEntry(& Mcb->LargeMcb,
+                              (LONGLONG) Vbn,
+                              (LONGLONG) Lbn,
+                              (LONGLONG) SectorCount);
 }
 
 
@@ -55,17 +55,26 @@ FsRtlGetNextLargeMcbEntry(IN PLARGE_MCB Mcb,
 }
 
 
-VOID
-STDCALL
-FsRtlGetNextMcbEntry (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2,
-       DWORD   Unknown3,
-       DWORD   Unknown4
-       )
+BOOLEAN STDCALL
+FsRtlGetNextMcbEntry (IN PMCB     Mcb,
+                     IN ULONG    RunIndex,
+                     OUT PVBN    Vbn,
+                     OUT PLBN    Lbn,
+                     OUT PULONG  SectorCount)
 {
-       UNIMPLEMENTED
+  BOOLEAN  rc=FALSE;
+  LONGLONG llVbn;
+  LONGLONG llLbn;
+  LONGLONG llSectorCount;
+
+  // FIXME: how should conversion be done
+  // FIXME: between 32 and 64 bits?
+  rc=FsRtlGetNextLargeMcbEntry (& Mcb->LargeMcb,
+                               RunIndex,
+                               & llVbn,
+                               & llLbn,
+                               & llSectorCount);
+  return(rc);
 }
 
 
@@ -74,18 +83,15 @@ FsRtlInitializeLargeMcb(IN PLARGE_MCB Mcb,
                        IN POOL_TYPE PoolType)
 {
   UNIMPLEMENTED
-       Mcb->PoolType = PoolType;
+  Mcb->PoolType = PoolType;
 }
 
-
-VOID
-STDCALL
-FsRtlInitializeMcb (
-       DWORD   Unknown0,
-       DWORD   Unknown1
-       )
+/* FsRtlInitializeMcb: Obsolete */
+VOID STDCALL
+FsRtlInitializeMcb (IN PMCB         Mcb,
+                   IN POOL_TYPE    PoolType)
 {
-       UNIMPLEMENTED
+  FsRtlInitializeLargeMcb(& Mcb->LargeMcb, PoolType);
 }
 
 
@@ -113,47 +119,44 @@ FsRtlLookupLastLargeMcbEntry(IN PLARGE_MCB Mcb,
 }
 
 
-VOID
-STDCALL
-FsRtlLookupLastMcbEntry (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2
-       )
+BOOLEAN STDCALL
+FsRtlLookupLastMcbEntry (IN PMCB     Mcb,
+                        OUT PVBN    Vbn,
+                        OUT PLBN    Lbn)
 {
-       UNIMPLEMENTED
+  UNIMPLEMENTED
+  return(FALSE);
 }
 
 
-VOID
-STDCALL
-FsRtlLookupMcbEntry (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2,
-       DWORD   Unknown3,
-       DWORD   Unknown4
-       )
+BOOLEAN STDCALL
+FsRtlLookupMcbEntry (IN PMCB     Mcb,
+                    IN VBN      Vbn,
+                    OUT PLBN    Lbn,
+                    OUT PULONG  SectorCount OPTIONAL,
+                    OUT PULONG  Index)
 {
-       UNIMPLEMENTED
+  UNIMPLEMENTED
+  return(FALSE);
 }
 
 
 ULONG STDCALL
 FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb)
 {
-  UNIMPLEMENTED
-  return(0);
+  ULONG NumberOfRuns;
+  ExAcquireFastMutex (Mcb->FastMutex);
+  NumberOfRuns=Mcb->PairCount;
+  ExReleaseFastMutex (Mcb->FastMutex);
+  return(NumberOfRuns);
 }
 
 
-VOID
-STDCALL
-FsRtlNumberOfRunsInMcb (
-       DWORD   Unknown0
-       )
+/* FsRtlNumberOfRunsInMcb: Obsolete */
+ULONG STDCALL
+FsRtlNumberOfRunsInMcb (IN PMCB Mcb)
 {
-       UNIMPLEMENTED
+  return FsRtlNumberOfRunsInLargeMcb(& Mcb->LargeMcb);
 }
 
 
@@ -166,15 +169,12 @@ FsRtlRemoveLargeMcbEntry(IN PLARGE_MCB Mcb,
 }
 
 
-VOID
-STDCALL
-FsRtlRemoveMcbEntry (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2
-       )
+VOID STDCALL
+FsRtlRemoveMcbEntry (IN PMCB     Mcb,
+                    IN VBN      Vbn,
+                    IN ULONG    SectorCount)
 {
-       UNIMPLEMENTED
+  UNIMPLEMENTED
 }
 
 
@@ -196,14 +196,12 @@ FsRtlTruncateLargeMcb(IN PLARGE_MCB Mcb,
 }
 
 
-VOID
-STDCALL
-FsRtlTruncateMcb (
-       DWORD   Unknown0,
-       DWORD   Unknown1
-       )
+/* FsRtlTruncateMcb: Obsolete */
+VOID STDCALL
+FsRtlTruncateMcb (IN PMCB Mcb,
+                 IN VBN  Vbn)
 {
-       UNIMPLEMENTED
+  FsRtlTruncateLargeMcb (& Mcb->LargeMcb, (LONGLONG) Vbn);
 }
 
 
@@ -213,14 +211,11 @@ FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb)
   UNIMPLEMENTED;
 }
 
-
-VOID
-STDCALL
-FsRtlUninitializeMcb (
-       DWORD   Unknown0
-       )
+/* FsRtlUninitializeMcb: Obsolete */
+VOID STDCALL
+FsRtlUninitializeMcb (IN PMCB Mcb)
 {
-       UNIMPLEMENTED
+  FsRtlUninitializeLargeMcb(& Mcb->LargeMcb);
 }