Condividi tramite


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

Funzioni WinUSB