funzione WinUsb_ReadIsochPipe (winusb.h)

La funzione WinUsb_ReadIsochPipe legge i dati da un endpoint IN isocrono.

Sintassi

BOOL WinUsb_ReadIsochPipe(
  [in]           WINUSB_ISOCH_BUFFER_HANDLE  BufferHandle,
  [in]           ULONG                       Offset,
  [in]           ULONG                       Length,
  [in, out]      PULONG                      FrameNumber,
  [in]           ULONG                       NumberOfPackets,
  [out]          PUSBD_ISO_PACKET_DESCRIPTOR IsoPacketDescriptors,
  [in, optional] LPOVERLAPPED                Overlapped
);

Parametri

[in] BufferHandle

Handle opaco per il buffer di trasferimento registrato da una chiamata precedente a WinUsb_RegisterIsochBuffer.

[in] Offset

Offset nel buffer rispetto all'inizio del trasferimento.

[in] Length

Lunghezza in byte del buffer di trasferimento.

[in, out] FrameNumber

In input, indica il numero di frame iniziale per il trasferimento. Nell'output contiene il numero di frame del frame che segue l'ultimo fotogramma usato nel trasferimento.

[in] NumberOfPackets

Numero totale di pacchetti isocroni necessari per contenere il buffer di trasferimento. Indica anche il numero di elementi nella matrice a cui punta IsoPacketDescriptors.

[out] IsoPacketDescriptors

Matrice di strutture USBD_ISO_PACKET_DESCRIPTOR . Al termine del trasferimento, ogni elemento contiene lo stato e le dimensioni del pacchetto isocrono.

[in, optional] Overlapped

Puntatore a una struttura OVERLAPPED utilizzata per le operazioni asincrone.

Valore restituito

WinUsb_ReadIsochPipe restituisce TRUE se l'operazione ha esito positivo. In caso contrario, questa funzione restituisce FALSE e il chiamante può recuperare l'errore registrato chiamando GetLastError.

Commenti

WinUsb_ReadIsochPipe pacchettizza il buffer di trasferimento in modo che, in ogni intervallo di 1 ms, l'host possa ricevere i byte massimi consentiti per intervallo. I byte massimi sono specificati dal descrittore di endpoint per gli endpoint completi e ad alta velocità e il descrittore complementare dell'endpoint per gli endpoint SuperSpeed. Se il chiamante invia più richieste di lettura per trasmettere dati dal dispositivo, le dimensioni del trasferimento devono essere un multiplo dei byte massimi per intervallo (restituito da WinUsb_QueryPipeEx) * 8/intervallo.

A causa della creazione di pacchetti di trasferimento usata nell'interfaccia in modalità kernel sottostante, la notifica di latenza più bassa per un'applicazione o un driver è di intervalli di 1 ms.

Requisiti

Requisito Valore
Client minimo supportato Windows 8.1
Server minimo supportato Windows Server 2012 R2
Piattaforma di destinazione Universale
Intestazione winusb.h (include Winusb.h)
Libreria Winusb.lib
DLL Winusb.dll

Vedi anche

Inviare trasferimenti isocroni USB da un'app desktop WinUSB

Funzioni WinUSB