Freigeben über


EVT_SERCX_WAITMASK Rückruffunktion (sercx.h)

Die EvtSerCxWaitmask Ereignisrückruffunktion konfiguriert den seriellen Controller, um die Ereignisse in einer Wartemaske zu überwachen. Dabei handelt es sich um einen Bitmaskenwert, der eine Reihe von Hardwareereignissen angibt.

Syntax

EVT_SERCX_WAITMASK EvtSercxWaitmask;

NTSTATUS EvtSercxWaitmask(
  [in] WDFDEVICE Device
)
{...}

Parameter

[in] Device

Ein WDFDEVICE-Handle für das Framework-Geräteobjekt, das den seriellen Controller darstellt.

Rückgabewert

Die EvtSerCxWaitmask Funktion gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Andernfalls wird ein entsprechender Fehlerstatuscode zurückgegeben.

Bemerkungen

Der serielle Controllertreiber implementiert diese Rückruffunktion. Die serielle Framework-Erweiterung (SerCx) ruft diese Funktion auf, um den Treiber zu benachrichtigen, wenn sich die Wartemaske ändert. Während dieses Aufrufs ruft die EvtSerCxWaitmask-Funktion die SerCxGetWaitMask Methode auf, um die neue Wartemaske abzurufen. Der Treiber beginnt sofort mit der Überwachung der Ereignisse in der neuen Wartemaske und verwirft alle alten Wartemasken, die möglicherweise in einem vorherigen EvtSerCxWaitmask Aufruf bereitgestellt wurden. Wenn die neue Wartemaske null ist, verwirft der Fahrer einfach die alte Wartemaske und überwacht nicht mehr alle Wartemaskenereignisse.

Wenn SerCx eine IOCTL_SERIAL_SET_WAIT_MASK Anforderung von einem Client empfängt, ruft der Anforderungshandler in SerCx den EvtSerCxWaitmask--Funktion auf, um die neue Wartemaske festzulegen. Weitere Informationen zu den Ereignistypen, die durch eine Wartemaske angegeben werden können, finden Sie unter SERIAL_EV_XXX.

Die EvtSerCxWaitmask--Funktion konfiguriert die serielle Controllerhardware, um die Ereignisse in der neuen Wartemaske zu überwachen. In der Regel ermöglicht die Funktion Unterbrechungen für diese Ereignisse. Nach der Konfiguration der Hardware sollte die Funktion sofort zurückgegeben werden, ohne auf ein Ereignis in der Wartemaske zu warten.

Wenn später ein Ereignis in der Wartemaske zu einer Unterbrechung führt, plant der ISR im seriellen Controllertreiber die Ausführung einer DPC-Funktion. Diese DPC-Funktion ruft die SerCxCompleteWait--Methode auf, um SerCx über das Ereignis zu benachrichtigen.

Nachdem ein Client zunächst eine Verbindung mit dem seriellen Port geöffnet hat und vor dem ersten EvtSerCxWaitmask Aufruf, ist die Wartemaske effektiv null, und der serielle Controllertreiber überwacht keine SERIAL_EV_XXX Ereignisse.

Um eine EvtSerCxWaitmask Rückruffunktion zu registrieren, ruft der Controllertreiber die SerCxInitialize Methode während der EvtDriverDeviceAdd Rückruf auf.

Beispiele

Der Funktionstyp für diesen Rückruf wird wie folgt in Sercx.h deklariert.

typedef NTSTATUS
  EVT_SERCX_WAITMASK(
    __in WDFDEVICE Device
    );

Um eine EvtSerCxWaitmask Rückruffunktion zu definieren, die MyEvtSerCxWaitmaskheißt, müssen Sie zunächst eine Funktionsdeklaration angeben, die Statische Treiberüberprüfung (SDV) und andere Überprüfungstools erforderlich ist.

EVT_SERCX_WAITMASK MyEvtSerCxWaitmask;

Implementieren Sie dann die Rückruffunktion wie folgt.

NTSTATUS
  MyEvtSerCxWaitmask(
    __in WDFDEVICE Device
    )
{ ... }

Weitere Informationen zu SDV-Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für KMDF-Treiber.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar ab Windows 8.
Zielplattform- Desktop
Header- sercx.h
IRQL- Bei IRQL-<= DISPATCH_LEVEL aufgerufen

Siehe auch

EvtDriverDeviceAdd

IOCTL_SERIAL_SET_WAIT_MASK

IOCTL_SERIAL_WAIT_ON_MASK

SERIAL_EV_XXX

SerCxGetWaitMask

SerCxInitialize