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 MyPioTransmitPurgeFifo
zu 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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für