Condividi tramite


EVT_SERCX_CONTROL funzione di callback (sercx.h)

La funzione di callback degli eventi EvtSerCxControl 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 di 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 ulteriori informazioni, vedere la sezione Osservazioni successiva.

Commenti

Il driver del controller seriale è necessario per implementare questa funzione di callback. SerCx chiama questa funzione per distribuire una richiesta di controllo di I/O al driver controller per l'elaborazione. Prima di restituire questa funzione, è necessario 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 controller prima che questa funzione modifica 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_STATS IOCTL_SERIAL_CLR_DTR IOCTL_SERIAL_CLR_RTSIOCTL_SERIAL_GET_BAUD_RATEIOCTL_SERIAL_GET_CHARS IOCTL_SERIAL_GET_COMMSTATUS IOCTL_SERIAL_GET_DTRRTS IOCTL_SERIAL_GET_HANDFLOW IOCTL_SERIAL_IMMEDIATE_CHAR IOCTL_SERIAL_GET_HANDFLOW IOCTL_SERIAL_GET_LINE_CONTROL IOCTL_SERIAL_GET_MODEM_CONTROL IOCTL_SERIAL_GET_MODEM_CONTROL IOCTL_SERIAL_GET_MODEMSTATUS IOCTL_SERIAL_GET_PROPERTIESIOCTL_SERIAL_GET_STATSIOCTL_SERIAL_LSRMST_INSERTIOCTL_SERIAL_SET_BAUD_RATE IOCTL_SERIAL_SET_BREAK_OFFIOCTL_SERIAL_SET_BREAK_ON IOCTL_SERIAL_SET_CHARS IOCTL_SERIAL_SET_DTR IOCTL_SERIAL_SET_FIFO_CONTROL IOCTL_SERIAL_SET_HANDFLOW IOCTL_SERIAL_SET_LINE_CONTROL IOCTL_SERIAL_SET_MODEM_CONTROL IOCTL_SERIAL_SET_RTS IOCTL_ SERIAL_SET_XOFFIOCTL_SERIAL_SET_XON IOCTL_SERIAL_XOFF_COUNTER Per registrare una funzione di callback EvtSerCxControl, 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_CONTROL(
    __in WDFREQUEST Request,
    __in size_t OutputBufferLength,
    __in size_t InputBufferLength,
    __in ULONG IoControlCode
    );

Per definire una funzione di callback EvtSerCxControl denominata MyEvtSerCxControl, è innanzitutto necessario fornire una dichiarazione di funzione richiesta da Static Driver Verifier (SDV) e altri strumenti di verifica, 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 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

SerCxInitialize