EVT_SERCX2_SYSTEM_DMA_TRANSMIT_PURGE_FIFO Rückruffunktion (sercx.h)
Die EvtSerCx2SystemDmaTransmitPurgeFifo Ereignisrückruffunktion wird von Version 2 der seriellen Framework-Erweiterung (SerCx2) aufgerufen, um alle Bytes von nicht gesendeten Daten zu verwerfen, die in der seriellen Controllerhardware im Übertragungs-FIFO verbleiben.
Syntax
EVT_SERCX2_SYSTEM_DMA_TRANSMIT_PURGE_FIFO EvtSercx2SystemDmaTransmitPurgeFifo;
void EvtSercx2SystemDmaTransmitPurgeFifo(
[in] SERCX2SYSTEMDMATRANSMIT SystemDmaTransmit,
[in] ULONG BytesAlreadyTransmittedToHardware
)
{...}
Parameter
[in] SystemDmaTransmit
Ein SERCX2SYSTEMDMATRANSMIT Handle zu einem System-DMA-Transmissionsobjekt. Der serielle Controllertreiber hat zuvor den SerCx2SystemDmaTransmitCreate Methode aufgerufen, um dieses Objekt zu erstellen.
[in] BytesAlreadyTransmittedToHardware
Die Anzahl der Bytes, die bereits während der aktuellen System-DMA-Übertragungstransaktion in das Übertragungs-FIFO geladen wurden.
Rückgabewert
Nichts
Bemerkungen
Ihr serieller Controllertreiber kann diese Funktion als Option implementieren. Falls implementiert, registriert der Treiber die Funktion im SerCx2SystemDmaTransmitCreate Aufruf, der das System-DMA-übertragungsobjekt erstellt.
Ihr Treiber sollte eine EvtSerCx2SystemDmaTransmitPurgeFifo--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 EvtSerCx2SystemDmaTransmitDrainFifo und EvtSerCx2SystemDmaTransmitCancelDrainFifo Ereignisrückruffunktionen implementieren.
Wenn ein ausstehender Schreibvorgang (IRP_MJ_WRITE) eine Zeitüberschreitung oder ein Abbruch der Anforderung aussteht, muss SerCx2 möglicherweise die aktuelle System-DMA-Transaktion beenden, bevor sie abgeschlossen ist. Nachdem die Transaktion beendet wurde, ruft SerCx2 die EvtSerCx2SystemDmaTransmitPurgeFifo-Funktion auf, wenn sie implementiert ist.
Die EvtSerCx2SystemDmaTransmitPurgeFifo Funktion hält die Übertragung von Daten vom Schreibpuffer an das FIFO an und verwirft alle zuvor übertragenen Daten, die im FIFO verbleiben. Nachdem die Übertragungstransaktion beendet wurde, muss der Treiber die SerCx2SystemDmaTransmitPurgeFifoComplete--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 System-DMA-Transmit Transactions.
Beispiele
Um eine EvtSerCx2SystemDmaTransmitPurgeFifo 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 EvtSerCx2SystemDmaTransmitPurgeFifo Rückruffunktion zu definieren, die MySystemDmaTransmitPurgeFifo
heißt, verwenden Sie den funktionstyp EVT_SERCX2_SYSTEM_DMA_TRANSMIT_PURGE_FIFO, wie in diesem Codebeispiel gezeigt:
EVT_SERCX2_SYSTEM_DMA_TRANSMIT_PURGE_FIFO MySystemDmaTransmitPurgeFifo;
Implementieren Sie dann die Rückruffunktion wie folgt:
_Use_decl_annotations_
VOID
MySystemDmaTransmitPurgeFifo(
SERCX2SYSTEMDMATRANSMIT SystemDmaTransmit,
ULONG BytesAlreadyTransmittedToHardware
)
{...}
Der EVT_SERCX2_SYSTEM_DMA_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_SYSTEM_DMA_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