EVT_SERCX_RECEIVE Rückruffunktion (sercx.h)
Die EvtSerCxReceive Ereignisrückruffunktion bereitet das serielle Controllergerät (UART) für einen Lesevorgang (Empfangsvorgang) vor.
Syntax
EVT_SERCX_RECEIVE EvtSercxReceive;
NTSTATUS EvtSercxReceive(
[in] WDFDEVICE Device,
[in] size_t Length
)
{...}
Parameter
[in] Device
Ein WDFDEVICE-Handle für das Framework-Geräteobjekt, das den seriellen Controller darstellt.
[in] Length
Die Anzahl der zu empfangenden Bytes. Der Controllertreiber kann diesen Wert als Hinweis verwenden, um zu entscheiden, ob PIO oder DMA zum Durchführen der Datenübertragung verwendet werden soll.
Rückgabewert
Die EvtSerCxReceive-Funktion gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Andernfalls wird ein entsprechender Fehlerstatuscode zurückgegeben.
Bemerkungen
Die serielle Framework-Erweiterung (SerCx) ruft diese Funktion auf, um die Controllerhardware für den Empfang von Daten zu konfigurieren. Bei Bedarf kann die EvtSerCxReceive-Funktion Unterbrechungen aktivieren.
Die EvtSerCxReceive-Funktion liest nicht unbedingt die Eingabedaten aus dem FIFO-Empfangspuffer. Abhängig von der Hardware des seriellen Controllers oder der Art der Übertragung kann diese Funktion einen DMA-Vorgang zum Lesen der Daten einrichten, oder sie planen möglicherweise eine Übertragungs-/Empfangs-DPC-Funktion, um die Daten zu lesen. Der serielle Controllertreiber implementiert diese DPC-Funktion, um Daten vom Controller zu empfangen und Daten an den seriellen Controller zu übertragen. Während des DPC bestimmt die DPC-Funktion, ob Daten empfangen werden können, und wenn ja, verwendet PIO, um die Daten aus dem empfangenen FIFO im seriellen Controller zu lesen.
Wenn der Empfangs-FIFO im seriellen Controller leer oder fast leer ist, aber der High-Water-Mark-Interrupt des FIFO aktiviert ist, kann die DPC-Routine einfach zurückgeben. Später kann der ISR des Controllertreibers die DPC-Routine für die Ausführung planen, und diese Routine kann weitere Daten aus dem empfangenen FIFO lesen.
Um eine EvtSerCxReceive Rückruffunktion zu registrieren, ruft der Controllertreiber die SerCxInitialize Methode während der EvtDriverDeviceAdd Rückruf auf.
Beispiele
Der Funktionstyp für diesen Rückruf wird wie folgt in Sercx.h deklariert.
typedef NTSTATUS
EVT_SERCX_RECEIVE(
__in WDFDEVICE Device
);
Um eine EvtSerCxReceive Rückruffunktion zu definieren, die MyEvtSerCxReceive
heißt, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die Statische Treiberüberprüfung (SDV) und andere Überprüfungstools erfordern, wie folgt.
EVT_SERCX_RECEIVE MyEvtSerCxReceive;
Implementieren Sie dann die Rückruffunktion wie folgt.
NTSTATUS
MyEvtSerCxReceive(
__in WDFDEVICE Device
)
{ ... }
Weitere Informationen zu SDV-Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für KMDF-Treiber.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar ab Windows 8. |
Zielplattform- | Desktop |
Header- | sercx.h |
IRQL- | Bei IRQL-<= DISPATCH_LEVEL aufgerufen |