winebus.sys: Retrieve hidraw device strings from the parent USB device.

This partially reverts 164517fe57. The
manufacturer, product, and serial string attributes are not exposed by the
HID device on Linux, but by its parent USB device.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46711
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
(cherry picked from commit cc3820ca99)
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
oldstable
Zebediah Figura 2019-03-29 16:18:32 -05:00 committed by Michael Stefaniuc
parent d1423d4f7c
commit 239c6e4449
1 changed files with 6 additions and 6 deletions

View File

@ -674,23 +674,23 @@ static NTSTATUS hidraw_get_reportdescriptor(DEVICE_OBJECT *device, BYTE *buffer,
static NTSTATUS hidraw_get_string(DEVICE_OBJECT *device, DWORD index, WCHAR *buffer, DWORD length)
{
struct udev_device *hiddev;
struct udev_device *usbdev;
struct platform_private *private = impl_from_DEVICE_OBJECT(device);
WCHAR *str = NULL;
hiddev = udev_device_get_parent_with_subsystem_devtype(private->udev_device, "hid", NULL);
if (hiddev)
usbdev = udev_device_get_parent_with_subsystem_devtype(private->udev_device, "usb", "usb_device");
if (usbdev)
{
switch (index)
{
case HID_STRING_ID_IPRODUCT:
str = get_sysattr_string(hiddev, "product");
str = get_sysattr_string(usbdev, "product");
break;
case HID_STRING_ID_IMANUFACTURER:
str = get_sysattr_string(hiddev, "manufacturer");
str = get_sysattr_string(usbdev, "manufacturer");
break;
case HID_STRING_ID_ISERIALNUMBER:
str = get_sysattr_string(hiddev, "serial");
str = get_sysattr_string(usbdev, "serial");
break;
default:
ERR("Unhandled string index %08x\n", index);