Condividi tramite


EVT_SERCX_CONTROL funzione di callback (sercx.h)

La EvtSerCxControl funzione di callback degli eventi gestisce una richiesta di controllo I/O con un codice di controllo I/O (IOCTL) supportato dall'estensione del framework seriale (SerCx).

Sintassi

EVT_SERCX_CONTROL EvtSercxControl;

NTSTATUS EvtSercxControl(
  [in] WDFDEVICE Device,
  [in] WDFREQUEST Request,
  [in] size_t OutputBufferLength,
  [in] size_t InputBufferLength,
  [in] ULONG IoControlCode
)
{...}

Parametri

[in] Device

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

[in] Request

Handle WDFREQUEST per l'oggetto richiesta framework che rappresenta la richiesta di controllo I/O.

[in] OutputBufferLength

Specifica la lunghezza, in byte, del buffer di output per la richiesta di controllo I/O specificata dal parametro Request .

[in] InputBufferLength

Specifica la lunghezza, in byte, del buffer di input per la richiesta di controllo I/O specificata dal parametro Request .

[in] IoControlCode

Specifica l'IOCTL dalla richiesta di controllo I/O specificata dal parametro request .

Valore restituito

La funzione EvtSerCxControl restituisce STATUS_SUCCESS se la chiamata ha esito positivo. In caso contrario, restituisce un codice di stato di errore appropriato. Per altre informazioni, vedere la sezione Osservazioni seguente.

Osservazioni

Il driver del controller seriale è necessario per implementare questa funzione di callback. SerCx chiama questa funzione per distribuire una richiesta di controllo I/O al driver controller per l'elaborazione. Prima che questa funzione venga restituita, deve completare la richiesta eseguendo l'operazione richiesta o restituendo uno stato di errore. Un driver che non implementa il supporto per una determinata richiesta deve restituire lo stato di errore STATUS_NOT_IMPLEMENTED per questa richiesta.

In genere, la funzione EvtSerCxControl deve essere sincronizzata con l'ISR del driver del controller prima che questa funzione cambi le impostazioni nei registri hardware del controller seriale.

Il valore restituito della funzione EvtSerCxControl deve corrispondere al valore di stato scritto da questa funzione nel blocco di stato della richiesta di controllo I/O. SerCx usa il valore restituito per tenere traccia dello stato del driver controller e dell'hardware del controller seriale.

Di seguito è riportato un elenco di IOCTLs che questa funzione di callback deve essere preparata per gestire:

IOCTL_SERIAL_CLEAR_STATSIOCTL_SERIAL_CLR_DTRIOCTL_SERIAL_CLR_RTSIOCTL_SERIAL_GET_BAUD_RATEIOCTL_SERIAL_GET_CHARSIOCTL_SERIAL_GET_COMMSTATUSIOCTL_SERIAL_GET_DTRRTSIOCTL_SERIAL_GET_HANDFLOWIOCTL_SERIAL_IMMEDIATE_CHARIOCTL_SERIAL_GET_LINE_CONTROLIOCTL_SERIAL_GET_MODEM_CONTROLIOCTL_SERIAL_GET_MODEMSTATUSIOCTL_SERIAL_GET_PROPERTIESIOCTL_SERIAL_GET_STATSIOCTL_SERIAL_LSRMST_INSERTIOCTL_SERIAL_SET_BAUD_RATEIOCTL_SERIAL_SET_BREAK_OFFIOCTL_SERIAL_SET_BREAK_ONIOCTL_SERIAL_SET_CHARSIOCTL_SERIAL_SET_DTRIOCTL_SERIAL_SET_FIFO_CONTROLIOCTL_SERIAL_SET_HANDFLOWIOCTL_SERIAL_SET_LINE_CONTROLIOCTL_SERIAL_SET_ MODEM_CONTROLIOCTL_SERIAL_SET_RTSIOCTL_SERIAL_SET_XOFFIOCTL_SERIAL_SET_XONIOCTL_SERIAL_XOFF_COUNTER Per registrare una funzione di callback EvtSerCxControl, 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_CONTROL(
    __in WDFREQUEST Request,
    __in size_t OutputBufferLength,
    __in size_t InputBufferLength,
    __in ULONG IoControlCode
    );

Per definire un EvtSerCxControl funzione di callback denominata MyEvtSerCxControl, è prima necessario specificare una dichiarazione di funzione che (SDV) del driver statico e altri strumenti di verifica richiesti, come indicato di seguito.

EVT_SERCX_CONTROL MyEvtSerCxControl;

Implementare quindi la funzione di callback come indicato di seguito.

NTSTATUS
  MyEvtSerCxControl(
    __in WDFREQUEST Request,
    __in size_t OutputBufferLength,
    __in size_t InputBufferLength,
    __in ULONG IoControlCode
    )
{ ... }

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

SerCxInitialize