Freigeben über


EVT_SERCX2_PIO_TRANSMIT_PURGE_FIFO Rückruffunktion (sercx.h)

Die EvtSerCx2PioTransmitPurgeFifo Ereignisrückruffunktion wird von Version 2 der seriellen Framework-Erweiterung (SerCx2) aufgerufen, um alle Bytes von nicht gesendeten Daten zu verwerfen, die im übertragenen 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 den SerCx2PioTransmitCreate Methode aufgerufen, um dieses Objekt zu erstellen.

[in] BytesAlreadyTransmittedToHardware

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

Rückgabewert

Nichts

Bemerkungen

Ihr serieller Controllertreiber kann diese Funktion als Option implementieren. Falls implementiert, registriert der Treiber die Funktion im SerCx2PioTransmitCreate Aufruf, der das PIO-Übertragungsobjekt erstellt.

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

SerCx2 initiiert eine PIO-Übertragungstransaktion als Reaktion auf eine Schreibanforderung (IRP_MJ_WRITE) von einem Client. Wenn diese Anforderung vor abschluss des Vorgangs ausfällt oder abgebrochen wird, ruft SerCx2 die EvtSerCx2PioTransmitPurgeFifo-Funktion auf, um nicht gesendete Daten zu löschen, die möglicherweise das FIFO übertragen.

Nachdem die FiFO-Übertragung gelöscht wurde, muss die EvtSerCx2PioTransmitPurgeFifo-Funktion die SerCx2PioTransmitPurgeFifoComplete--Methode aufrufen, um SerCx2 zu benachrichtigen, dass das 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 zuerst eine Funktionsdeklaration bereitstellen, die den Typ der rückruffunktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Rückruffunktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine EvtSerCx2PioTransmitPurgeFifo Rückruffunktion zu definieren, die MyPioTransmitPurgeFifoheißt, verwenden Sie den EVT_SERCX2_PIO_TRANSMIT_PURGE_FIFO Funktionstyp, wie in diesem Codebeispiel gezeigt:

EVT_SERCX2_PIO_TRANSMIT_PURGE_FIFO  MyPioTransmitPurgeFifo;

Implementieren Sie dann die Rückruffunktion wie folgt:

_Use_decl_annotations_
VOID
  MyPioTransmitPurgeFifo(
    SERCX2PIOTRANSMIT  PioTransmit,
    ULONG  BytesAlreadyTransmittedToHardware

    )
  {...}

Der EVT_SERCX2_PIO_TRANSMIT_PURGE_FIFO Funktionstyp wird in der Headerdatei Sercx.h definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen, die auf den Funktionstyp EVT_SERCX2_PIO_TRANSMIT_PURGE_FIFO in der Headerdatei angewendet werden, verwendet 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_annotationsfinden Sie unter Annotating Function Behavior.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar ab Windows 8.1.
Zielplattform- Desktop
Header- sercx.h
IRQL- Wird bei IRQL <= DISPATCH_LEVEL aufgerufen.

Siehe auch

EvtSerCx2SystemDmaTransmitCancelDrainFifo

EvtSerCx2SystemDmaTransmitDrainFifo

IRP_MJ_WRITE

SERCX2PIOTRANSMIT

SerCx2PioTransmitCreate

SerCx2PioTransmitPurgeFifoComplete