Metodo IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion (wudfusb.h)
[Avviso: UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre informazioni, vedi Introduzione a UMDF.]
La funzione di callback di un driver OnReaderCompletion informa il driver che un lettore continuo ha completato correttamente una richiesta di lettura.
Sintassi
void OnReaderCompletion(
[in] IWDFUsbTargetPipe *pPipe,
[in] IWDFMemory *pMemory,
[in] SIZE_T NumBytesTransferred,
[in] PVOID Context
);
Parametri
[in] pPipe
Puntatore all'interfaccia di IWDFUsbTargetPipe per la pipe USB su cui il driver ha abilitato un lettore continuo.
[in] pMemory
Puntatore all'interfaccia IWDFMemory per un buffer di lettura contenente i dati letti dalla pipe USB.
[in] NumBytesTransferred
Numero di byte contenuti nel buffer di lettura.
[in] Context
Puntatore alle informazioni sul contesto fornite dal driver fornite in precedenza quando il driver ha chiamato IWDFUsbTargetPipe2::ConfigureContinuousReader.
Valore restituito
Nessuno
Osservazioni
Per registrare un IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion funzione di callback, il driver deve fornire un puntatore al IUsbTargetPipeContinuousReaderCallbackReadComplete interfaccia quando chiama IWDFUsbTargetPipe2::ConfigureContinuousReader.
Se un driver ha creato un lettore continuo per una pipe USB, il framework chiama il driver OnReaderCompletion funzione di callback ogni volta che la destinazione di I/O del driver ha completato correttamente una richiesta di lettura. Se la destinazione di I/O non completa correttamente una richiesta, il framework chiama il IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure funzione di callback.
Per accedere al buffer contenente i dati letti dal dispositivo, il driver può chiamare IWDFMemory::GetDataBuffer. Il framework scrive i dati nel buffer, dopo l'intestazione definita dal parametro HeaderLength di IWDFUsbTargetPipe2::ConfigureContinuousReader. Si noti che il puntatore che IWDFMemory::GetDataBuffer restituisce punti all'inizio dell'intestazione, ma il parametro OnReaderCompletion funzione di callback NumBytesTransferred parametro non include la lunghezza dell'intestazione.
Per impostazione predefinita, il framework elimina l'oggetto memoria del buffer dopo che la OnReaderCompletion funzione di callback restituisce. È tuttavia possibile che l'oggetto memoria rimanga valido dopo la restituzione della funzione di callback. Ad esempio, è possibile che il driver archivii il puntatore dell'interfaccia dell'oggetto memoria nello spazio di contesto dell'oggetto framework in modo che il driver possa elaborare il contenuto dell'oggetto memoria dopo la restituzione della funzione di callback. Per estendere la durata dell'oggetto memoria, la funzione di callback deve chiamare il metodo IWDFMemory::AddRef del buffer. Successivamente, il driver deve chiamare il metodo IWDFMemory::Release del buffer in modo che il framework possa eliminare l'oggetto.
Il framework sincronizza le chiamate al OnReaderCompletion e IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure funzioni di callback in base alle regole seguenti:
- Queste funzioni di callback non vengono eseguite contemporaneamente per una singola pipe USB.
- Se il driver crea più lettori continui per più pipe USB, con più OnReaderCompletion e OnReaderFailure funzioni di callback, le più funzioni di callback possono essere eseguite contemporaneamente.
- Se il driver ha specificato il valore predefinito NumPendingReads quando chiama IWDFUsbTargetPipe2::ConfigureContinuousReader (o se specifica un valore NumPendingReads maggiore di 1) e se una richiesta di lettura viene completata durante l'esecuzione della funzione di callback OnReaderCompletion, il framework può chiamare di nuovo la OnReaderCompletion funzione di callback prima che venga restituita la funzione di callback.
- Il framework non sincronizza queste funzioni di callback con altre funzioni di callback.
Per altre informazioni sulla OnReaderCompletion funzione di callback e sulle destinazioni di I/O USB, vedere Gestione di una destinazione di I/O USB.
Fabbisogno
Requisito | Valore |
---|---|
Fine del supporto | Non disponibile in UMDF 2.0 e versioni successive. |
piattaforma di destinazione | Desktop |
versione minima di UMDF | 1.9 |
intestazione | wudfusb.h (include Wudfusb.h) |
Vedere anche
IUsbTargetPipeContinuousReaderCallbackReadComplete
IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure