Freigeben über


EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION Rückruffunktion (sercx.h)

Die EvtSerCx2PioReceiveEnableReadyNotification Ereignisrückruffunktion wird von Version 2 der seriellen Framework-Erweiterung (SerCx2) aufgerufen, damit der serielle Controllertreiber SerCx2 benachrichtigen kann, wenn der serielle Controller neue Daten empfängt.

Syntax

EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION EvtSercx2PioReceiveEnableReadyNotification;

void EvtSercx2PioReceiveEnableReadyNotification(
  [in] SERCX2PIORECEIVE PioReceive
)
{...}

Parameter

[in] PioReceive

Ein SERCX2PIORECEIVE Handle für ein PIO-Empfangsobjekt. Der serielle Controllertreiber hat zuvor den SerCx2PioReceiveCreate Methode aufgerufen, um dieses Objekt zu erstellen.

Rückgabewert

Nichts

Bemerkungen

Der serielle Controllertreiber muss diese Funktion implementieren. Der Treiber registriert die Funktion im SerCx2PioReceiveCreate Aufruf, der das PIO-Empfangsobjekt erstellt.

Nachdem die EvtSerCx2PioReceiveEnableReadyNotification-Funktion aufgerufen wurde, um eine bereite Benachrichtigung für eine PIO-Empfangstransaktion zu aktivieren, muss der serielle Controllertreiber die SerCx2PioReceiveReady-Methode aufrufen, um SerCx2 zu benachrichtigen, wenn der Treiber erkennt, dass mindestens ein Bytes von Daten verfügbar sind, um vom Empfangs-FIFO in der seriellen Controllerhardware gelesen zu werden. Wenn daten bereits im FiFO empfangen sind, wenn die bereite Benachrichtigung aktiviert ist, ruft der Treiber diese Methode sofort auf, um SerCx2 zu benachrichtigen.

Die bereite Benachrichtigung für eine PIO-Empfangstransaktion ist eine einmalige Benachrichtigung. Nach dem Senden einer bereiten Benachrichtigung an SerCx2 sendet der serielle Controllertreiber keine weiteren Benachrichtigungen, bis SerCx2 die EvtSerCx2PioReceiveEnableReadyNotification Funktion aufruft, um eine andere Benachrichtigung zu aktivieren.

Ein EvtSerCx2PioReceiveReadBuffer Ereignisrückruffunktion nur teilweise abgeschlossen eine PIO-Empfangstransaktion, da keine weiteren Daten sofort verfügbar sind, um aus dem empfangenden FIFO gelesen zu werden. In diesem Fall ruft SerCx2 die EvtSerCx2PioReceiveEnableReadyNotification-Funktion auf, um eine bereite Benachrichtigung zu aktivieren. In diesem Fall muss der serielle Controllertreiber SerCx2 benachrichtigen, wenn der Empfangen FIFO weitere Daten enthält. Als Reaktion auf diese Benachrichtigung setzt SerCx2 die teilweise abgeschlossene Empfangstransaktion fort, indem die EvtSerCx2PioReceiveReadBuffer Funktion erneut aufgerufen wird.

In der Regel ermöglicht eine EvtSerCx2PioReceiveEnableReadyNotification-Funktion eine Unterbrechung, die auftritt, wenn der serielle Controller mehr Daten zum Lesen zur Verfügung hat. Als Reaktion auf diesen Interrupt ruft der serielle Controllertreiber SerCx2PioReceiveReadyauf.

Es kann nicht mehr als eine bereite Benachrichtigung gleichzeitig ausstehen. Nachdem SerCx2 die EvtSerCx2PioReceiveEnableReadyNotification Funktion aufruft, um eine bereite Benachrichtigung zu aktivieren, ruft SerCx2 diese Funktion erst erneut auf, wenn der Controllertreiber SerCx2PioReceiveReadyaufruft.

SerCx2 ruft nie die EvtSerCx2PioReceiveReadBuffer Funktion auf, wenn die Benachrichtigung bereit ist.

Eine ausstehende Benachrichtigung kann abgebrochen werden, wenn die zugeordnete Leseanforderung ausfällt oder abgebrochen wird. Um eine bereite Benachrichtigung für eine PIO-Empfangstransaktion abzubrechen, ruft SerCx2 die EvtSerCx2PioReceiveCancelReadyNotification Ereignisrückruffunktion auf.

SerCx2 verwendet einsatzbereite Benachrichtigungen, um Intervalltimeouts effizient zu verwalten, die während der Verarbeitung von Leseanforderungen auftreten, die als PIO-Empfangstransaktionen verarbeitet werden.

Weitere Informationen finden Sie unter SerCx2 PIO-Receive Transactions.

Beispiele

Um eine EvtSerCx2PioReceiveEnableReadyNotification 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 z. B. eine EvtSerCx2PioReceiveEnableReadyNotification Rückruffunktion zu definieren, die MyPioReceiveEnableReadyNotificationheißt, verwenden Sie den EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION Funktionstyp, wie in diesem Codebeispiel gezeigt:

EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION  MyPioReceiveEnableReadyNotification;

Implementieren Sie dann die Rückruffunktion wie folgt:

_Use_decl_annotations_
VOID
  MyPioReceiveEnableReadyNotification(
    SERCX2PIORECEIVE  PioReceive
    )
  {...}

Der EVT_SERCX2_PIO_RECEIVE_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 Funktionstyp EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION 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

EvtSerCx2PioReceiveCancelReadyNotification

EvtSerCx2PioReceiveCleanupTransaction

IRP_MJ_READ

SERCX2PIORECEIVE

SerCx2PioReceiveCreate

SerCx2PioReceiveReady