Freigeben über


EVT_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION Rückruffunktion (sercx.h)

Die EvtSerCx2SystemDmaReceiveEnableNewDataNotification 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_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION EvtSercx2SystemDmaReceiveEnableNewDataNotification;

void EvtSercx2SystemDmaReceiveEnableNewDataNotification(
  [in] SERCX2SYSTEMDMARECEIVE SystemDmaReceive
)
{...}

Parameter

[in] SystemDmaReceive

Ein SERCX2SYSTEMDMARECEIVE Handle für ein System-DMA-Empfangsobjekt. Der serielle Controllertreiber hat zuvor den SerCx2SystemDmaReceiveCreate Methode aufgerufen, um dieses Objekt zu erstellen.

Rückgabewert

Nichts

Bemerkungen

Ihr serieller Controllertreiber kann diese Funktion als Option implementieren. Falls implementiert, registriert der Treiber die Funktion im SerCx2SystemDmaReceiveCreate Aufruf, der das System-DMA-Receive-Objekt erstellt.

Nachdem die EvtSerCx2SystemDmaReceiveEnableNewDataNotification Funktion aufgerufen wird, um eine Benachrichtigung über neue Daten für eine System-DMA-Empfangstransaktion zu aktivieren, Der serielle Controllertreiber muss den SerCx2SystemDmaReceiveNewDataNotification Methode aufrufen, um SerCx2 zu benachrichtigen, wenn der Treiber erkennt, dass mindestens eine Byte empfangener Daten entweder bereit für die Übertragung sind oder bereits vom System-DMA-Controller übertragen wurden.

Die durch die EvtSerCx2SystemDmaReceiveEnableNewDataNotification-Funktion aktivierte Benachrichtigung für neue Daten ist eine Einmalige Benachrichtigung. Nachdem diese Funktion aufgerufen wurde und der serielle Controllertreiber eine neue Datenbenachrichtigung an SerCx2 sendet, wird keine weitere Benachrichtigung gesendet, bis SerCx2 die Funktion erneut aufruft, um eine weitere Benachrichtigung zu aktivieren.

Die EvtSerCx2SystemDmaReceiveEnableNewDataNotification Funktion ermöglicht in der Regel das Auslösen einer Unterbrechung, wenn der serielle Controller Daten vom Peripheriegerät empfängt.

Es kann nicht mehr als eine Benachrichtigung über neue Daten gleichzeitig ausstehen. Nachdem SerCx2 die EvtSerCx2SystemDmaReceiveEnableNewDataNotification-Funktion aufruft, um eine Benachrichtigung über neue Daten zu aktivieren, ruft SerCx2 diese Funktion erst erneut auf, wenn der Controllertreiber SerCx2SystemDmaReceiveNewDataNotificationaufruft.

Eine ausstehende Benachrichtigung über neue Daten kann abgebrochen werden, wenn die zugeordnete Leseanforderung ausfällt oder abgebrochen wird. Um eine neue Datenbenachrichtigung für eine System-DMA-Empfangstransaktion abzubrechen, ruft SerCx2 die EvtSerCx2SystemDmaReceiveCancelNewDataNotification Ereignisrückruffunktion auf. Ein Treiber, der eine EvtSerCx2SystemDmaReceiveEnableNewDataNotification-Funktion implementiert, muss auch eine EvtSerCx2SystemDmaReceiveCancelNewDataNotification-Funktion implementieren.

SerCx2 verwendet Benachrichtigungen für neue Daten, um Intervalltimeouts effizient zu verwalten, die während der Verarbeitung von Leseanforderungen auftreten, die als System-DMA-Empfangstransaktionen verarbeitet werden.

Weitere Informationen finden Sie unter SerCx2 System-DMA-Receive Transactions.

Beispiele

Um eine EvtSerCx2SystemDmaReceiveEnableNewDataNotification Rückruffunktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der von Ihnen definierten Rückruffunktion identifiziert. 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 EvtSerCx2SystemDmaReceiveEnableNewDataNotification Rückruffunktion zu definieren, die MySystemDmaReceiveEnableNewDataNotificationheißt, verwenden Sie den EVT_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION Funktionstyp, wie in diesem Codebeispiel gezeigt:

EVT_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION  MySystemDmaReceiveEnableNewDataNotification;

Implementieren Sie dann die Rückruffunktion wie folgt:

_Use_decl_annotations_
VOID
  MySystemDmaReceiveEnableNewDataNotification(
    SERCX2SYSTEMDMARECEIVE  SystemDmaReceive
    )
  {...}

Der EVT_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_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_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_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

DMA_OPERATIONS

EvtSerCx2SystemDmaReceiveCancelNewDataNotification

EvtSerCx2SystemDmaReceiveCleanupTransaction

ReadDmaCounter-

SERCX2SYSTEMDMARECEIVE

SerCx2SystemDmaReceiveCreate

SerCx2SystemDmaReceiveNewDataNotification