Freigeben über


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 MyEvtSerCxTransmitheiß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

Siehe auch

EvtDriverDeviceAdd

SerCxInitialize

WdfDpcEnqueue