From 13c5d1092fc3ff7b5268ae2c73ecd71d83782a62 Mon Sep 17 00:00:00 2001 From: Ozkan Sezer Date: Sun, 29 Sep 2024 17:56:40 +0300 Subject: [PATCH] hidapi: update hid_write() for windows from mainstream. Returns bytes_written if WriteFile returns synchronously Relevant mainstream discussions: https://github.com/libusb/hidapi/pull/697 https://github.com/libusb/hidapi/issues/695 --- src/hidapi/windows/hid.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/hidapi/windows/hid.c b/src/hidapi/windows/hid.c index 832878bbc2..3376ba96e5 100644 --- a/src/hidapi/windows/hid.c +++ b/src/hidapi/windows/hid.c @@ -1282,7 +1282,7 @@ int HID_API_EXPORT HID_API_CALL hid_write(hid_device *dev, const unsigned char * length = dev->output_report_length; } - res = WriteFile(dev->device_handle, buf, (DWORD) length, NULL, &dev->write_ol); + res = WriteFile(dev->device_handle, buf, (DWORD) length, &bytes_written, &dev->write_ol); if (!res) { if (GetLastError() != ERROR_IO_PENDING) { @@ -1291,6 +1291,9 @@ int HID_API_EXPORT HID_API_CALL hid_write(hid_device *dev, const unsigned char * goto end_of_function; } overlapped = TRUE; + } else { + /* WriteFile() succeeded synchronously. */ + function_result = bytes_written; } if (overlapped) {