Compartilhar via


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

EvtDriverDeviceAdd

SerCxInitialize

WdfDpcEnqueue