EVT_SERCX_WAITMASK funzione di callback (sercx.h)

La funzione di callback dell'evento EvtSerCxWaitmask 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.

Commenti

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 chiamata EvtSerCxWaitmask . 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 si verifica un evento nella maschera di attesa, 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 della prima chiamata evtSerCxWaitmask , la maschera di attesa è effettivamente zero e il driver del controller seriale non monitora alcun evento SERIAL_EV_XXX .

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

Esempio

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 una funzione di callback EvtSerCxWaitmask denominata MyEvtSerCxWaitmask, è innanzitutto necessario fornire una dichiarazione di funzione richiesta da 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 tipi di ruolo per i driver KMDF.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 8.
Piattaforma di destinazione Desktop
Intestazione sercx.h
IRQL Chiamato in IRQL <= DISPATCH_LEVEL

Vedi anche

EvtDriverDeviceAdd

IOCTL_SERIAL_SET_WAIT_MASK

IOCTL_SERIAL_WAIT_ON_MASK

SERIAL_EV_XXX

SerCxGetWaitMask

SerCxInitialize