WinUsb_WriteIsochPipe routine

The WinUsb_WriteIsochPipe function writes the contents of a caller-supplied buffer to an isochronous OUT endpoint, starting on a specified frame number.


BOOL __stdcall WinUsb_WriteIsochPipe(
  _In_     ULONG                       Offset,
  _In_     ULONG                       Length,
  _Inout_  PULONG                      FrameNumber,
  _In_opt_ LPOVERLAPPED                Overlapped


BufferHandle [in]

An opaque handle to the transfer buffer that was registered by a previous call to WinUsb_RegisterIsochBuffer.

Offset [in]

Offset into the buffer relative to the start the transfer.

Length [in]

Length in bytes of the transfer buffer.

FrameNumber [in, out]

On input, indicates the starting frame number for the transfer. On output, contains the frame number of the frame that follows the last frame used in the transfer.

Overlapped [in, optional]

Pointer to an OVERLAPPED structure used for asynchronous operations.

Return value

WinUsb_WriteIsochPipe returns TRUE if the operation succeeds. Otherwise this function returns FALSE, and the caller can retrieve the logged error by calling GetLastError.


WinUsb_WriteIsochPipe packetizes the transfer buffer so that in each interval, the host can send the maximum bytes allowed per interval. The maximum bytes is as specified by the endpoint descriptor for full and high-speed endpoints, and endpoint companion descriptor for SuperSpeed endpoints. If the caller submits multiple write requests to stream data to the device, the transfer size should be a multiple of the maximum bytes per interval (as returned by WinUsb_QueryPipeEx) * 8 / interval.


Minimum supported client

Windows 8.1

Minimum supported server

Windows Server 2012 R2

Target platform



Winusb.h (include Winusb.h)





See also

WinUSB Functions
Send USB isochronous transfers from a WinUSB desktop app



Send comments about this topic to Microsoft