funzione WinUsb_ReadIsochPipeAsap (winusb.h)
La funzione WinUsb_ReadIsochPipeAsap invia una richiesta che legge i dati da un endpoint IN isochronous.
Sintassi
BOOL WinUsb_ReadIsochPipeAsap(
[in] WINUSB_ISOCH_BUFFER_HANDLE BufferHandle,
[in] ULONG Offset,
[in] ULONG Length,
[in] BOOL ContinueStream,
[in] ULONG NumberOfPackets,
PUSBD_ISO_PACKET_DESCRIPTOR IsoPacketDescriptors,
[in, optional] LPOVERLAPPED Overlapped
);
Parametri
[in] BufferHandle
Handle opaco al buffer di trasferimento registrato da una chiamata precedente a WinUsb_RegisterIsochBuffer.
[in] Offset
Offset nel buffer relativo all'avvio del trasferimento.
[in] Length
Lunghezza in byte del buffer di trasferimento.
[in] ContinueStream
Indica che il trasferimento deve essere inviato solo se può essere pianificato nel primo frame dopo l'ultimo trasferimento in sospeso.
[in] NumberOfPackets
Numero totale di pacchetti isochronous necessari per contenere il buffer di trasferimento. Indica anche il numero di elementi nella matrice a cui punta IsoPacketDescriptors.
IsoPacketDescriptors
Matrice di USBD_ISO_PACKET_DESCRIPTOR che riceve i dettagli di ogni pacchetto isochronous nel trasferimento.
[in, optional] Overlapped
Puntatore a una struttura OVERLAPPED usata per le operazioni asincrone.
Valore restituito
WinUsb_ReadIsochPipeAsap 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.
Se il chiamante imposta ContinueStream su TRUE, il trasferimento ha esito negativo se Winusb.sys non è in grado di pianificare il trasferimento per continuare il flusso senza eliminare uno o più frame.
Commenti
WinUsb_ReadIsochPipeAsap consente allo stack di driver USB di scegliere il numero di frame iniziale per il trasferimento. Se uno o più trasferimenti sono già in sospeso nell'endpoint, il trasferimento verrà pianificato per il numero di frame immediatamente dopo l'ultimo numero di frame dell'ultimo trasferimento in sospeso.
WinUsb_ReadIsochPipeAsap pacchettizza il buffer di trasferimento in modo che in ogni intervallo l'host possa ricevere i byte massimi consentiti per intervallo. I byte massimi sono specificati dal descrittore dell'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 i dati dal dispositivo, le dimensioni del trasferimento devono essere un multiplo dei byte massimi per intervallo (come restituito da WinUsb_QueryPipeEx) * 8/intervallo.
A causa del pacchetto di trasferimento usato nell'interfaccia in modalità kernel sottostante, la notifica di latenza più bassa a un'applicazione o a un driver è di 1ms intervalli.
Requisiti
Client minimo supportato | Windows 8.1 |
Server minimo supportato | R2 per Windows Server 2012 |
Piattaforma di destinazione | Universale |
Intestazione | winusb.h (include Winusb.h) |
Libreria | Winusb.lib |
DLL | Winusb.dll |
Vedi anche
Inviare trasferimenti USB isochronous da un'app desktop WinUSB