Compartilhar via


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

EvtDevicePrepareHardware

EvtSerCx2SystemDmaReceiveCancelNewDataNotification

EvtSerCx2SystemDmaReceiveCleanupTransaction

EvtSerCx2SystemDmaReceiveConfigureDmaChannel

EvtSerCx2SystemDmaReceiveEnableNewDataNotification

EvtSerCx2SystemDmaReceiveInitializeTransaction

IRP_MJ_READ

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION

SerCx2SystemDmaReceiveCreate

WdfDmaEnablerSetMaximumScatterGatherElements