-/*\r
- * PROJECT: registry manipulation library\r
- * LICENSE: GPL - See COPYING in the top level directory\r
- * COPYRIGHT: Copyright 2005 Filip Navara <navaraf@reactos.org>\r
- * Copyright 2001 - 2005 Eric Kohl\r
- */\r
-\r
-#include "cmlib.h"\r
-\r
-BOOLEAN CMAPI\r
-CmCreateRootNode(\r
- PHHIVE Hive,\r
- PCWSTR Name)\r
-{\r
- PCM_KEY_NODE KeyCell;\r
- HCELL_INDEX RootCellIndex;\r
- SIZE_T NameSize;\r
-\r
- NameSize = wcslen(Name) * sizeof(WCHAR);\r
- RootCellIndex = HvAllocateCell(Hive, sizeof(CM_KEY_NODE) + NameSize, HvStable);\r
- if (RootCellIndex == HCELL_NULL)\r
- return FALSE;\r
-\r
- Hive->HiveHeader->RootCell = RootCellIndex;\r
- Hive->HiveHeader->Checksum = HvpHiveHeaderChecksum(Hive->HiveHeader);\r
-\r
- KeyCell = (PCM_KEY_NODE)HvGetCell(Hive, RootCellIndex);\r
- KeyCell->Id = REG_KEY_CELL_ID;\r
- KeyCell->Flags = REG_KEY_ROOT_CELL;\r
- KeyCell->LastWriteTime.QuadPart = 0;\r
- KeyCell->Parent = HCELL_NULL;\r
- KeyCell->SubKeyCounts[0] = 0;\r
- KeyCell->SubKeyCounts[1] = 0;\r
- KeyCell->SubKeyLists[0] = HCELL_NULL;\r
- KeyCell->SubKeyLists[1] = HCELL_NULL;\r
- KeyCell->ValueList.Count = 0;\r
- KeyCell->ValueList.List = HCELL_NULL;\r
- KeyCell->SecurityKeyOffset = HCELL_NULL;\r
- KeyCell->ClassNameOffset = HCELL_NULL; \r
- KeyCell->NameSize = (USHORT)NameSize;\r
- KeyCell->ClassSize = 0;\r
- memcpy(KeyCell->Name, Name, NameSize);\r
-\r
- return TRUE;\r
-}\r
-\r
-static VOID CMAPI\r
-CmpPrepareKey(\r
- PHHIVE RegistryHive,\r
- PCM_KEY_NODE KeyCell)\r
-{\r
- PCM_KEY_NODE SubKeyCell;\r
- PHASH_TABLE_CELL HashCell;\r
- ULONG i;\r
-\r
- ASSERT(KeyCell->Id == REG_KEY_CELL_ID);\r
-\r
- KeyCell->SubKeyLists[HvVolatile] = HCELL_NULL;\r
- KeyCell->SubKeyCounts[HvVolatile] = 0;\r
-\r
- /* Enumerate and add subkeys */\r
- if (KeyCell->SubKeyCounts[HvStable] > 0)\r
- {\r
- HashCell = HvGetCell(RegistryHive, KeyCell->SubKeyLists[HvStable]);\r
-\r
- for (i = 0; i < KeyCell->SubKeyCounts[HvStable]; i++)\r
- {\r
- SubKeyCell = HvGetCell(RegistryHive, HashCell->Table[i].KeyOffset);\r
- CmpPrepareKey(RegistryHive, SubKeyCell);\r
- }\r
- }\r
-}\r
-\r
-VOID CMAPI\r
-CmPrepareHive(\r
- PHHIVE RegistryHive)\r
-{ \r
- PCM_KEY_NODE RootCell;\r
-\r
- RootCell = HvGetCell(RegistryHive, RegistryHive->HiveHeader->RootCell);\r
- CmpPrepareKey(RegistryHive, RootCell);\r
-}\r
+/*
+ * PROJECT: registry manipulation library
+ * LICENSE: GPL - See COPYING in the top level directory
+ * COPYRIGHT: Copyright 2005 Filip Navara <navaraf@reactos.org>
+ * Copyright 2001 - 2005 Eric Kohl
+ */
+
+#include "cmlib.h"
+
+BOOLEAN CMAPI
+CmCreateRootNode(
+ PHHIVE Hive,
+ PCWSTR Name)
+{
+ PCM_KEY_NODE KeyCell;
+ HCELL_INDEX RootCellIndex;
+ SIZE_T NameSize;
+
+ NameSize = wcslen(Name) * sizeof(WCHAR);
+ RootCellIndex = HvAllocateCell(Hive, sizeof(CM_KEY_NODE) + NameSize, HvStable);
+ if (RootCellIndex == HCELL_NULL)
+ return FALSE;
+
+ Hive->HiveHeader->RootCell = RootCellIndex;
+ Hive->HiveHeader->Checksum = HvpHiveHeaderChecksum(Hive->HiveHeader);
+
+ KeyCell = (PCM_KEY_NODE)HvGetCell(Hive, RootCellIndex);
+ KeyCell->Id = REG_KEY_CELL_ID;
+ KeyCell->Flags = REG_KEY_ROOT_CELL;
+ KeyCell->LastWriteTime.QuadPart = 0;
+ KeyCell->Parent = HCELL_NULL;
+ KeyCell->SubKeyCounts[0] = 0;
+ KeyCell->SubKeyCounts[1] = 0;
+ KeyCell->SubKeyLists[0] = HCELL_NULL;
+ KeyCell->SubKeyLists[1] = HCELL_NULL;
+ KeyCell->ValueList.Count = 0;
+ KeyCell->ValueList.List = HCELL_NULL;
+ KeyCell->SecurityKeyOffset = HCELL_NULL;
+ KeyCell->ClassNameOffset = HCELL_NULL;
+ KeyCell->NameSize = (USHORT)NameSize;
+ KeyCell->ClassSize = 0;
+ memcpy(KeyCell->Name, Name, NameSize);
+
+ return TRUE;
+}
+
+static VOID CMAPI
+CmpPrepareKey(
+ PHHIVE RegistryHive,
+ PCM_KEY_NODE KeyCell)
+{
+ PCM_KEY_NODE SubKeyCell;
+ PHASH_TABLE_CELL HashCell;
+ ULONG i;
+
+ ASSERT(KeyCell->Id == REG_KEY_CELL_ID);
+
+ KeyCell->SubKeyLists[HvVolatile] = HCELL_NULL;
+ KeyCell->SubKeyCounts[HvVolatile] = 0;
+
+ /* Enumerate and add subkeys */
+ if (KeyCell->SubKeyCounts[HvStable] > 0)
+ {
+ HashCell = HvGetCell(RegistryHive, KeyCell->SubKeyLists[HvStable]);
+
+ for (i = 0; i < KeyCell->SubKeyCounts[HvStable]; i++)
+ {
+ SubKeyCell = HvGetCell(RegistryHive, HashCell->Table[i].KeyOffset);
+ CmpPrepareKey(RegistryHive, SubKeyCell);
+ }
+ }
+}
+
+VOID CMAPI
+CmPrepareHive(
+ PHHIVE RegistryHive)
+{
+ PCM_KEY_NODE RootCell;
+
+ RootCell = HvGetCell(RegistryHive, RegistryHive->HiveHeader->RootCell);
+ CmpPrepareKey(RegistryHive, RootCell);
+}