função de retorno de chamada EVT_SERCX_TRANSMIT (sercx.h)
A função de retorno de chamada de evento EvtSerCxTransmit prepara o UART (dispositivo de controlador serial) para fazer uma operação de gravação (transmissão).
Sintaxe
EVT_SERCX_TRANSMIT EvtSercxTransmit;
NTSTATUS EvtSercxTransmit(
[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 transmitidos. 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 EvtSerCxTransmit 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 serial para transmitir dados. Se necessário, a função EvtSerCxTransmit pode habilitar interrupções.
A função EvtSerCxTransmit não grava necessariamente os dados de saída no buffer FIFO de transmissão. Dependendo do hardware do controlador serial ou do tipo de transferência, essa função pode configurar uma operação de DMA para gravar os dados ou agendar uma função DPC de transmissão/recebimento para gravar os dados. O driver do controlador serial implementa essa função DPC para transmitir dados para o controlador serial e receber dados do controlador. Durante o DPC, a função DPC determina se os dados estão disponíveis para serem transmitidos e, nesse caso, usa PIO para transferir os dados para o FIFO de transmissão no controlador serial.
Se o FIFO de transmissão no controlador serial estiver cheio ou quase cheio, mas a interrupção de marca d'água baixa do FIFO estiver habilitada, a função EvtSerCxTransmit poderá simplesmente retornar. Posteriormente, o ISR do driver do controlador pode agendar a função DPC de transmissão/recebimento a ser executada e essa função pode transferir mais dados de saída para o FIFO de transmissão.
Para registrar uma função de retorno de chamada EvtSerCxTransmit , 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_TRANSMIT(
__in WDFDEVICE Device
);
Para definir uma função de retorno de chamada EvtSerCxTransmit chamada MyEvtSerCxTransmit
, 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_TRANSMIT MyEvtSerCxTransmit;
Em seguida, implemente a função de retorno de chamada da seguinte maneira.
NTSTATUS
MyEvtSerCxTransmit(
__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 |