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) &&
rc = RegQueryValueExW(hKey, lpValueNameW, lpReserved, lpType, lpData, lpcbData);
if (lpValueNameW)
free(lpValueNameW);
- return ERROR_UNSUCCESSFUL;
+ return rc;
}
LONG WINAPI