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
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 |