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

Aric Stewart aric at codeweavers.com
Mon Apr 1 07:25:38 CDT 2019



On 3/29/19 4:18 PM, Zebediah Figura wrote:
> This partially reverts 164517fe575564daa44f74cc3bc4a6bbdd7d3f3d. The
> manufacturer, product, and serial string attributes are not exposed by the
> HID device on Linux, but by its parent USB device.
> 

Does this work with bluetooth devices?  I know I did some revision to this code in order to support bluetooth devices in the past.

-aric


> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46711
> Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
> ---
>   dlls/winebus.sys/bus_udev.c | 12 ++++++------
>   1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/dlls/winebus.sys/bus_udev.c b/dlls/winebus.sys/bus_udev.c
> index 1f671cf568..99753d603e 100644
> --- a/dlls/winebus.sys/bus_udev.c
> +++ b/dlls/winebus.sys/bus_udev.c
> @@ -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);
> 



More information about the wine-devel mailing list