[ros-diffs] [ion] 26693: - More simplification: Get rid of CmImportBinaryHive, CmpImportSystemHive, CmpImportHardwareHive and all of import.c! - Fix CmpInitializeHive to set any flags that are passed, not assume HIVE_NO_FILE by default. - "Import" the system and hardware hives using CmpInitializeHive instead of the cmimport.c routines which are gone. - Get rid of old/unused cmdata.c in /cm.

ion at svn.reactos.org ion at svn.reactos.org
Fri May 11 08:24:00 CEST 2007


Author: ion
Date: Fri May 11 10:24:00 2007
New Revision: 26693

URL: http://svn.reactos.org/svn/reactos?rev=26693&view=rev
Log:
- More simplification: Get rid of CmImportBinaryHive, CmpImportSystemHive, CmpImportHardwareHive and all of import.c!
- Fix CmpInitializeHive to set any flags that are passed, not assume HIVE_NO_FILE by default.
- "Import" the system and hardware hives using CmpInitializeHive instead of the cmimport.c routines which are gone.
- Get rid of old/unused cmdata.c in /cm.

Removed:
    trunk/reactos/ntoskrnl/cm/cmdata.c
    trunk/reactos/ntoskrnl/cm/import.c
Modified:
    trunk/reactos/ntoskrnl/cm/regfile.c
    trunk/reactos/ntoskrnl/cm/registry.c
    trunk/reactos/ntoskrnl/ntoskrnl.rbuild

Removed: trunk/reactos/ntoskrnl/cm/cmdata.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/cmdata.c?rev=26692&view=auto
==============================================================================
--- trunk/reactos/ntoskrnl/cm/cmdata.c (original)
+++ trunk/reactos/ntoskrnl/cm/cmdata.c (removed)
@@ -1,710 +1,0 @@
-#include "ntoskrnl.h"
-#include "cm.h"
-
-/* SYSTEM CONFIGURATION VECTOR ***********************************************/
-
-ULONG DummyData;
-ULONG CmNtGlobalFlag;
-ULONG CmNtCSDVersion;
-
-WCHAR CmDefaultLanguageId[12];
-ULONG CmDefaultLanguageIdLength = sizeof(CmDefaultLanguageId);
-ULONG CmDefaultLanguageIdType;
-
-WCHAR CmInstallUILanguageId[12];
-ULONG CmInstallUILanguageIdLength = sizeof(CmInstallUILanguageId);
-ULONG CmInstallUILanguageIdType;
-
-WCHAR CmSuiteBuffer[128];
-ULONG CmSuiteBufferLength = sizeof(CmSuiteBuffer);
-ULONG CmSuiteBufferType;
-
-extern LANGID PsInstallUILanguageId;
-extern LANGID PsDefaultUILanguageId;
-
-//CMHIVE CmControlHive;
-
-CM_SYSTEM_CONTROL_VECTOR CmControlVector[] =
-{
-    {
-        L"Session Manager",
-        L"ProtectionMode",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager",
-        L"ObjectSecurityMode",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager",
-        L"LUIDDeviceMapsDisabled",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"LSA",
-        L"AuditBaseDirectories",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"LSA",
-        L"AuditBaseObjects",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"LSA\\audit",
-        L"ProcessAccessesToAudit",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"TimeZoneInformation",
-        L"ActiveTimeBias",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"TimeZoneInformation",
-        L"Bias",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"TimeZoneInformation",
-        L"RealTimeIsUniversal",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager",
-        L"GlobalFlag",
-        &CmNtGlobalFlag,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"PagedPoolQuota",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"NonPagedPoolQuota",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"PagingFileQuota",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"AllocationPreference",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"DynamicMemory",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"Mirroring",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"Mirroring",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"SystemViewSize",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"SessionViewSize",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"SessionImageSize",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"SessionPoolSize",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"PoolUsageMaximum",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"MapAllocationFragment",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-{
-        L"Session Manager\\Memory Management",
-        L"PagedPoolSize",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"NonPagedPoolSize",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"NonPagedPoolMaximumPercent",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"LargeSystemCache",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"LargeStackSize",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"SystemPages",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"LowMemoryThreshold",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"HighMemoryThreshold",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"DisablePagingExecutive",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"ModifiedPageLife",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"SecondLevelDataCache",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"ClearPageFileAtShutdown",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"PoolTagSmallTableSize",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"PoolTagBigTableSize",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"PoolTag",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"PoolTagOverruns",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"SnapUnloads",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"ProtectNonPagedPool",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"TrackLockedPages",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"TrackPtes",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"VerifyDrivers",
-        &DummyData,
-        &DummyData,
-        &DummyData
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"VerifyDriverLevel",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"VerifyMode",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"LargePageMinimum",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"EnforceWriteProtection",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"MakeLowMemory",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Memory Management",
-        L"WriteWatch",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Executive",
-        L"AdditionalCriticalWorkerThreads",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Executive",
-        L"AdditionalDelayedWorkerThreads",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Executive",
-        L"PriorityQuantumMatrix",
-        &DummyData,
-        &DummyData,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Kernel",
-        L"DpcQueueDepth",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Kernel",
-        L"MinimumDpcRate",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Kernel",
-        L"AdjustDpcThreshold",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Kernel",
-        L"IdealDpcRate",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\I/O System",
-        L"CountOperations",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\I/O System",
-        L"LargeIrpStackLocations",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\I/O System",
-        L"IoVerifierLevel",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager",
-        L"ResourceTimeoutCount",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager",
-        L"CriticalSectionTimeout",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager",
-        L"HeapSegmentReserve",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager",
-        L"HeapSegmentCommit",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager",
-        L"HeapDeCommitTotalFreeThreshold",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager",
-        L"HeapDeCommitFreeBlockThreshold",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"ProductOptions",
-        L"ProductType",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Terminal Server",
-        L"TSEnabled",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Terminal Server",
-        L"TSAppCompat",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-
-    {
-        L"ProductOptions",
-        L"ProductSuite",
-        CmSuiteBuffer,
-        &CmSuiteBufferLength,
-        &CmSuiteBufferType
-    },
-
-    {
-        L"Windows",
-        L"CSDVersion",
-        &CmNtCSDVersion,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Nls\\Language",
-        L"Default",
-        CmDefaultLanguageId,
-        &CmDefaultLanguageIdLength,
-        &CmDefaultLanguageIdType
-    },
-
-    {
-        L"Nls\\Language",
-        L"InstallLanguage",
-        CmInstallUILanguageId,
-        &CmInstallUILanguageIdLength,
-        &CmInstallUILanguageIdType
-    },
-
-    {
-        L"\0\0",
-        L"RegistrySizeLimit",
-        &DummyData,
-        &DummyData,
-        &DummyData
-    },
-
-    {
-        L"Session Manager",
-        L"ForceNpxEmulation",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager",
-        L"PowerPolicySimulate",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager\\Executive",
-        L"MaxTimeSeparationBeforeCorrect",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Windows",
-        L"ShutdownTime",
-        &DummyData,
-        &DummyData,
-        NULL
-    },
-
-    {
-        L"PriorityControl",
-        L"Win32PrioritySeparation",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager",
-        L"EnableTimerWatchdog",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"Session Manager",
-        L"Debugger Retries",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"WMI",
-        L"MaxEventSize",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"WMI\\Trace",
-        L"UsePerformanceClock",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        L"WMI\\Trace",
-        L"TraceAlignment",
-        &DummyData,
-        NULL,
-        NULL
-    },
-
-    {
-        NULL,
-        NULL,
-        NULL,
-        NULL,
-        NULL
-}
-};
-

Removed: trunk/reactos/ntoskrnl/cm/import.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/import.c?rev=26692&view=auto
==============================================================================
--- trunk/reactos/ntoskrnl/cm/import.c (original)
+++ trunk/reactos/ntoskrnl/cm/import.c (removed)
@@ -1,136 +1,0 @@
-/* $Id$
- *
- * PROJECT:         ReactOS Kernel
- * COPYRIGHT:       GPL - See COPYING in the top level directory
- * FILE:            ntoskrnl/cm/import.c
- * PURPOSE:         Registry-Hive import functions
- *
- * PROGRAMMERS:     Eric Kohl
- */
-
-/* INCLUDES *****************************************************************/
-
-#include <ntoskrnl.h>
-#define NDEBUG
-#include <internal/debug.h>
-
-#include "cm.h"
-
-#if defined (ALLOC_PRAGMA)
-#pragma alloc_text(INIT, CmImportHardwareHive)
-#endif
-
-/* GLOBALS ******************************************************************/
-
-/* FUNCTIONS ****************************************************************/
-
-static BOOLEAN
-CmImportBinaryHive (PCHAR ChunkBase,
-		    ULONG ChunkSize,
-		    ULONG Flags,
-		    PEREGISTRY_HIVE *RegistryHive)
-{
-  PEREGISTRY_HIVE Hive;
-  NTSTATUS Status;
-
-  *RegistryHive = NULL;
-
-  /* Create a new hive */
-  Hive = ExAllocatePool (NonPagedPool,
-			 sizeof(EREGISTRY_HIVE));
-  if (Hive == NULL)
-    {
-      return FALSE;
-    }
-  RtlZeroMemory (Hive,
-		 sizeof(EREGISTRY_HIVE));
-
-  /* Set hive flags */
-  Hive->Flags = Flags;
-
-  /* Allocate hive header */
-  ((PHBASE_BLOCK)ChunkBase)->Length = ChunkSize;
-  Status = HvInitialize(&Hive->Hive, HV_OPERATION_MEMORY, 0, 0,
-                        (ULONG_PTR)ChunkBase, 0,
-                        CmpAllocate, CmpFree,
-                        CmpFileRead, CmpFileWrite, CmpFileSetSize,
-                        CmpFileFlush, NULL);
-  if (!NT_SUCCESS(Status))
-    {
-      DPRINT1 ("Opening hive failed (%x)\n", Status);
-      ExFreePool (Hive);
-      return FALSE;
-    }
-
-  CmPrepareHive(&Hive->Hive);
-
-  /* Acquire hive list lock exclusively */
-  KeEnterCriticalRegion();
-  ExAcquireResourceExclusiveLite(&CmiRegistryLock, TRUE);
-
-  DPRINT("Adding new hive\n");
-
-  /* Add the new hive to the hive list */
-  InsertTailList(&CmiHiveListHead, &Hive->HiveList);
-
-  /* Release hive list lock */
-  ExReleaseResourceLite(&CmiRegistryLock);
-  KeLeaveCriticalRegion();
-
-  *RegistryHive = Hive;
-
-  return TRUE;
-}
-
-
-BOOLEAN
-INIT_FUNCTION
-CmImportSystemHive(PCHAR ChunkBase,
-                   ULONG ChunkSize,
-                   OUT PEREGISTRY_HIVE *RegistryHive)
-{
-  *RegistryHive = NULL;
-
-  /* Import the binary system hive (non-volatile, offset-based, permanent) */
-  if (!CmImportBinaryHive (ChunkBase, ChunkSize, 0, RegistryHive))
-    {
-      return FALSE;
-    }
-
-  /* Set the hive filename */
-  RtlCreateUnicodeString (&(*RegistryHive)->HiveFileName,
-                          SYSTEM_REG_FILE);
-
-  /* Set the log filename */
-  RtlCreateUnicodeString (&(*RegistryHive)->LogFileName,
-                          SYSTEM_LOG_FILE);
-
-  return TRUE;
-}
-
-BOOLEAN
-INIT_FUNCTION
-CmImportHardwareHive(PCHAR ChunkBase,
-                     ULONG ChunkSize,
-                     OUT PEREGISTRY_HIVE *RegistryHive)
-{
-  *RegistryHive = NULL;
-
-  /* Import the binary system hive (volatile, offset-based, permanent) */
-  if (!CmImportBinaryHive (ChunkBase, ChunkSize, HIVE_NO_FILE, RegistryHive))
-    {
-      return FALSE;
-    }
-
-  /* Set the hive filename */
-  RtlInitUnicodeString (&(*RegistryHive)->HiveFileName,
-			NULL);
-
-  /* Set the log filename */
-  RtlInitUnicodeString (&(*RegistryHive)->LogFileName,
-			NULL);
-
-  return TRUE;
-}
-
-/* EOF */

Modified: trunk/reactos/ntoskrnl/cm/regfile.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/regfile.c?rev=26693&r1=26692&r2=26693&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/cm/regfile.c (original)
+++ trunk/reactos/ntoskrnl/cm/regfile.c Fri May 11 10:24:00 2007
@@ -422,8 +422,8 @@
         return Status;
     }
 
-    /* Set flag */
-    Hive->Flags = HIVE_NO_FILE;
+    /* Set flags */
+    Hive->Flags = HiveFlags;
 
     /* Check if we should verify the registry */
     if ((OperationType == HINIT_FILE) ||

Modified: trunk/reactos/ntoskrnl/cm/registry.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/registry.c?rev=26693&r1=26692&r2=26693&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/cm/registry.c (original)
+++ trunk/reactos/ntoskrnl/cm/registry.c Fri May 11 10:24:00 2007
@@ -252,6 +252,7 @@
     BOOLEAN Allocate;
     UNICODE_STRING KeyName;
     PEREGISTRY_HIVE SystemHive;
+    UNICODE_STRING HiveName = RTL_CONSTANT_STRING(L"SYSTEM");
     PAGED_CODE();
 
     /* Setup the ansi string */
@@ -279,10 +280,25 @@
     if (HiveBase)
     {
         /* Import it */
-        Status = CmImportSystemHive(HiveBase,
-                                    LoaderBlock->RegistryLength,
-                                    &SystemHive);
+        ((PHBASE_BLOCK)HiveBase)->Length = LoaderBlock->RegistryLength;
+        Status = CmpInitializeHive(&SystemHive,
+                                   HINIT_MEMORY,
+                                   0, //HIVE_NOLAZYFLUSH,
+                                   HFILE_TYPE_LOG,
+                                   HiveBase,
+                                   NULL,
+                                   NULL,
+                                   NULL,
+                                   &HiveName,
+                                   2);
         if (!NT_SUCCESS(Status)) return FALSE;
+        CmPrepareHive(&SystemHive->Hive);
+
+        /* Set the hive filename */
+        RtlCreateUnicodeString(&SystemHive->HiveFileName, SYSTEM_REG_FILE);
+
+        /* Set the log filename */
+        RtlCreateUnicodeString(&SystemHive->LogFileName, SYSTEM_LOG_FILE);
 
         /* We imported, no need to create a new hive */
         Allocate = FALSE;
@@ -393,6 +409,7 @@
     HANDLE RootKeyHandle;
     HCELL_INDEX RootIndex;
     NTSTATUS Status;
+    PCM_KEY_NODE KeyCell;
     PAGED_CODE();
 
     /* Setup the root node */
@@ -420,17 +437,26 @@
                             (PVOID*)&RootKey);
     if (!NT_SUCCESS(Status)) return FALSE;
 
+    /* Sanity check, and get the key cell */
+    ASSERT((&CmiVolatileHive->Hive)->ReleaseCellRoutine == NULL);
+    KeyCell = (PCM_KEY_NODE)HvGetCell(&CmiVolatileHive->Hive, RootIndex);
+    if (!KeyCell) return FALSE;
+
     /* Setup the root key */
     RootKey->RegistryHive = CmiVolatileHive;
     RootKey->KeyCellOffset = RootIndex;
-    RootKey->KeyCell = HvGetCell(&CmiVolatileHive->Hive, RootIndex);
+    RootKey->KeyCell = KeyCell;
     RootKey->ParentKey = RootKey;
     RootKey->Flags = 0;
     RootKey->SubKeyCounts = 0;
     RootKey->SubKeys = NULL;
     RootKey->SizeOfSubKeys = 0;
+
+    /* Insert it into the object list head */
     InsertTailList(&CmiKeyObjectListHead, &RootKey->ListEntry);
-    Status = RtlpCreateUnicodeString(&RootKey->Name, L"Registry", NonPagedPool);
+
+    /* Setup the name */
+    RtlpCreateUnicodeString(&RootKey->Name, L"Registry", NonPagedPool);
 
     /* Insert the key into the namespace */
     Status = ObInsertObject(RootKey,
@@ -467,7 +493,6 @@
     HANDLE ThreadHandle;
     CLIENT_ID ThreadId;
     PEREGISTRY_HIVE HardwareHive;
-    BOOLEAN Allocate = FALSE;
     PVOID BaseAddress;
     ULONG Length;
     PAGED_CODE();
@@ -513,7 +538,7 @@
     /* Build the master hive */
     Status = CmpInitializeHive(&CmiVolatileHive,
                                HINIT_CREATE,
-                               HIVE_VOLATILE,
+                               HIVE_VOLATILE | HIVE_NO_FILE,
                                HFILE_TYPE_PRIMARY,
                                NULL,
                                NULL,
@@ -595,12 +620,24 @@
         KEBUGCHECKEX(CONFIG_INITIALIZATION_FAILED, 1, 8, Status, 0);
     }
 
-    /* Initialize the hardware hive */
+    /* Import the hardware hive (FIXME: We should create it from scratch) */
     BaseAddress = CmpRosGetHardwareHive(&Length);
-    if (!CmImportHardwareHive(BaseAddress, Length, &HardwareHive))
-    {
-        /* Don't actually link anything below */
-        Allocate = TRUE;
+    ((PHBASE_BLOCK)BaseAddress)->Length = Length;
+    Status = CmpInitializeHive(&HardwareHive,
+                               HINIT_MEMORY, //HINIT_CREATE,
+                               HIVE_NO_FILE, //HIVE_VOLATILE,
+                               HFILE_TYPE_PRIMARY,
+                               BaseAddress, // NULL,
+                               NULL,
+                               NULL,
+                               NULL,
+                               NULL,
+                               0);
+    CmPrepareHive(&HardwareHive->Hive);
+    if (!NT_SUCCESS(Status))
+    {
+        /* Bugcheck */
+        KEBUGCHECKEX(CONFIG_INITIALIZATION_FAILED, 1, 11, Status, 0);
     }
 
     /* Attach it to the machine key */

Modified: trunk/reactos/ntoskrnl/ntoskrnl.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl.rbuild?rev=26693&r1=26692&r2=26693&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/ntoskrnl.rbuild (original)
+++ trunk/reactos/ntoskrnl/ntoskrnl.rbuild Fri May 11 10:24:00 2007
@@ -103,7 +103,6 @@
             <file>cmvalue.c</file>
     </directory>
     <directory name="cm">
-            <file>import.c</file>
             <file>ntfunc.c</file>
             <file>regfile.c</file>
             <file>registry.c</file>




More information about the Ros-diffs mailing list