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 |