IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion-Methode (wudfusb.h)
[Warnung: UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. Es werden keine neuen Features zu UMDF 1 hinzugefügt, und es gibt eingeschränkte Unterstützung für UMDF 1 für neuere Versionen von Windows 10. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF-.]
Die OnReaderCompletion Ereignisrückruffunktion eines Treibers informiert den Treiber darüber, dass ein fortlaufender Reader erfolgreich eine Leseanforderung abgeschlossen hat.
void OnReaderCompletion(
[in] IWDFUsbTargetPipe *pPipe,
[in] IWDFMemory *pMemory,
[in] SIZE_T NumBytesTransferred,
[in] PVOID Context
);
[in] pPipe
Ein Zeiger auf die IWDFUsbTargetPipe Schnittstelle für das USB-Pipe, auf dem der Treiber einen kontinuierlichen Reader aktiviert hat.
[in] pMemory
Ein Zeiger auf die IWDFMemory Schnittstelle für einen Lesepuffer, der Daten enthält, die aus dem USB-Pipe gelesen wurden.
[in] NumBytesTransferred
Die Anzahl der Bytes, die der Lesepuffer enthält.
[in] Context
Ein Zeiger auf vom Treiber bereitgestellte Kontextinformationen, die der Treiber bereitgestellt hat, wenn er zuvor IWDFUsbTargetPipe2::ConfigureContinuousReaderaufgerufen hat.
Nichts
Um eine IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion Rückruffunktion zu registrieren, muss Ihr Treiber einen Zeiger auf die IUsbTargetPipeContinuousReaderCallbackReadComplete Schnittstelle bereitstellen, wenn IWDFUsbTargetPipe2::ConfigureContinuousReaderaufgerufen wird.
Wenn ein Treiber einen kontinuierlichen Reader für ein USB-Pipe erstellt hat, ruft das Framework die OnReaderCompletion-funktion des Treibers Rückruffunktion jedes Mal auf, wenn das E/A-Ziel des Treibers erfolgreich eine Leseanforderung abgeschlossen hat. Wenn das E/A-Ziel eine Anforderung nicht erfolgreich abgeschlossen hat, ruft das Framework die IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure Rückruffunktion auf.
Um auf den Puffer zuzugreifen, der Daten enthält, die vom Gerät gelesen wurden, kann der Treiber IWDFMemory::GetDataBufferaufrufen. Das Framework schreibt die Daten in den Puffer, nach dem Header, der durch den HeaderLength Parameter von IWDFUsbTargetPipe2::ConfigureContinuousReaderdefiniert wird. Beachten Sie, dass der Zeiger, der IWDFMemory::GetDataBuffer, Punkt an den Anfang der Kopfzeile zurückgibt, aber die OnReaderCompletionNumBytesTransferred Parameter der Kopfzeile enthält nicht die Länge der Kopfzeile.
Standardmäßig löscht das Framework das Speicherobjekt des Puffers, nachdem die OnReaderCompletion Rückruffunktion zurückgegeben wurde. Möglicherweise möchten Sie jedoch, dass das Speicherobjekt gültig bleibt, nachdem die Rückruffunktion zurückgegeben wurde. Sie können z. B. möchten, dass der Treiber den Schnittstellenzeiger des Speicherobjekts im Kontextbereich des Framework-Pipeobjekts speichern soll, damit der Treiber den Inhalt des Speicherobjekts verarbeiten kann, nachdem die Rückruffunktion zurückgegeben wurde. Um die Lebensdauer des Speicherobjekts zu verlängern, muss die Rückruffunktion die IWDFMemory::AddRef-Methode des Puffers aufrufen. Anschließend muss der Treiber die IWDFMemory::Release Methode des Puffers aufrufen, damit das Framework das Objekt löschen kann.
Das Framework synchronisiert Aufrufe der OnReaderCompletion und IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure Rückruffunktionen gemäß den folgenden Regeln:
- Diese Rückruffunktionen werden nicht gleichzeitig für ein einzelnes USB-Pipe ausgeführt.
- Wenn der Treiber mehrere fortlaufende Reader für mehrere USB-Rohre erstellt, wobei mehrere OnReaderCompletion- und OnReaderFailure- Rückruffunktionen gleichzeitig ausgeführt werden können.
- Wenn der Treiber beim Aufrufen IWDFUsbTargetPipe2::ConfigureContinuousReader den Standardwert NumPendingReads angegeben hat (oder wenn NumPendingReads Wert angegeben wird, der größer als 1 ist), und wenn eine Leseanforderung abgeschlossen ist, während die OnReaderCompletion Rückruffunktion ausgeführt wird, das Framework kann die OnReaderCompletion Rückruffunktion erneut aufrufen, bevor die Rückruffunktion zurückgegeben wird.
- Das Framework synchronisiert diese Rückruffunktionen nicht mit anderen Rückruffunktionen.
Weitere Informationen zur OnReaderCompletion- Rückruffunktion und USB-E/A-Zielen finden Sie unter Handling a USB I/O Target.
Anforderung | Wert |
---|---|
Ende des Supports | In UMDF 2.0 und höher nicht verfügbar. |
Zielplattform- | Desktop |
Mindest-UMDF-Version | 1.9 |
Header- | wudfusb.h (include Wudfusb.h) |
IUsbTargetPipeContinuousReaderCallbackReadComplete
IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure