função de retorno de chamada EVT_SERCX_RECEIVE (sercx.h)
A função de retorno de chamada de evento EvtSerCxReceive prepara o UART (dispositivo de controlador serial) para fazer uma operação de leitura (recebimento).
Sintaxe
EVT_SERCX_RECEIVE EvtSercxReceive;
NTSTATUS EvtSercxReceive(
[in] WDFDEVICE Device,
[in] size_t Length
)
{...}
Parâmetros
[in] Device
Um identificador WDFDEVICE para o objeto de dispositivo de estrutura que representa o controlador serial.
[in] Length
O número de bytes a serem recebidos. O driver do controlador pode usar esse valor como uma dica para decidir se deseja usar PIO ou DMA para executar a transferência de dados.
Retornar valor
A função EvtSerCxReceive retornará STATUS_SUCCESS se a chamada for bem-sucedida. Caso contrário, ele retornará um erro apropriado status código.
Comentários
A extensão de estrutura serial (SerCx) chama essa função para configurar o hardware do controlador para receber dados. Se necessário, a função EvtSerCxReceive pode habilitar interrupções.
A função EvtSerCxReceive não lê necessariamente os dados de entrada do buffer FIFO de recebimento. Dependendo do hardware do controlador serial ou do tipo de transferência, essa função pode configurar uma operação de DMA para ler os dados ou agendar uma função DPC de transmissão/recebimento para ler os dados. O driver do controlador serial implementa essa função DPC para receber dados do controlador e transmitir dados para o controlador serial. Durante o DPC, a função DPC determina se os dados estão disponíveis para serem recebidos e, nesse caso, usa PIO para ler os dados do FIFO de recebimento no controlador serial.
Se o FIFO de recebimento no controlador serial estiver vazio ou quase vazio, mas a interrupção de marca d'água alta do FIFO estiver habilitada, a rotina DPC poderá simplesmente retornar. Posteriormente, o ISR do driver do controlador pode agendar a rotina de DPC a ser executada, e essa rotina pode ler mais dados do FIFO de recebimento.
Para registrar uma função de retorno de chamada EvtSerCxReceive , 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_RECEIVE(
__in WDFDEVICE Device
);
Para definir uma função de retorno de chamada EvtSerCxReceive chamada MyEvtSerCxReceive
, 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_RECEIVE MyEvtSerCxReceive;
Em seguida, implemente a função de retorno de chamada da seguinte maneira.
NTSTATUS
MyEvtSerCxReceive(
__in WDFDEVICE Device
)
{ ... }
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 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