展开 最小化

WinUsb_ReadIsochPipeAsap routine

The WinUsb_ReadIsochPipeAsap function submits a request that reads data from an isochronous OUT endpoint.

Syntax


BOOL __stdcall WinUsb_ReadIsochPipeAsap(
  _In_      PWINUSB_ISOCH_BUFFER_HANDLE BufferHandle,
  _In_      ULONG Offset,
  _In_      ULONG Length,
  _In_      BOOL ContinueStream,
  _In_      PULONG NumberOfPackets,
  PUSBD_ISO_PACKET_DESCRIPTOR IsoPacketDescriptors,
  _In_opt_  LPOVERLAPPED Overlapped
);

Parameters

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.

ContinueStream [in]

Indicates that the transfer should only be submitted if it can be scheduled in the first frame after the last pending transfer.

NumberOfPackets [in]

Total number of isochronous packets required to hold the transfer buffer. Also indicates the number of elements in the array pointed to by IsoPacketDescriptors.

IsoPacketDescriptors

An array of USBD_ISO_PACKET_DESCRIPTOR that receives the details of each isochronous packet in the transfer.

Overlapped [in, optional]

Pointer to an OVERLAPPED structure used for asynchronous operations.

Return value

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

If the caller sets ContinueStream to TRUE, The transfer fails if Winusb.sys is unable to schedule the transfer to continue the stream without dropping one or more frames.

Remarks

WinUsb_ReadIsochPipeAsap allows the USB driver stack to choose the starting frame number for the transfer. If one or more transfers are already pending on the endpoint, the transfer will be scheduled for the frame number immediately following the last frame number of the last currently pending transfer.

WinUsb_ReadIsochPipeAsap 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.

Requirements

Minimum supported client

Windows 8.1

Minimum supported server

Windows Server 2012 R2

Header

Winusb.h (include Winusb.h)

Library

Winusb.lib

See also

WinUSB Functions
Send USB isochronous transfers from a WinUSB desktop app

 

 

Send comments about this topic to Microsoft

显示:
© 2014 Microsoft