Get back to the original post,
WinUsb_WriteIsochPipe(Asap) takes a "transfer", and it splits the "transfer" into transactions of MPS (Max Packet Size), like bulk/interrupt transfer.
http://msdn.microsoft.com/en-us/library/windows/hardware/dn265568(v=vs.85).aspx
WinUsb_WriteIsochPipe packetizes the transfer buffer so that in each interval, the host can send the maximum bytes allowed per interval.
On the other hand, WinUsb_ReadIsochPipe(Asap) takes USBD_ISO_PACKET_DESCRIPTOR array, like orthodox Isoc API implementation, which allows different size of each packet (transaction).
This MPS restriction of WinUsb_WriteIsochPipe(Asap) is not practical for Audio/Video applications. I'm not sure, why MS WinUSB team would decide this asymmetry.
I believe they should add WinUsb_WriteIsochPipe(Asap)
Ex soon, at the next revision ;-)
Tsuneo