[PATCH v4 3/5] winebus.sys: Implement get_string for linux event devices
Aric Stewart <[email protected]> Tue, 7 Nov 2017 08:18:08 -0600
| Newsgroups | gmane.comp.emulators.wine.patches |
|---|---|
| Message-ID | <[email protected]> |
Signed-off-by: Aric Stewart <[email protected]> --- dlls/winebus.sys/bus_udev.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-)
v4-0003-winebus.sys-Implement-get_string-for-linux-event-de.txt
(text/x-patch, 1.2 KB)
diff --git a/dlls/winebus.sys/bus_udev.c b/dlls/winebus.sys/bus_udev.c
index 0f5a3bfed9..ab03122908 100644
--- a/dlls/winebus.sys/bus_udev.c
+++ b/dlls/winebus.sys/bus_udev.c
@@ -862,7 +862,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 NTSTATUS lnxev_begin_report_processing(DEVICE_OBJECT *device)