EVT_WDF_USB_READERS_FAILED Rückruffunktion (wdfusb.h)

[Gilt für KMDF und UMDF]

Die Ereignisrückruffunktion EvtUsbTargetPipeReadersFailed eines Treibers informiert den Treiber darüber, dass ein fortlaufender Reader beim Verarbeiten einer Leseanforderung einen Fehler gemeldet hat.

Syntax

EVT_WDF_USB_READERS_FAILED EvtWdfUsbReadersFailed;

BOOLEAN EvtWdfUsbReadersFailed(
  [in] WDFUSBPIPE Pipe,
  [in] NTSTATUS Status,
  [in] USBD_STATUS UsbdStatus
)
{...}

Parameter

[in] Pipe

Ein Handle für ein Framework-Pipeobjekt.

[in] Status

Der NTSTATUS-Wert , den das E/A-Ziel der Pipe zurückgegeben hat.

[in] UsbdStatus

Der USBD_STATUS typisierte status Wert, den das E/A-Ziel der Pipe zurückgegeben hat.

Rückgabewert

Die Ereignisrückruffunktion EvtUsbTargetPipeReadersFailed gibt einen booleschen Wert zurück, der bei TRUE dazu führt, dass das Framework die USB-Pipe zurücksetzt und dann den fortlaufenden Reader neu startet. Wenn diese Funktion FALSE zurückgibt, setzt das Framework das Gerät nicht zurück oder startet den fortlaufenden Reader nicht neu.

Hinweise

Um eine EvtUsbTargetPipeReadersFailed-Rückruffunktion zu registrieren, muss der Treiber die Adresse der Funktion in einer WDF_USB_CONTINUOUS_READER_CONFIG-Struktur platzieren. Informationen zum Hinzufügen dieses Funktionszeigers finden Sie im Abschnitt Hinweise von WDF_USB_CONTINUOUS_READER_CONFIG_INIT.

Wenn ein Treiber einen fortlaufenden Reader für eine USB-Pipe erstellt hat, ruft das Framework die Rückruffunktion EvtUsbTargetPipeReadersFailed des Treibers auf, wenn das E/A-Ziel des Treibers beim Abschließen einer Leseanforderung einen Fehler meldet. (Wenn das E/A-Ziel die Anforderung erfolgreich abschließt, ruft das Framework die Rückruffunktion EvtUsbTargetPipeReadComplete des Treibers auf.)

Bevor das Framework die EvtUsbTargetPipeReadersFailed-Rückruffunktion eines Treibers aufruft, versucht es, alle laufenden Leseanforderungen abzubrechen. Es werden keine Leseanforderungen ausgeführt, wenn das Framework die Rückruffunktion EvtUsbTargetPipeReadersFailed aufruft . Das Framework stellt keine zusätzlichen Leseanforderungen in die Warteschlange, bis die Rückruffunktion EvtUsbTargetPipeReadersFailed zurückgegeben wird .

Informationen dazu, wie das Framework Aufrufe der Rückruffunktion EvtUsbTargetPipeReadersFailed mit Aufrufen anderer Rückruffunktionen synchronisiert, finden Sie im Abschnitt Hinweise von EvtUsbTargetPipeReadComplete.

Die Rückruffunktion EvtUsbTargetPipeReadersFailed darf WdfIoTargetStop nicht aufrufen, um das USB-Ziel des fortlaufenden Readers zu beenden. (Tatsächlich führt der Aufruf von WdfIoTargetStop in einer EvtUsbTargetPipeReadersFailed-Rückruffunktion zu einem Deadlock.) Darüber hinaus darf die Rückruffunktion WdfIoTargetStart nicht aufrufen, um den fortlaufenden Reader neu zu starten. Stattdessen startet das Framework den Reader neu, wenn die Rückruffunktion TRUE zurückgibt. Weitere Informationen zum Aufrufen von WdfIoTargetStart und WdfIoTargetStop für einen fortlaufenden Reader finden Sie unter Arbeiten mit USB-Pipes.

Wenn ein Treiber keine EvtUsbTargetPipeReadersFailed-Rückruffunktion bereitstellt und das E/A-Ziel des Treibers einen Fehler meldet, setzt das Framework die USB-Pipe zurück und startet den fortlaufenden Reader neu.

Weitere Informationen zur EvtUsbTargetPipeReadersFailed-Rückruffunktion und USB-E/A-Zielen finden Sie unter USB-E/A-Ziele.

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile wdfusb.h (einschließen von Wdf.h)
IRQL PASSIVE_LEVEL

Weitere Informationen

EvtUsbTargetPipeReadComplete

WDF_USB_CONTINUOUS_READER_CONFIG