* SetupAPI interface-related functions
*
* Copyright 2000 Andreas Mohr for CodeWeavers
- * 2005-2006 Hervé Poussineau (hpoussin@reactos.org)
+ * 2005-2006 Herv� Poussineau (hpoussin@reactos.org)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
hInterfaceKey = SetupDiOpenClassRegKeyExW(InterfaceGuid, KEY_ENUMERATE_SUB_KEYS, DIOCR_INTERFACE, MachineName, NULL);
if (hInterfaceKey == INVALID_HANDLE_VALUE)
{
- rc = GetLastError();
+ /* Key doesn't exist. Let's keep it empty */
+ rc = ERROR_SUCCESS;
goto cleanup;
}
list->HKLM,
REGSTR_PATH_SYSTEMENUM,
0, /* Options */
- 0,
+ READ_CONTROL,
&hEnumKey);
if (rc != ERROR_SUCCESS)
goto cleanup;
/* Step 2. Create an interface list for this element */
HeapFree(GetProcessHeap(), 0, pSymbolicLink);
- pSymbolicLink = HeapAlloc(GetProcessHeap(), 0, (dwLength + 1) * sizeof(WCHAR));
+ pSymbolicLink = HeapAlloc(GetProcessHeap(), 0, dwLength + sizeof(WCHAR));
if (!pSymbolicLink)
{
rc = ERROR_NOT_ENOUGH_MEMORY;
Slash = wcsrchr(Path, '\\');
if (!Guid || !Slash)
{
+ HeapFree(GetProcessHeap(), 0, Path);
SetLastError(ERROR_INVALID_PARAMETER);
return INVALID_HANDLE_VALUE;
}