EVT_SERCX_TRANSMIT Rückruffunktion (sercx.h)
Die EvtSerCxTransmit Ereignisrückruffunktion bereitet das serielle Controllergerät (UART) für einen Schreibvorgang (Übertragung) vor.
Syntax
EVT_SERCX_TRANSMIT EvtSercxTransmit;
NTSTATUS EvtSercxTransmit(
[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 übertragenden 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 EvtSerCxTransmit-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 serielle Controllerhardware zum Übertragen von Daten zu konfigurieren. Bei Bedarf kann die EvtSerCxTransmit-Funktion Unterbrechungen aktivieren.
Die EvtSerCxTransmit Funktion schreibt nicht notwendigerweise die Ausgabedaten in den FIFO-Übertragungspuffer. Abhängig von der Hardware des seriellen Controllers oder der Art der Übertragung kann diese Funktion einen DMA-Vorgang einrichten, um die Daten zu schreiben, oder sie planen möglicherweise eine Übertragungs-/Empfangs-DPC-Funktion, um die Daten zu schreiben. Der serielle Controllertreiber implementiert diese DPC-Funktion, um Daten an den seriellen Controller zu übertragen und Daten vom Controller zu empfangen. Während des DPC bestimmt die DPC-Funktion, ob Daten übertragen werden können, und verwendet in diesem Falls ja PIO, um die Daten an das übertragene FIFO im seriellen Controller zu übertragen.
Wenn die FiFO-Übertragung im seriellen Controller voll oder fast voll ist, aber der FIFO-Unterbrechung mit geringem Wasserzeichen aktiviert ist, kann die EvtSerCxTransmit Funktion einfach zurückgeben. Später kann der ISR des Controllertreibers die DPC-Funktion zum Übertragen/Empfangen planen, und diese Funktion kann weitere Ausgabedaten an das FIFO übertragen.
Um eine EvtSerCxTransmit 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_TRANSMIT(
__in WDFDEVICE Device
);
Um eine EvtSerCxTransmit Rückruffunktion zu definieren, die MyEvtSerCxTransmit
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_TRANSMIT MyEvtSerCxTransmit;
Implementieren Sie dann die Rückruffunktion wie folgt.
NTSTATUS
MyEvtSerCxTransmit(
__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 |