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