[NTOS:CONFIG]

Remove a very old hack (that dated back from the Configuration Manager rewrite): now the hives are already correctly loaded in memory, therefore there is no need to call CmCreateRootNode after creating a hive, because the root node is subsequently initialized with calls to CmpCreateLinkNode. The comment saying that calls to CmCreateRootNode can be removed when CmpCreateLinkNode is used, is now in order. This means we correctly parse & mount the hives. The CmCreateRootNode function is now only used in the 'mkhive' tool in order to create file hives, since this tool needs to create new hives from nowhere (that's why also our bootloaders do not need this function: they only load & parse existing hive files).

The fact that this hack remained caused us hidden troubles: some hives (SAM, SOFTWARE) had "two" root keys: a first one that was unused (which was created by this hackish call), and the second one which was the one used (and was created by CmpCreateLinkNode as expected).

svn path=/trunk/; revision=70575
This commit is contained in:
Hermès Bélusca-Maïto 2016-01-11 00:37:44 +00:00
parent 4216e8389f
commit d0eb702ec2
2 changed files with 0 additions and 4 deletions

View file

@ -715,7 +715,6 @@ CmpDoOpen(IN PHHIVE Hive,
return Status;
}
/* Remove calls to CmCreateRootNode once this is used! */
NTSTATUS
NTAPI
CmpCreateLinkNode(IN PHHIVE Hive,

View file

@ -371,9 +371,6 @@ CmpInitHiveFromFile(IN PCUNICODE_STRING HiveName,
/* Success, return hive */
*Hive = NewHive;
/* HACK: ROS: Init root key cell and prepare the hive */
if (Operation == HINIT_CREATE) CmCreateRootNode(&NewHive->Hive, L"");
/* Duplicate the hive name */
NewHive->FileFullPath.Buffer = ExAllocatePoolWithTag(PagedPool,
HiveName->Length,