From: Aric Stewart Subject: [PATCH 4/5] winebus.sys: Implement get_string for linux event devices Message-Id: Date: Mon, 27 Feb 2017 09:09:39 -0600 Signed-off-by: Aric Stewart --- dlls/winebus.sys/bus_udev.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/dlls/winebus.sys/bus_udev.c b/dlls/winebus.sys/bus_udev.c index 2f198c7d4f..8ab3389b4b 100644 --- a/dlls/winebus.sys/bus_udev.c +++ b/dlls/winebus.sys/bus_udev.c @@ -958,7 +958,30 @@ static NTSTATUS lnxev_get_reportdescriptor(DEVICE_OBJECT *device, BYTE *buffer, static NTSTATUS lnxev_get_string(DEVICE_OBJECT *device, DWORD index, WCHAR *buffer, DWORD length) { - return STATUS_NOT_IMPLEMENTED; + struct wine_input_private *ext = input_impl_from_DEVICE_OBJECT(device); + char str[255] = {0}; + + switch (index) + { + case HID_STRING_ID_IPRODUCT: + ioctl(ext->base.device_fd, EVIOCGNAME(254), str); + break; + case HID_STRING_ID_IMANUFACTURER: + strcpy(str,"evdev"); + break; + case HID_STRING_ID_ISERIALNUMBER: + ioctl(ext->base.device_fd, EVIOCGUNIQ(254), str); + break; + default: + ERR("Unhandled string index %i\n", index); + } + + if (str[0]) + MultiByteToWideChar(CP_ACP, 0, str, -1, buffer, length); + else + buffer[0] = 0; + + return STATUS_SUCCESS; } static DWORD CALLBACK lnxev_device_report_thread(void *args)