Compartilhar via


NET_ADAPTER_RX_CAPABILITIES estrutura (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 para 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 um poder 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) compatível com o hardware para um pacote IP, além de espaço adicional que o 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

Um sindicato 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 para NetMemoryMappingRequirementNone.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.FragmentBufferAlignment

O alinhamento mínimo para fragmentos de pacote. Esse membro deve ser um poder 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.

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

Observações

Chame uma das funçõesXXX NET_ADAPTER_RX_CAPABILITIES_INIT_ 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 cliente executa a alocação e o 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 RxBufferReturnContext membro 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 NET_ADAPTER_RX_CAPABILITIES para o sistema operacional invocar depois que 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)

Consulte 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