- split logoff and shutdown resources
[reactos.git] / reactos / ntoskrnl / fs / mcb.c
index 9eba357..abc255d 100644 (file)
@@ -1,18 +1,21 @@
-/* $Id: mcb.c,v 1.11 2003/12/30 18:52:03 fireball Exp $
+/* $Id$
  *
- * reactos/ntoskrnl/fs/mcb.c
+ * COPYRIGHT:       See COPYING in the top level directory
+ * PROJECT:         ReactOS kernel
+ * FILE:            ntoskrnl/fs/mcb.c
+ * PURPOSE:         No purpose listed.
  *
+ * PROGRAMMERS:     No programmer listed.
  */
-#include <ddk/ntddk.h>
-#include <ddk/ntifs.h>
 
+#include <ntoskrnl.h>
 #include <internal/debug.h>
 
 /**********************************************************************
  * NAME                                                        EXPORTED
  *
  * DESCRIPTION
- *     
+ *
  * ARGUMENTS
  *
  * RETURN VALUE
@@ -42,7 +45,7 @@ FsRtlAddMcbEntry (IN PMCB     Mcb,
                  IN LBN      Lbn,
                  IN ULONG    SectorCount)
 {
-  return FsRtlAddLargeMcbEntry(& Mcb->LargeMcb,
+  return FsRtlAddLargeMcbEntry(& Mcb->DummyFieldThatSizesThisStructureCorrectly,
                               (LONGLONG) Vbn,
                               (LONGLONG) Lbn,
                               (LONGLONG) SectorCount);
@@ -64,7 +67,7 @@ FsRtlGetNextLargeMcbEntry(IN PLARGE_MCB Mcb,
 
 
 /*
- * @unimplemented
+ * @implemented
  */
 BOOLEAN STDCALL
 FsRtlGetNextMcbEntry (IN PMCB     Mcb,
@@ -73,19 +76,25 @@ FsRtlGetNextMcbEntry (IN PMCB     Mcb,
                      OUT PLBN    Lbn,
                      OUT PULONG  SectorCount)
 {
-  BOOLEAN  rc=FALSE;
+  BOOLEAN Return = 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);
+  /* Call the Large version */
+  Return = FsRtlGetNextLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
+                                     RunIndex,
+                                     &llVbn,
+                                     &llLbn,
+                                     &llSectorCount);
+
+  /* Return everything typecasted */
+  *Vbn = (ULONG)llVbn;
+  *Lbn = (ULONG)llLbn;
+  *SectorCount = (ULONG)llSectorCount;
+
+  /* And return the original value */
+  return(Return);
 }
 
 
@@ -97,7 +106,7 @@ FsRtlInitializeLargeMcb(IN PLARGE_MCB Mcb,
                        IN POOL_TYPE PoolType)
 {
   UNIMPLEMENTED;
-  Mcb->PoolType = PoolType;
+  Mcb->BaseMcb.PoolType = PoolType;
 }
 
 /*
@@ -108,7 +117,7 @@ VOID STDCALL
 FsRtlInitializeMcb (IN PMCB         Mcb,
                    IN POOL_TYPE    PoolType)
 {
-  FsRtlInitializeLargeMcb(& Mcb->LargeMcb, PoolType);
+  FsRtlInitializeLargeMcb(& Mcb->DummyFieldThatSizesThisStructureCorrectly, PoolType);
 }
 
 
@@ -128,6 +137,51 @@ FsRtlLookupLargeMcbEntry(IN PLARGE_MCB Mcb,
   return(FALSE);
 }
 
+/*
+ * @unimplemented
+ */
+BOOLEAN
+STDCALL
+FsRtlLookupLastLargeMcbEntryAndIndex (
+    IN PLARGE_MCB OpaqueMcb,
+    OUT PLONGLONG LargeVbn,
+    OUT PLONGLONG LargeLbn,
+    OUT PULONG Index
+    )
+{
+  UNIMPLEMENTED;
+  return(FALSE);
+}
+
+/*
+ * @unimplemented
+ */
+PFSRTL_PER_STREAM_CONTEXT
+STDCALL
+FsRtlLookupPerStreamContextInternal (
+    IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
+    IN PVOID OwnerId OPTIONAL,
+    IN PVOID InstanceId OPTIONAL
+    )
+{
+  UNIMPLEMENTED;
+  return(FALSE);
+}
+
+/*
+ * @unimplemented
+ */
+PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/
+STDCALL
+FsRtlLookupPerFileObjectContext (
+    IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
+    IN PVOID OwnerId OPTIONAL,
+    IN PVOID InstanceId OPTIONAL
+    )
+{
+  UNIMPLEMENTED;
+  return(FALSE);
+}
 
 /*
  * @unimplemented
@@ -143,30 +197,60 @@ FsRtlLookupLastLargeMcbEntry(IN PLARGE_MCB Mcb,
 
 
 /*
- * @unimplemented
+ * @implemented
  */
 BOOLEAN STDCALL
-FsRtlLookupLastMcbEntry (IN PMCB     Mcb,
-                        OUT PVBN    Vbn,
-                        OUT PLBN    Lbn)
+FsRtlLookupLastMcbEntry(IN PMCB Mcb,
+                        OUT PVBN Vbn,
+                        OUT PLBN Lbn)
 {
-  UNIMPLEMENTED;
-  return(FALSE);
+  BOOLEAN Return = FALSE;
+  LONGLONG llVbn;
+  LONGLONG llLbn;
+
+  /* Call the Large version */
+  Return = FsRtlLookupLastLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
+                                        &llVbn,
+                                        &llLbn);
+
+  /* Return everything typecasted */
+  *Vbn = (ULONG)llVbn;
+  *Lbn = (ULONG)llLbn;
+
+  /* And return the original value */
+  return(Return);
 }
 
 
 /*
- * @unimplemented
+ * @implemented
  */
 BOOLEAN STDCALL
-FsRtlLookupMcbEntry (IN PMCB     Mcb,
-                    IN VBN      Vbn,
-                    OUT PLBN    Lbn,
-                    OUT PULONG  SectorCount OPTIONAL,
-                    OUT PULONG  Index)
+FsRtlLookupMcbEntry(IN PMCB Mcb,
+                    IN VBN Vbn,
+                    OUT PLBN Lbn,
+                    OUT PULONG SectorCount OPTIONAL,
+                    OUT PULONG Index)
 {
-  UNIMPLEMENTED;
-  return(FALSE);
+  BOOLEAN Return = FALSE;
+  LONGLONG llLbn;
+  LONGLONG llSectorCount;
+
+  /* Call the Large version */
+  Return = FsRtlLookupLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
+                                    (LONGLONG)Vbn,
+                                    &llLbn,
+                                    &llSectorCount,
+                                    NULL,
+                                    NULL,
+                                    Index);
+
+  /* Return everything typecasted */
+  *Lbn = (ULONG)llLbn;
+  if (SectorCount) *SectorCount = (ULONG)llSectorCount;
+
+  /* And return the original value */
+  return(Return);
 }
 
 
@@ -178,7 +262,7 @@ FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb)
 {
   ULONG NumberOfRuns;
   ExAcquireFastMutex (Mcb->FastMutex);
-  NumberOfRuns=Mcb->PairCount;
+  NumberOfRuns=Mcb->BaseMcb.MaximumPairCount;
   ExReleaseFastMutex (Mcb->FastMutex);
   return(NumberOfRuns);
 }
@@ -192,7 +276,7 @@ FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb)
 ULONG STDCALL
 FsRtlNumberOfRunsInMcb (IN PMCB Mcb)
 {
-  return FsRtlNumberOfRunsInLargeMcb(& Mcb->LargeMcb);
+  return FsRtlNumberOfRunsInLargeMcb(& Mcb->DummyFieldThatSizesThisStructureCorrectly);
 }
 
 
@@ -209,17 +293,33 @@ FsRtlRemoveLargeMcbEntry(IN PLARGE_MCB Mcb,
 
 
 /*
- * @unimplemented
+ * @implemented
  */
 VOID STDCALL
 FsRtlRemoveMcbEntry (IN PMCB     Mcb,
                     IN VBN      Vbn,
                     IN ULONG    SectorCount)
 {
-  UNIMPLEMENTED;
+    /* Call the large function */
+      return FsRtlRemoveLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
+                                      (LONGLONG)Vbn,
+                                      (LONGLONG)SectorCount);
 }
 
 
+/*
+ * @unimplemented
+ */
+VOID
+STDCALL
+FsRtlResetLargeMcb (
+    IN PLARGE_MCB Mcb,
+    IN BOOLEAN SelfSynchronized
+    )
+{
+  UNIMPLEMENTED;
+}
+
 /*
  * @unimplemented
  */
@@ -253,7 +353,7 @@ VOID STDCALL
 FsRtlTruncateMcb (IN PMCB Mcb,
                  IN VBN  Vbn)
 {
-  FsRtlTruncateLargeMcb (& Mcb->LargeMcb, (LONGLONG) Vbn);
+  FsRtlTruncateLargeMcb (& Mcb->DummyFieldThatSizesThisStructureCorrectly, (LONGLONG) Vbn);
 }
 
 
@@ -274,7 +374,7 @@ FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb)
 VOID STDCALL
 FsRtlUninitializeMcb (IN PMCB Mcb)
 {
-  FsRtlUninitializeLargeMcb(& Mcb->LargeMcb);
+  FsRtlUninitializeLargeMcb(& Mcb->DummyFieldThatSizesThisStructureCorrectly);
 }