if (ParametersKey != NULL) {
status = RegistryQuerySzValue(ParametersKey,
"UnsupportedDevices",
+ NULL,
&UnsupportedDevices);
if (!NT_SUCCESS(status))
UnsupportedDevices = NULL;
status = RegistryQuerySzValue(SoftwareKey,
"DriverDesc",
+ NULL,
&DriverDesc);
if (!NT_SUCCESS(status))
goto fail1;
status = RegistryUpdateSzValue(HardwareKey,
"FriendlyName",
+ REG_SZ,
FriendlyName);
if (!NT_SUCCESS(status))
goto fail3;
status = RegistryQuerySzValue(Key,
"NetworkAddress",
+ NULL,
&Ansi);
if (!NT_SUCCESS(status))
goto done;
status = RegistryQuerySzValue(Key,
"NetCfgInstanceId",
+ NULL,
&Ansi);
if (!NT_SUCCESS(status))
goto fail1;
RegistryQuerySzValue(
IN HANDLE Key,
IN PCHAR Name,
+ OUT PULONG Type OPTIONAL,
OUT PANSI_STRING *Array
)
{
if (*Array == NULL)
goto fail5;
+ if (Type != NULL)
+ *Type = Value->Type;
+
__RegistryFree(Value);
RtlFreeUnicodeString(&Unicode);
if (!NT_SUCCESS(status))
goto fail1;
- status = RegistryQuerySzValue(Key, "SystemStartOptions", &Ansi);
+ status = RegistryQuerySzValue(Key, "SystemStartOptions", NULL, &Ansi);
if (!NT_SUCCESS(status))
goto fail2;
RegistryUpdateSzValue(
IN HANDLE Key,
IN PCHAR Name,
+ IN ULONG Type,
IN PANSI_STRING Array
)
{
ANSI_STRING Ansi;
UNICODE_STRING Unicode;
- ULONG Type;
PKEY_VALUE_PARTIAL_INFORMATION Partial;
NTSTATUS status;
if (!NT_SUCCESS(status))
goto fail1;
- Type = (Array[1].Buffer != NULL) ? REG_MULTI_SZ : REG_SZ;
-
switch (Type) {
case REG_SZ:
status = STATUS_NO_MEMORY;
RegistryQuerySzValue(
IN HANDLE Key,
IN PCHAR Name,
+ OUT PULONG Type OPTIONAL,
OUT PANSI_STRING *Array
);
RegistryUpdateSzValue(
IN HANDLE Key,
IN PCHAR Name,
+ IN ULONG Type,
IN PANSI_STRING Array
);
}
case REG_SZ:
case REG_MULTI_SZ: {
+ ULONG Type;
PANSI_STRING Value;
status = RegistryQuerySzValue(SourceKey,
ValueName->Buffer,
+ &Type,
&Value);
if (NT_SUCCESS(status)) {
(VOID) RegistryUpdateSzValue(Parameters->DestinationKey,
ValueName->Buffer,
+ Type,
Value);
RegistryFreeSzValue(Value);
}