EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION Rückruffunktion (sercx.h)
Die EvtSerCx2PioTransmitEnableReadyNotification Ereignisrückruffunktion wird von Version 2 der seriellen Framework-Erweiterung (SerCx2) aufgerufen, damit der serielle Controllertreiber SerCx2 benachrichtigen kann, wenn das Senden von FIFO im seriellen Controller bereit ist, weitere Daten zu akzeptieren.
Syntax
EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION EvtSercx2PioTransmitEnableReadyNotification;
void EvtSercx2PioTransmitEnableReadyNotification(
[in] SERCX2PIOTRANSMIT PioTransmit
)
{...}
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.
Rückgabewert
Nichts
Bemerkungen
Der serielle Controllertreiber muss diese Funktion implementieren. Der Treiber registriert die Funktion im SerCx2PioTransmitCreate Aufruf, der das PIO-Übertragungsobjekt erstellt.
Wenn die bereite Benachrichtigung für PIO-Übertragungstransaktionen aktiviert ist, muss der serielle Controllertreiber die SerCx2PioTransmitReady--Methode aufrufen, um SerCx2 zu benachrichtigen, wenn der Treiber erkennt, dass das Übertragungs-FIFO in der seriellen Controllerhardware bereit ist, weitere Daten zu akzeptieren. Wenn das Übertragungs-FIFO bereit ist, Daten zu akzeptieren, wenn die bereite Benachrichtigung aktiviert ist, ruft der Treiber diese Methode sofort auf, um SerCx2 zu benachrichtigen.
Die bereite Benachrichtigung für eine PIO-Übertragungstransaktion ist eine einmalige Benachrichtigung. Nach dem Senden einer bereiten Benachrichtigung an SerCx2 sendet der serielle Controllertreiber keine weiteren Benachrichtigungen, bis SerCx2 den EvtSerCx2PioTransmitEnableReadyNotification Funktion aufruft, um eine weitere Benachrichtigung zu aktivieren.
Ein EvtSerCx2PioTransmitWriteBuffer Funktionsaufruf kann nur teilweise eine PIO-Übertragungstransaktion abschließen, da im Übertragungs-FIFO kein mehr Platz sofort verfügbar ist, um weitere Daten zu schreiben. In diesem Fall ruft SerCx2 die EvtSerCx2PioTransmitEnableReadyNotification-Funktion auf, um eine bereite Benachrichtigung zu aktivieren. In diesem Fall muss der serielle Controllertreiber SerCx2 benachrichtigen, wenn die Übertragung FIFO Platz für weitere Daten hat. Als Reaktion auf diese Benachrichtigung setzt SerCx2 die teilweise abgeschlossene Übertragungstransaktion fort, indem die EvtSerCx2PioTransmitWriteBuffer Funktion erneut aufgerufen wird.
In der Regel ermöglicht eine EvtSerCx2PioTransmitEnableReadyNotification-Funktion eine Unterbrechung, die auftritt, wenn die Übertragung von FIFO im seriellen Controller bereit ist, weitere Daten zu akzeptieren. Als Reaktion auf diesen Interrupt ruft der serielle Controllertreiber SerCx2PioTransmitReadyauf.
Es kann nicht mehr als eine bereite Benachrichtigung gleichzeitig ausstehen. SerCx2 ruft nie die EvtSerCx2PioTransmitEnableReadyNotification-Funktion auf, wenn die bereite Benachrichtigung bereits aktiviert ist.
SerCx2 ruft nie die EvtSerCx2PioTransmitWriteBuffer Funktion auf, wenn die Benachrichtigung bereit ist.
Eine ausstehende fertige Benachrichtigung kann abgebrochen werden, wenn das zugeordnete Schreibanforderungsout ausfällt oder abgebrochen wird. Um eine bereite Benachrichtigung für eine PIO-Übertragungstransaktion abzubrechen, ruft SerCx2 die EvtSerCx2PioTransmitCancelReadyNotification Ereignisrückruffunktion auf.
Weitere Informationen finden Sie unter SerCx2 PIO-Transmit Transactions.
Beispiele
Um eine EvtSerCx2PioTransmitEnableReadyNotification 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 EvtSerCx2PioTransmitEnableReadyNotification Rückruffunktion zu definieren, die MyPioTransmitEnableReadyNotification
heißt, verwenden Sie den EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION Funktionstyp, wie in diesem Codebeispiel gezeigt:
EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION MyPioTransmitEnableReadyNotification;
Implementieren Sie dann die Rückruffunktion wie folgt:
_Use_decl_annotations_
VOID
MyPioTransmitEnableReadyNotification(
SERCX2PIOTRANSMIT PioTransmit
)
{...}
Der EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION 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 EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION Funktionstyp 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. |