EVT_SERCX_RECEIVE função de retorno de chamada (sercx.h)
A função de retorno de chamada de evento EvtSerCxReceive prepara o UART (dispositivo do 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 da 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 o PIO ou o DMA para executar a transferência de dados.
Valor de retorno
A função EvtSerCxReceive retornará STATUS_SUCCESS se a chamada for bem-sucedida. Caso contrário, ele retornará um código de status de erro apropriado.
Observações
A extensão da 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 pode 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 de água alta do FIFO estiver habilitada, a rotina de 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 EvtDriverDeviceAdd retorno de chamada.
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 denominada MyEvtSerCxReceive
, primeiro você deve fornecer uma declaração de função que SDV (Static Driver Verifier) e outras ferramentas de verificação, 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 para drivers KMDF.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Disponível a partir do Windows 8. |
da Plataforma de Destino |
Área de trabalho |
cabeçalho | sercx.h |
IRQL | Chamado no <DO IRQL = DISPATCH_LEVEL |