-+diff --git a/libusb/os/windows_usb.c b/libusb/os/windows_usb.c
-+index 6640ad5..12fdab0 100644
-+--- a/libusb/os/windows_usb.c
-++++ b/libusb/os/windows_usb.c
-+@@ -2890,6 +2890,10 @@ static int winusbx_configure_endpoints(int sub_api, struct libusb_device_handle
-+ AUTO_CLEAR_STALL, sizeof(UCHAR), &policy)) {
-+ usbi_dbg("failed to enable AUTO_CLEAR_STALL for endpoint %02X", endpoint_address);
-+ }
-++ if (!WinUSBX[sub_api].SetPipePolicy(winusb_handle, endpoint_address,
-++ RAW_IO, sizeof(UCHAR), &policy)) {
-++ usbi_dbg("failed to enable RAW_IO for endpoint %02X", endpoint_address);
-++ }
-+ }
++diff --git a/libusb/os/windows_winusb.c b/libusb/os/windows_winusb.c
++index a03d6a51216a..a0ac0c609e99 100644
++--- a/libusb/os/windows_winusb.c
+++++ b/libusb/os/windows_winusb.c
++@@ -3086,6 +3086,15 @@ static int winusbx_submit_bulk_transfer(int sub_api, struct usbi_transfer *itran
++ set_transfer_priv_handle(itransfer, handle_priv->interface_handle[current_interface].dev_handle);
++ overlapped = get_transfer_priv_overlapped(itransfer);