Condividi tramite


EVT_SERCX_WAITMASK funzione di callback (sercx.h)

La EvtSerCxWaitmask funzione di callback degli eventi configura il controller seriale per monitorare gli eventi in una maschera di attesa, ovvero un valore di maschera di bit che specifica un set di eventi hardware.

Sintassi

EVT_SERCX_WAITMASK EvtSercxWaitmask;

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

Parametri

[in] Device

Handle WDFDEVICE per l'oggetto dispositivo framework che rappresenta il controller seriale.

Valore restituito

La funzione EvtSerCxWaitmask restituisce STATUS_SUCCESS se la chiamata ha esito positivo. In caso contrario, restituisce un codice di stato di errore appropriato.

Osservazioni

Il driver del controller seriale implementa questa funzione di callback. L'estensione del framework seriale (SerCx) chiama questa funzione per notificare al driver quando cambia la maschera di attesa. Durante questa chiamata, la funzione EvtSerCxWaitmask chiama il metodo SerCxGetWaitMask per ottenere la nuova maschera di attesa. Il driver inizia immediatamente a monitorare gli eventi nella nuova maschera di attesa e rimuove qualsiasi maschera di attesa precedente che potrebbe essere stata fornita in una precedente EvtSerCxWaitmask chiamata. Se la nuova maschera di attesa è zero, il driver rimuove semplicemente la maschera di attesa precedente e smette di monitorare eventuali eventi maschera di attesa.

Quando SerCx riceve una richiesta di IOCTL_SERIAL_SET_WAIT_MASK da un client, il gestore della richiesta in SerCx chiama la funzione EvtSerCxWaitmask per impostare la nuova maschera di attesa. Per altre informazioni sui tipi di eventi che possono essere specificati da una maschera di attesa, vedere SERIAL_EV_XXX.

La funzione EvtSerCxWaitmask configura l'hardware del controller seriale per monitorare gli eventi nella nuova maschera di attesa. In genere, la funzione abilita gli interrupt per questi eventi. Dopo aver configurato l'hardware, la funzione deve restituire immediatamente, senza attendere che si verifichi un evento nella maschera di attesa.

Successivamente, quando un evento nella maschera di attesa causa un interrupt, l'ISR nel driver del controller seriale pianifica l'esecuzione di una funzione DPC. Questa funzione DPC chiama il metodo SerCxCompleteWait per notificare a SerCx l'evento.

Inizialmente, dopo che un client apre una connessione alla porta seriale e prima del primo EvtSerCxWaitmask chiamata, la maschera di attesa è effettivamente zero e il driver del controller seriale non monitora alcun evento SERIAL_EV_XXX.

Per registrare un EvtSerCxWaitmask funzione di callback, il driver del controller chiama il metodo SerCxInitialize durante il callback EvtDriverDeviceAdd.

Esempi

Il tipo di funzione per questo callback viene dichiarato in Sercx.h, come indicato di seguito.

typedef NTSTATUS
  EVT_SERCX_WAITMASK(
    __in WDFDEVICE Device
    );

Per definire un EvtSerCxWaitmask funzione di callback denominata MyEvtSerCxWaitmask, è prima necessario fornire una dichiarazione di funzione che static driver Verifier (SDV) e altri strumenti di verifica, come indicato di seguito.

EVT_SERCX_WAITMASK MyEvtSerCxWaitmask;

Implementare quindi la funzione di callback come indicato di seguito.

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

Per altre informazioni sui requisiti SDV per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite i tipi di ruolo della funzione per i driver KMDF.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile a partire da Windows 8.
piattaforma di destinazione Desktop
intestazione sercx.h
IRQL Chiamato in IRQL <= DISPATCH_LEVEL

Vedere anche

EvtDriverDeviceAdd

IOCTL_SERIAL_SET_WAIT_MASK

IOCTL_SERIAL_WAIT_ON_MASK

SERIAL_EV_XXX

SerCxGetWaitMask

SerCxInitialize