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 da 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á o PIO (E/S) programado para a transação.

DmaAlignment

Requisito de alinhamento de DMA. Especifica como o endereço inicial de uma transferência em uma transação de recebimento de DMA do sistema deve ser alinhado na memória. Defina esse membro como a constante de 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 para 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, Width32Bitse Width64Bits.

DeviceAddress

O endereço traduzido do qual o controlador de DMA é transferido. Para obter mais informações, consulte a descrição do membro do DeviceAddress no WDF_DMA_SYSTEM_PROFILE_CONFIG.

DmaDescriptor

Um ponteiro para a estrutura de 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 EvtDevicePrepareHardware retorno de chamada 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 verdadeiro para indicar que as solicitações de leitura devem usar transações de recebimento de DMA do sistema exclusivamente. Defina como FALSE para indicar que as solicitações de leitura podem usar uma combinação de transações de recebimento de DMA do sistema e transações de recebimento de PIO.

Defina esse membro como VERDADEIRO somente se a unidade de transferência mínima para transações de recebimento de DMA do sistema 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 bytes na memória.

Se Exclusivo for TRUE, os membrosMinimumTransferUnitOverride, DmaAlignmente MinimumTransactionLength deverão ser zero.

Independentemente do valor desse membro, as transações de recebimento de PIO são usadas para salvar quaisquer 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 o EvtSerCx2SystemDmaReceiveInitializeTransaction implementado pelo driver função de retorno de chamada de evento. Esse membro é opcional e pode ser definido como NULL para indicar que o driver não implementa a função.

EvtSerCx2SystemDmaReceiveCleanupTransaction

Um ponteiro para o EvtSerCx2SystemDmaReceiveCleanupTransaction implementado pelo driver função de retorno de chamada de evento. Esse membro é opcional e pode ser definido como NULL para indicar que o driver não implementa a função.

EvtSerCx2SystemDmaReceiveConfigureDmaChannel

Um ponteiro para o EvtSerCx2SystemDmaReceiveConfigureDmaChannel implementado pelo driver função de retorno de chamada de evento. Esse membro é opcional e pode ser definido como NULL para indicar que o driver não implementa a função.

EvtSerCx2SystemDmaReceiveEnableNewDataNotification

Um ponteiro para o EvtSerCx2SystemDmaReceiveEnableNewDataNotification implementado pelo driver função de retorno de chamada de evento. 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 o EvtSerCx2SystemDmaReceiveCancelNewDataNotification implementado pelo driver função de retorno de chamada de evento. 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.

Observações

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
de cliente com suporte mínimo Suporte para começar com Windows 8.1.
cabeçalho sercx.h

Consulte 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