if (NT_SUCCESS(Status))
{
ParentKeyCell->SubKeyCounts[Storage]++;
+ if (Packable)
+ {
+ if (NameLength*sizeof(WCHAR) > ParentKeyCell->MaxNameLen)
+ ParentKeyCell->MaxNameLen = NameLength*sizeof(WCHAR);
+ }
+ else
+ {
+ if (NameLength > ParentKeyCell->MaxNameLen)
+ ParentKeyCell->MaxNameLen = NameLength;
+ }
+ if (NewKeyCell->ClassLength > ParentKeyCell->MaxClassLen)
+ ParentKeyCell->MaxClassLen = NewKeyCell->ClassLength;
+
*pSubKeyCell = NewKeyCell;
*pBlockOffset = NKBOffset;
}
ValueListCell->ValueOffset[KeyCell->ValueList.Count] = NewValueCellOffset;
KeyCell->ValueList.Count++;
+ if (NewValueCell->Flags & VALUE_COMP_NAME)
+ {
+ if (NewValueCell->NameLength*sizeof(WCHAR) > KeyCell->MaxValueNameLen)
+ KeyCell->MaxValueNameLen = NewValueCell->NameLength*sizeof(WCHAR);
+ }
+ else
+ {
+ if (NewValueCell->NameLength > KeyCell->MaxValueNameLen)
+ KeyCell->MaxValueNameLen = NewValueCell->NameLength;
+ }
HvMarkCellDirty(&RegistryHive->Hive, KeyCellOffset, FALSE);
HvMarkCellDirty(&RegistryHive->Hive, KeyCell->ValueList.List, FALSE);
HvMarkCellDirty(&Key->RegistryHive->Hive, ValueCellOffset, FALSE);
}
+ if (cbData > Key->KeyCell->MaxValueDataLen)
+ Key->KeyCell->MaxValueDataLen = cbData;
+
HvMarkCellDirty(&Key->RegistryHive->Hive, Key->KeyCellOffset, FALSE);
DPRINT("Return status 0x%08x\n", Status);