Compartilhar via


estrutura NET_ADAPTER_RX_CAPABILITIES (netadapter.h)

A estrutura NET_ADAPTER_RX_CAPABILITIES descreve os recursos de recebimento de um adaptador de rede.

Sintaxe

typedef struct _NET_ADAPTER_RX_CAPABILITIES {
  ULONG                                  Size;
  NET_RX_FRAGMENT_BUFFER_ALLOCATION_MODE AllocationMode;
  NET_RX_FRAGMENT_BUFFER_ATTACHMENT_MODE AttachmentMode;
  UINT32                                 FragmentRingNumberOfElementsHint;
  SIZE_T                                 MaximumFrameSize;
  SIZE_T                                 MaximumNumberOfQueues;
  union {
    struct {
      PFN_NET_ADAPTER_RETURN_RX_BUFFER EvtAdapterReturnRxBuffer;
    } DUMMYSTRUCTNAME;
    struct {
      NET_MEMORY_MAPPING_REQUIREMENT MappingRequirement;
      SIZE_T                         FragmentBufferAlignment;
      NET_ADAPTER_DMA_CAPABILITIES   *DmaCapabilities;
    } DUMMYSTRUCTNAME2;
  } DUMMYUNIONNAME;
} NET_ADAPTER_RX_CAPABILITIES;

Membros

Size

O tamanho dessa estrutura, em bytes.

AllocationMode

Um valor NET_RX_FRAGMENT_BUFFER_ALLOCATION_MODE que especifica como o sistema operacional deve alocar buffers de recebimento.

Os drivers UMDF devem definir esse valor como NetRxFragmentBufferAllocationModeSystem.

AttachmentMode

Um valor NET_RX_FRAGMENT_BUFFER_ATTACHMENT_MODE que especifica como o sistema operacional deve pré-anexar buffers de recebimento.

Os drivers UMDF devem definir esse valor como NetRxFragmentBufferAttachmentModeSystem.

FragmentRingNumberOfElementsHint

Uma dica que indica quantos elementos o adaptador deseja para cada buffer de anel da fila de recebimento de NET_FRAGMENT. Esse membro deve ser uma potência de 2.

MaximumFrameSize

O tamanho máximo do quadro, em bytes, que o adaptador pode receber. Esse valor deve incluir o tamanho máximo da MTU (unidade de transmissão) que o hardware dá suporte para um pacote IP, além de espaço adicional que seu driver pode precisar para metadados de pacote. Para obter mais informações, consulte o exemplo de recebimento na seção Comentários do EVT_PACKET_QUEUE_ADVANCE.

MaximumNumberOfQueues

O número máximo de filas de recebimento compatíveis com o adaptador.

DUMMYUNIONNAME

Uma união que contém os seguintes membros:

DUMMYUNIONNAME.DUMMYSTRUCTNAME

Um struct que contém o seguinte membro:

DUMMYUNIONNAME.DUMMYSTRUCTNAME.EvtAdapterReturnRxBuffer

Um ponteiro para a função de retorno de chamada EVT_NET_ADAPTER_RETURN_RX_BUFFER do driver. Esse membro será necessário se o membro AllocationMode estiver definido como NetRxFragmentBufferAllocationModeDriver para o sistema operacional invocar depois que o sistema for concluído com o buffer de recebimento.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2

Um struct que contém os seguintes membros:

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.MappingRequirement

Um valor NET_MEMORY_MAPPING_REQUIREMENT que especifica como o sistema operacional deve mapear os buffers de dados de recebimento.

Os drivers UMDF devem definir MappingRequirement como NetMemoryMappingRequirementNone.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.FragmentBufferAlignment

O alinhamento mínimo para fragmentos de pacote. Esse membro deve ser uma potência de 2.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.DmaCapabilities

Um ponteiro para uma estrutura de NET_DMA_CAPABILITIES alocada e inicializada pelo driver que descreve os recursos de DMA do adaptador no caminho de recebimento. Esse membro será ignorado por NetAdapterCx se MappingRequirement não estiver definido como NetMemoryMappingRequirementDmaMapped.

UMDF NetAdapterCX não dá suporte a DmaCapabilities. Os drivers UMDF devem definir esse membro como NULL.

Comentários

Chame uma das funções NET_ADAPTER_RX_CAPABILITIES_INIT_XXX para inicializar essa estrutura. Para obter mais informações sobre cada função de inicialização, consulte os links na seção Consulte Também. Uma estrutura de NET_ADAPTER_RX_CAPABILITIES inicializada é passada como um parâmetro para NetAdapterSetDatapathCapabilities.

Normalmente, um driver de cliente executa alocação e anexo em si ou especifica que o sistema operacional execute ambos. Na maioria dos casos, recomendamos que o sistema operacional aloque e anexe buffers de recebimento.

Se o cliente especificar buffers de recebimento alocados e anexados ao driver, ele deverá fornecer uma estrutura de contexto de retorno personalizada no membro RxBufferReturnContext de cada NET_FRAGMENT durante a alocação do buffer, bem como uma função de retorno de chamada EVT_NET_ADAPTER_RETURN_RX_BUFFER nesta estrutura de NET_ADAPTER_RX_CAPABILITIES para o sistema operacional invocar depois de terminar com o buffer.

Requisitos

Requisito Valor
Versão mínima do KMDF 1,25
Versão mínima do UMDF 2.33
Cabeçalho netadapter.h (inclua netadaptercx.h)

Confira também

NET_ADAPTER_RX_CAPABILITIES_INIT_DRIVER_MANAGED

NET_ADAPTER_RX_CAPABILITIES_INIT_SYSTEM_MANAGED

NET_ADAPTER_RX_CAPABILITIES_INIT_SYSTEM_MANAGED_DMA

NetAdapterSetDatapathCapabilities