Key->KeyCell = (PCM_KEY_NODE)HvGetCell (&RegistryHive->Hive, Key->KeyCellOffset);
if (!Key->KeyCell)
{
+ free(Key->Name);
free(Key);
return NULL;
}
+ Key->KeyCell->SubKeyLists[Stable] = HCELL_NIL;
+ Key->KeyCell->SubKeyLists[Volatile] = HCELL_NIL;
Key->LinkedKey = NULL;
return Key;
}
(USHORT)((ULONG_PTR)End - (ULONG_PTR)LocalKeyName);
}
else
+ {
RtlInitUnicodeString(&KeyString, LocalKeyName);
+ if (KeyString.Length == 0)
+ {
+ /* Trailing backslash char; we're done */
+ break;
+ }
+ }
/* Redirect from 'CurrentControlSet' to 'ControlSet001' */
if (!strncmpW(LocalKeyName, L"CurrentControlSet", 17) &&
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);
rc = RegQueryValueExW(hKey, lpValueNameW, lpReserved, lpType, lpData, lpcbData);
if (lpValueNameW)
free(lpValueNameW);
- return ERROR_UNSUCCESSFUL;
+ return rc;
}
LONG WINAPI