setupapi: Set device SPDRP_CLASS registry property in create_device().

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
stable
Zhiyi Zhang 2019-11-18 17:29:44 +08:00 committed by Alexandre Julliard
parent 014f61539b
commit 288a6625ad
2 changed files with 13 additions and 5 deletions

View File

@ -751,7 +751,9 @@ static struct device *create_device(struct DeviceInfoSet *set,
{
const DWORD one = 1;
struct device *device;
WCHAR guidstr[39];
WCHAR guidstr[MAX_GUID_STRING_LEN];
WCHAR class_name[MAX_CLASS_NAME_LEN];
DWORD size;
TRACE("%p, %s, %s, %d\n", set, debugstr_guid(class),
debugstr_w(instanceid), phantom);
@ -796,6 +798,12 @@ static struct device *create_device(struct DeviceInfoSet *set,
SETUPDI_SetDeviceRegistryPropertyW(device, SPDRP_CLASSGUID,
(const BYTE *)guidstr, sizeof(guidstr));
if (SetupDiClassNameFromGuidW(class, class_name, ARRAY_SIZE(class_name), NULL))
{
size = (lstrlenW(class_name) + 1) * sizeof(WCHAR);
SETUPDI_SetDeviceRegistryPropertyW(device, SPDRP_CLASS, (const BYTE *)class_name, size);
}
TRACE("Created new device %p.\n", device);
return device;
}

View File

@ -1643,8 +1643,8 @@ todo_wine {
/* Have SPDRP_CLASS property */
memset(buf, 0, sizeof(buf));
ret = SetupDiGetDeviceRegistryPropertyA(set, &device, SPDRP_CLASS, NULL, (BYTE *)buf, sizeof(buf), NULL);
todo_wine ok(ret, "Failed to get property, error %#x.\n", GetLastError());
todo_wine ok(!lstrcmpA(buf, "Display"), "Got unexpected value %s.\n", buf);
ok(ret, "Failed to get property, error %#x.\n", GetLastError());
ok(!lstrcmpA(buf, "Display"), "Got unexpected value %s.\n", buf);
SetupDiDestroyDeviceInfoList(set);
}
@ -1803,8 +1803,8 @@ todo_wine {
/* Have SPDRP_CLASS property */
memset(buf, 0, sizeof(buf));
ret = SetupDiGetDeviceRegistryPropertyW(set, &device, SPDRP_CLASS, NULL, (BYTE *)buf, sizeof(buf), NULL);
todo_wine ok(ret, "Failed to get property, error %#x.\n", GetLastError());
todo_wine ok(!lstrcmpW(buf, L"Display"), "Got unexpected value %s.\n", wine_dbgstr_w(buf));
ok(ret, "Failed to get property, error %#x.\n", GetLastError());
ok(!lstrcmpW(buf, L"Display"), "Got unexpected value %s.\n", wine_dbgstr_w(buf));
SetupDiDestroyDeviceInfoList(set);
}