EVT_SERCX_TRANSMIT função de retorno de chamada (sercx.h)
A função de retorno de chamada de evento EvtSerCxTransmit prepara o UART (dispositivo do 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 da 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 o PIO ou o DMA para executar a transferência de dados.
Valor de retorno
A função EvtSerCxTransmit retorna 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 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 pode 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 para 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 de á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 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_TRANSMIT(
__in WDFDEVICE Device
);
Para definir uma função de retorno de chamada EvtSerCxTransmit denominada MyEvtSerCxTransmit
, primeiro você deve fornecer uma declaração de função que SDV (Static Driver Verifier) 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 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 |