EVT_SERCX2_PIO_TRANSMIT_PURGE_FIFO Rückruffunktion (sercx.h)

Die Ereignisrückruffunktion EvtSerCx2PioTransmitPurgeFifo wird von Version 2 der seriellen Framework-Erweiterung (SerCx2) aufgerufen, um alle Bytes nicht gesendeter Daten zu verwerfen, die in der Übertragen-FIFO im seriellen Controller verbleiben.

Syntax

EVT_SERCX2_PIO_TRANSMIT_PURGE_FIFO EvtSercx2PioTransmitPurgeFifo;

void EvtSercx2PioTransmitPurgeFifo(
  [in] SERCX2PIOTRANSMIT PioTransmit,
  [in] ULONG BytesAlreadyTransmittedToHardware
)
{...}

Parameter

[in] PioTransmit

Ein SERCX2PIOTRANSMIT Handle für ein PIO-Übertragungsobjekt. Der serielle Controllertreiber hat zuvor die SerCx2PioTransmitCreate-Methode aufgerufen, um dieses Objekt zu erstellen.

[in] BytesAlreadyTransmittedToHardware

Die Anzahl der Bytes, die während der aktuellen PIO-Übertragungstransaktion bereits in die Übertragungs-FIFO geladen wurden. Dieser Parameter ist die Summe aller Bytes, die in vorherigen Aufrufen der Ereignisrückruffunktion EvtSerCx2PioTransmitWriteBuffer übertragen wurden und Teil dieser Transaktion sind.

Rückgabewert

Keine

Bemerkungen

Ihr serieller Controllertreiber kann diese Funktion optional implementieren. Falls implementiert, registriert der Treiber die Funktion im SerCx2PioTransmitCreate-Aufruf , der das PIO-transmit-Objekt erstellt.

Ihr Treiber sollte eine EvtSerCx2PioTransmitPurgeFifo-Funktion implementieren, wenn der serielle Controller über eine Hardware-FIFO (oder einen ähnlichen Puffermechanismus) zum Speichern von Übertragungsdaten verfügt. Wenn Ihr Treiber diese Funktion implementiert, muss er auch die Ereignisrückruffunktionen EvtSerCx2PioTransmitDrainFifo und EvtSerCx2PioTransmitCancelDrainFifo implementieren.

SerCx2 initiiert eine PIO-Übertragungstransaktion als Reaktion auf eine Schreibanforderung (IRP_MJ_WRITE) von einem Client. Wenn diese Anforderung ein Timeout aufweist oder vor Abschluss abgebrochen wird, ruft SerCx2 die EvtSerCx2PioTransmitPurgeFifo-Funktion auf, falls sie implementiert ist, um alle nicht gesendeten Daten zu bereinigen, die möglicherweise die übertragene FIFO bleiben.

Nachdem das Übertragungs-FIFO gelöscht wurde, muss die EvtSerCx2PioTransmitPurgeFifo-Funktion die SerCx2PioTransmitPurgeFifoComplete-Methode aufrufen, um SerCx2 zu benachrichtigen, dass die FIFO gelöscht wurde, und SerCx2 schließt dann die Schreibanforderung ab.

Weitere Informationen finden Sie unter SerCx2 PIO-Transmit Transactions.

Beispiele

Um eine EvtSerCx2PioTransmitPurgeFifo-Rückruffunktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der Rückruffunktion identifiziert, die Sie definieren. Windows bietet eine Reihe von Rückruffunktionstypen für Treiber. Das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Voraussetzung für das Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine EvtSerCx2PioTransmitPurgeFifo-Rückruffunktion namens MyPioTransmitPurgeFifozu definieren, verwenden Sie den Funktionstyp EVT_SERCX2_PIO_TRANSMIT_PURGE_FIFO , wie in diesem Codebeispiel gezeigt:

EVT_SERCX2_PIO_TRANSMIT_PURGE_FIFO  MyPioTransmitPurgeFifo;

Implementieren Sie dann Ihre Rückruffunktion wie folgt:

_Use_decl_annotations_
VOID
  MyPioTransmitPurgeFifo(
    SERCX2PIOTRANSMIT  PioTransmit,
    ULONG  BytesAlreadyTransmittedToHardware

    )
  {...}

Der EVT_SERCX2_PIO_TRANSMIT_PURGE_FIFO Funktionstyp ist in der Sercx.h-Headerdatei definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, müssen Sie der Funktionsdefinition die anmerkung Use_decl_annotations hinzufügen. Die Use_decl_annotations-Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den EVT_SERCX2_PIO_TRANSMIT_PURGE_FIFO Funktionstyp in der Headerdatei angewendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für KMDF-Treiber. Weitere Informationen zu Use_decl_annotations finden Sie unter Annotating Function Behavior.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 8.1.
Zielplattform Desktop
Kopfzeile sercx.h
IRQL Wird unter IRQL <= DISPATCH_LEVEL aufgerufen.

Weitere Informationen

EvtSerCx2SystemDmaTransmitCancelDrainFifo

EvtSerCx2SystemDmaTransmitDrainFifo

IRP_MJ_WRITE

SERCX2PIOTRANSMIT

SerCx2PioTransmitCreate

SerCx2PioTransmitPurgeFifoComplete