Função SerCx2CustomReceiveCreate (sercx.h)
O método SerCx2CustomReceiveCreate cria um objeto de recebimento personalizado, que a versão 2 da extensão da estrutura serial (SerCx2) usa para ler dados de recebimento do controlador serial por meio de um mecanismo de transferência de dados personalizado.
Sintaxe
NTSTATUS SerCx2CustomReceiveCreate(
[in] WDFDEVICE Device,
[in] PSERCX2_CUSTOM_RECEIVE_CONFIG CustomReceiveConfig,
[in] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] SERCX2CUSTOMRECEIVE *CustomReceive
);
Parâmetros
[in] Device
Um identificador WDFDEVICE para o objeto de dispositivo de estrutura que representa o controlador serial. O driver do controlador serial criou esse objeto em sua função de retorno de chamada EvtDriverDeviceAdd . Para obter mais informações, consulte SerCx2InitializeDevice.
[in] CustomReceiveConfig
Um ponteiro para uma estrutura SERCX2_CUSTOM_RECEIVE_CONFIG . Antes de chamar esse método, o chamador deve chamar a função SERCX2_CUSTOM_RECEIVE_CONFIG_INIT para inicializar a estrutura. Essa estrutura contém ponteiros para um conjunto de rotinas de retorno de chamada de evento implementadas pelo driver do controlador serial. O SerCx2 chama essas funções para executar transações de recebimento personalizado.
[in] Attributes
Um ponteiro para uma estrutura WDF_OBJECT_ATTRIBUTES que descreve os atributos a serem atribuídos ao novo objeto de recebimento personalizado. Antes de chamar esse método, o chamador deve chamar a função WDF_OBJECT_ATTRIBUTES_INIT para inicializar a estrutura. Esse parâmetro é opcional e pode ser especificado como WDF_NO_OBJECT_ATTRIBUTES se o driver do controlador serial não precisar atribuir atributos ao objeto . Para obter mais informações, consulte Comentários.
[out] CustomReceive
Um ponteiro para um local no qual esse método grava um identificador SERCX2CUSTOMRECEIVE no objeto de recebimento personalizado recém-criado. O SerCx2 e o driver do controlador serial usam esse identificador em chamadas subsequentes para se referir a esse objeto.
Retornar valor
Esse método retornará STATUS_SUCCESS se a chamada for bem-sucedida. Os possíveis valores retornados por erro incluem os seguintes códigos de status.
Código de retorno | Descrição |
---|---|
|
Já existe um objeto de recebimento personalizado de uma chamada SerCx2CustomReceiveCreate anterior; ou existe um objeto system-DMA-receive de uma chamada SerCx2CustomReceiveCreate anterior; ou existe um objeto system-DMA-transmit de uma chamada SerCx2CustomTransmitCreate anterior; ou SerCx2PioReceiveCreate ainda não foi chamado para criar um objeto de recebimento de PIO. |
|
Um valor de parâmetro não é válido. |
|
O valortamanhoda-> configuração não é igual a sizeof(SERCX2_CUSTOM_RECEIVE_CONFIG). |
|
Recursos insuficientes estão disponíveis para criar o objeto de recebimento personalizado. |
Comentários
Esse método é chamado pelo driver do controlador serial para criar um objeto de recebimento personalizado. O SerCx2 usa esse objeto para fazer transações de recebimento personalizado, que são transações que usam um mecanismo de transferência de dados personalizado para ler dados recebidos pelo controlador serial.
Um driver de controlador serial deve chamar com êxito os métodos SerCx2InitializeDevice e SerCx2PioReceiveCreate antes de chamar SerCx2CustomReceiveCreate.
Antes de chamar SerCx2CustomReceiveCreate, o driver do controlador serial deve chamar a função SERCX2_CUSTOM_RECEIVE_CONFIG_INIT para inicializar a estrutura SERCX2_CUSTOM_RECEIVE_CONFIG apontada por CustomReceiveConfig. Essa função define os seguintes membros da estrutura como zero:
- Alinhamento
- MinimumTransactionLength
- MaximumTransactionLength
- MinimumTransferUnit
- Exclusive
- Se Alignment for zero, SerCx2 definirá o valor de alinhamento de dados como um, o que significa que o buffer de leitura pode iniciar em um limite de bytes arbitrário na memória.
- Se MinimumTransactionLength for zero, SerCx2 definirá o comprimento mínimo da transação como um byte.
- Se MaximumTransactionLength for zero, SerCx2 definirá o comprimento máximo da transação como ((ULONG)-1).
- Se MinimumTransferUnit for zero, SerCx2 definirá a unidade de transferência mínima como um byte.
- Se Exclusive for zero (FALSE), o modo exclusivo será desabilitado.
Como opção, um driver de controlador serial pode usar o parâmetro Attributes para criar um contexto para o objeto de recebimento personalizado e fornecer ponteiros para as funções EvtCleanupCallback e EvtDestroyCallback que são chamadas para preparar o objeto para exclusão. Para obter mais informações, consulte WDF_OBJECT_ATTRIBUTES.
Se o parâmetro Attributes apontar para uma estrutura WDF_OBJECT_ATTRIBUTES , o chamador não deverá substituir os valores que a função de inicialização WDF_OBJECT_ATTRIBUTES_INIT grava nos membros ParentObject, ExecutionLevel e SynchronizationScope dessa estrutura.
Para obter mais informações sobre como criar objetos de recebimento personalizados, consulte SERCX2CUSTOMRECEIVE. Para obter mais informações sobre transações de recebimento personalizado, consulte SerCx2 Custom-Receive Transactions.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 8.1. |
Plataforma de Destino | Universal |
Cabeçalho | sercx.h |
IRQL | PASSIVE_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