Microsoft Windows CE 3.0  

IssueIsochTransfer

Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

This function initiates an isochronous transfer with a USB device.

USB_TRANSFER
IssueIsochTransfer(
USB_PIPE
hPipe
,
LPTRANSFER_NOTIFY_ROUTINE
lpStartAddress
,
LPVOID
lpvNotifyParameter
,
DWORD
dwFlags
,
DWORD
dwStartingFrame
,
DWORD
dwFrames
,
LPCDWORD
lpdwLengths
,
LPVOID
lpvBuffer
,
ULONG
uBufferPhysicalAddress
);

Parameters

hPipe
[IN] Handle to an open USB pipe.
lpStartAddress
[IN] Pointer to the address of a callback routine, or NULL if no callback routine is necessary. Any value other than NULL causes this function to act asynchronously (that is, to return immediately, before the transfer is complete), as if USB_NO_WAIT had been included in dwFlags.
lpvNotifyParameter
[IN] Pointer to the parameter to pass to a callback routine.
dwFlags
[IN] Flags for the transfer. These are declared in the Usbtypes.h header file. Some flags are specific to isochronous transfers. USB_START_ISOCH_ASAP starts transfer as soon as possible, instead of specifying a starting frame. USB_COMPRESS_ISOCH guarantees, for IN transfers, that data is copied contiguously to the user buffer, instead of being fragmented if the amount of data is less than the maximum requested for a particular frame. USB_COMPRESS_ISOCH only works if you do not specify a physical address. USB_NO_WAIT causes the function to act asynchronously.
dwStartingFrame
[IN] Specifies the frame number on which transfer starts.
dwFrames
[IN] Specifies the number of frames in transfer.
lpdwLengths
[IN/OUT] Pointer to an array of lengths, one entry per frame.
lpvBuffer
[IN/OUT] Pointer to a data buffer. If a physical buffer address is specified, this must contain the virtual address of the buffer.
uBufferPhysicalAddress
[IN/OUT] Specifies the physical address, which may be NULL, of the data buffer.

Return Values

A USB_TRANSFER handle indicates success. NULL indicates failure.

Remarks

This function initiates an isochronous transfer to a USB device on the specified endpoint. Since isochronous transfers must be executed continuously, a sequence of buffers is provided, one of which is transferred for each frame. There is no limit on the number of buffers that may be provided, though each one must be less than or equal to the maximum packet size for the endpoint.

Note: in Windows CE 2.12, if a USB client driver calls IssueIsochTransfer with the USB_NO_WAIT flag and with a callback function specified in lpStartAddress, then the USB client driver must not call CloseTransferor AbortTransferbefore the isochronous transfer has completed (that is, before the callback function has been invoked).

IssueIsochTransferbehaves either synchronously or asynchronously, depending on the value you provide for lpStartAddressand whether dwFlagscontains the USB_NO_WAIT flag, as shown in the following table:

lpStartAddress dwFlags| USB_NO_WAIT Behavior
NULL 0 Synchronous
NULL USB_NO_WAIT Asynchronous
non-NULL 0 Asynchronous
non-NULL USB_NO_WAIT Asynchronous

When behaving asynchronously, the function will invoke your callback function, if one is specified in lpStartAddress, when the transfer is complete.

Requirements

Runs on Versions Defined in Include Link to
Windows CE OS 2.10 and later      
Note   This API is part of the complete Windows CE OS package as provided by Microsoft. The functionality of a particular platform is determined by the original equipment manufacturer (OEM) and some devices may not support this API.

See Also

AbortTransfer, GetIsochResults, GetTransferStatus, IsTransferComplete



 Last updated on Tuesday, July 13, 2004

© 2004 Microsoft Corporation. All rights reserved.