EVT_SERCX_CONTROL função de retorno de chamada (sercx.h)
A função de retorno de chamada de evento EvtSerCxControl manipula uma solicitação de controle de E/S que tem um IOCTL (código de controle de E/S) compatível com a extensão de estrutura serial (SerCx).
Sintaxe
EVT_SERCX_CONTROL EvtSercxControl;
NTSTATUS EvtSercxControl(
[in] WDFDEVICE Device,
[in] WDFREQUEST Request,
[in] size_t OutputBufferLength,
[in] size_t InputBufferLength,
[in] ULONG IoControlCode
)
{...}
Parâmetros
[in] Device
Um identificador WDFDEVICE para o objeto de dispositivo de estrutura que representa o controlador serial.
[in] Request
Um identificador WDFREQUEST para o objeto de solicitação de estrutura que representa a solicitação de controle de E/S.
[in] OutputBufferLength
Especifica o comprimento, em bytes, do buffer de saída para a solicitação de controle de E/S especificada pelo parâmetro Request .
[in] InputBufferLength
Especifica o comprimento, em bytes, do buffer de entrada para a solicitação de controle de E/S especificada pelo parâmetro Request .
[in] IoControlCode
Especifica o IOCTL da solicitação de controle de E/S especificada pelo parâmetro Request .
Retornar valor
A função EvtSerCxControl retornará STATUS_SUCCESS se a chamada for bem-sucedida. Caso contrário, ele retornará um erro apropriado status código. Para obter mais informações, consulte a seção Comentários a seguir.
Comentários
O driver do controlador serial é necessário para implementar essa função de retorno de chamada. O SerCx chama essa função para entregar uma solicitação de controle de E/S ao driver do controlador para processamento. Antes que essa função retorne, ela deve concluir a solicitação executando a operação solicitada ou retornando um erro status. Um driver que não implementa o suporte para uma solicitação específica deve retornar o erro STATUS_NOT_IMPLEMENTED status para essa solicitação.
Normalmente, a função EvtSerCxControl deve ser sincronizada com o ISR do driver do controlador antes que essa função altere as configurações nos registros de hardware do controlador serial.
O valor retornado da função EvtSerCxControl deve corresponder ao valor status que essa função grava no bloco status da solicitação de controle de E/S. O SerCx usa o valor retornado para acompanhar o estado do driver do controlador e o hardware do controlador serial.
Veja a seguir uma lista das IOCTLs que essa função de retorno de chamada deve estar preparada para lidar com:
IOCTL_SERIAL_CLEAR_STATSIOCTL_SERIAL_CLR_DTRIOCTL_SERIAL_CLR_RTS IOCTL_SERIAL_GET_BAUD_RATEIOCTL_SERIAL_GET_CHARS IOCTL_SERIAL_GET_COMMSTATUS IOCTL_SERIAL_GET_DTRRTSIOCTL_SERIAL_GET_DTRRTSIOCTL_SERIAL_GET_HANDFLOWIOCTL_SERIAL_IMMEDIATE_CHARIOCTL_SERIAL_GET_LINE_CONTROLIOCTL_SERIAL_GET_MODEM_CONTROLIOCTL_SERIAL_GET_MODEMSTATUSIOCTL_SERIAL_GET_PROPERTIES IOCTL_SERIAL_GET_PROPERTIESIOCTL_SERIAL_GET_STATSIOCTL_SERIAL_LSRMST_INSERTIOCTL_SERIAL_SET_BAUD_RATE IOCTL_SERIAL_SET_BREAK_OFFIOCTL_SERIAL_SET_BREAK_ONIOCTL_SERIAL_SET_CHARS IOCTL_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 Para registrar uma função de retorno de chamada EvtSerCxControl, o driver do controlador chama o método SerCxInitialize durante o retorno de chamada EvtDriverDeviceAdd.
Exemplos
O tipo de função para esse retorno de chamada é declarado em Sercx.h, da seguinte maneira.
typedef NTSTATUS
EVT_SERCX_CONTROL(
__in WDFREQUEST Request,
__in size_t OutputBufferLength,
__in size_t InputBufferLength,
__in ULONG IoControlCode
);
Para definir uma função de retorno de chamada EvtSerCxControl chamada MyEvtSerCxControl
, primeiro você deve fornecer uma declaração de função que o SDV ( Verificador de Driver Estático ) e outras ferramentas de verificação exigem, da seguinte maneira.
EVT_SERCX_CONTROL MyEvtSerCxControl;
Em seguida, implemente a função de retorno de chamada da seguinte maneira.
NTSTATUS
MyEvtSerCxControl(
__in WDFREQUEST Request,
__in size_t OutputBufferLength,
__in size_t InputBufferLength,
__in ULONG IoControlCode
)
{ ... }
Para obter mais informações sobre os requisitos de SDV para declarações de função, consulte Declarando funções usando tipos de função para drivers KMDF.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 8. |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | sercx.h |
IRQL | Chamado em IRQL <= DISPATCH_LEVEL |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de