estrutura SERCX2_SYSTEM_DMA_RECEIVE_CONFIG (sercx.h)
A estrutura SERCX2_SYSTEM_DMA_RECEIVE_CONFIG contém informações que a versão 2 da extensão de estrutura serial (SerCx2) usa para configurar um novo objeto system-DMA-receive.
Sintaxe
typedef struct _SERCX2_SYSTEM_DMA_RECEIVE_CONFIG {
ULONG Size;
size_t MaximumTransferLength;
size_t MinimumTransactionLength;
ULONG DmaAlignment;
ULONG MaximumScatterGatherFragments;
DMA_WIDTH DmaWidth;
PHYSICAL_ADDRESS DeviceAddress;
PCM_PARTIAL_RESOURCE_DESCRIPTOR DmaDescriptor;
ULONG MinimumTransferUnitOverride;
BOOLEAN Exclusive;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_INITIALIZE_TRANSACTION EvtSerCx2SystemDmaReceiveInitializeTransaction;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CLEANUP_TRANSACTION EvtSerCx2SystemDmaReceiveCleanupTransaction;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CONFIGURE_DMA_CHANNEL EvtSerCx2SystemDmaReceiveConfigureDmaChannel;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION EvtSerCx2SystemDmaReceiveEnableNewDataNotification;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CANCEL_NEW_DATA_NOTIFICATION EvtSerCx2SystemDmaReceiveCancelNewDataNotification;
} SERCX2_SYSTEM_DMA_RECEIVE_CONFIG, *PSERCX2_SYSTEM_DMA_RECEIVE_CONFIG;
Membros
Size
O tamanho, em bytes, dessa estrutura. O método SerCx2SystemDmaReceiveCreate usa esse membro para determinar qual versão da estrutura o chamador está usando. O tamanho dessa estrutura pode mudar em versões futuras do arquivo de cabeçalho Sercx.h.
MaximumTransferLength
O tamanho máximo padrão, em bytes, que o controlador serial pode manipular em uma única transferência de DMA do sistema. Se o tamanho do buffer na solicitação de leitura (IRP_MJ_READ) for maior que esse tamanho máximo, o SerCx2 usará várias transferências de DMA para lidar com a solicitação e limitará cada transferência ao comprimento máximo.
MinimumTransactionLength
O comprimento mínimo, em bytes, de uma transação system-DMA-receive. Se o comprimento do buffer em uma solicitação de leitura for menor que esse comprimento mínimo, o SerCx2 usará E/S (PIO) programada para a transação.
DmaAlignment
Requisito de alinhamento de DMA. Especifica como o endereço inicial de uma transferência em uma transação system-DMA-receive deve ser alinhado na memória. Defina esse membro como a constante FILE_XXX_ALIGNMENT apropriada no arquivo de cabeçalho Wdm.h. Por exemplo, FILE_WORD_ALIGNMENT indica que o endereço DMA inicial deve ser alinhado ao limite de dois bytes na memória, FILE_LONG_ALIGNMENT indica que o endereço deve ser alinhado a um limite de quatro bytes e assim por diante. O SerCx2 não dá suporte a FILE_BYTE_ALIGNMENT. A MTU (unidade de transferência mínima) do adaptador DMA do sistema deve ser maior ou igual ao alinhamento necessário. Por exemplo, se a MTU for de quatro bytes, DmaAlignment deverá ser pelo menos FILE_LONG_ALIGNMENT.
MaximumScatterGatherFragments
O número máximo de fragmentos de buffer que podem ser especificados na lista de dispersão/coleta de uma transferência de DMA em uma transação de recebimento de DMA do sistema.
DmaWidth
A largura do registro de dados no endereço especificado por DeviceAddress. Os valores possíveis são Width8Bits, Width16Bits, Width32Bits e Width64Bits.
DeviceAddress
O endereço traduzido do qual o controlador de DMA é transferido. Para obter mais informações, consulte a descrição do membro DeviceAddress no WDF_DMA_SYSTEM_PROFILE_CONFIG.
DmaDescriptor
Um ponteiro para a estrutura CM_PARTIAL_RESOURCE_DESCRIPTOR que descreve o recurso DMA do sistema a ser usado para receber transações. O driver do controlador serial obtém essa estrutura da lista de recursos brutos que recebe no retorno de chamada EvtDevicePrepareHardware que inicia o controlador serial.
MinimumTransferUnitOverride
Um valor de substituição a ser usado no lugar da unidade de transferência mínima padrão. O número de bytes especificados por um elemento em uma lista de dispersão/coleta deve ser um número inteiro múltiplo da unidade de transferência mínima. Um valor zero indica que a unidade de transferência mínima padrão deve ser usada. Para obter mais informações, consulte a descrição do membro MinimumTransferUnit no DMA_ADAPTER_INFO_V1.
Exclusive
Se deve usar transações de recebimento de DMA do sistema exclusivamente para lidar com solicitações de gravação (IRP_MJ_READ). Defina como TRUE para indicar que as solicitações de leitura devem usar transações system-DMA-receive exclusivamente. Defina como FALSE para indicar que as solicitações de leitura podem usar uma combinação de transações system-DMA-receive e transações de recebimento de PIO.
Defina esse membro como TRUE somente se a unidade de transferência mínima para transações system-DMA-receive for um byte, o comprimento mínimo da transação for um byte e o buffer de leitura da transação puder iniciar em qualquer limite de byte na memória.
Se Exclusive for TRUE, os membros MinimumTransferUnitOverride, DmaAlignment e MinimumTransactionLength deverão ser zero.
Independentemente do valor desse membro, as transações de recebimento de PIO são usadas para salvar todos os dados não lidos no FIFO de recebimento antes que o controlador serial saia do estado de energia do dispositivo D0 para entrar em um estado de baixa potência.
EvtSerCx2SystemDmaReceiveInitializeTransaction
Um ponteiro para a função de retorno de chamada de evento EvtSerCx2SystemDmaReceiveInitializeTransaction implementada pelo driver. Esse membro é opcional e pode ser definido como NULL para indicar que o driver não implementa a função.
EvtSerCx2SystemDmaReceiveCleanupTransaction
Um ponteiro para a função de retorno de chamada de evento EvtSerCx2SystemDmaReceiveCleanupTransaction implementada pelo driver. Esse membro é opcional e pode ser definido como NULL para indicar que o driver não implementa a função.
EvtSerCx2SystemDmaReceiveConfigureDmaChannel
Um ponteiro para a função de retorno de chamada de evento EvtSerCx2SystemDmaReceiveConfigureDmaChannel implementada pelo driver. Esse membro é opcional e pode ser definido como NULL para indicar que o driver não implementa a função.
EvtSerCx2SystemDmaReceiveEnableNewDataNotification
Um ponteiro para a função de retorno de chamada de evento EvtSerCx2SystemDmaReceiveEnableNewDataNotification implementada pelo driver. Esse membro é opcional e pode ser definido como NULL para indicar que o driver não implementa a função. No entanto, um driver que implementa essa função também deve implementar uma função EvtSerCx2SystemDmaReceiveCancelNewDataNotification .
EvtSerCx2SystemDmaReceiveCancelNewDataNotification
Um ponteiro para a função de retorno de chamada de evento EvtSerCx2SystemDmaReceiveCancelNewDataNotification implementada pelo driver. Esse membro é opcional e pode ser definido como NULL para indicar que o driver não implementa a função. No entanto, um driver que implementa essa função também deve implementar uma função EvtSerCx2SystemDmaReceiveEnableNewDataNotification .
Comentários
O método SerCx2SystemDmaReceiveCreate aceita um ponteiro para uma estrutura SERCX2_SYSTEM_DMA_RECEIVE_CONFIG como um parâmetro de entrada. Antes de chamar SerCx2SystemDmaReceiveCreate, chame a função SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT ou SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION para inicializar essa estrutura.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte a partir de Windows 8.1. |
Cabeçalho | sercx.h |
Confira também
CM_PARTIAL_RESOURCE_DESCRIPTOR
EvtSerCx2SystemDmaReceiveCancelNewDataNotification
EvtSerCx2SystemDmaReceiveCleanupTransaction
EvtSerCx2SystemDmaReceiveConfigureDmaChannel
EvtSerCx2SystemDmaReceiveEnableNewDataNotification
EvtSerCx2SystemDmaReceiveInitializeTransaction
SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT
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