Hi AshAll,
Windows HID class driver has delay trouble on the interrupt OUT pipe, since Windows XP. MS has put patches on this issue from OS version to version, SP to SP. Patch on patches as usual MS way. In this way, the delay varies according to OS version and SP, and also with/without hub (incredibly, HID class driver affects to hub port driver). In this reason, query-reply communication model over HID interrupt OUT/IN is not recommended on Windows, when you need certain deadline on response time, ie. in real-time process.
For status query, like above port bit change, the query-reply model is replaced with status-change-report model. The device watches the status (port) change periodically by itself (usually, on SOF interrupt). When the device detects any status change, it notifies to host of the new status over HID interrupt IN pipe. On the PC application, an OVERLAPPED ReadFile call (or equivalent) always waits for status change notification from the device. This communication model can be mixed with query-reply model, by using a tag (or report ID) for each input report.
For query-reply model, you may apply HidD_SetOutputReport() (over control transfer), instead of HID interrupt OUT pipe. HidD_SetOutputReport() takes more time than OUT pipe, but its response time doesn't vary so uncertainly as OUT pipe.
You'll see this trouble just on HID interrupt OUT pipe. Other drivers, WinUSB, etc., have no problem on interrupt OUT pipe.
Tsuneo