Compartilhar via


estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY (ndis.h)

A estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY especifica uma matriz de portas de destino do comutador extensível do Hyper-V para um pacote. Cada elemento na matriz é formatado como uma estrutura NDIS_SWITCH_PORT_DESTINATION .

Essas informações estão contidas nos dados OOB (fora de banda) da estrutura de NET_BUFFER_LIST do pacote.

Sintaxe

typedef struct _NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY {
  NDIS_OBJECT_HEADER Header;
  UINT32             ElementSize;
  UINT32             NumElements;
  UINT32             NumDestinations;
  PVOID              FirstElement;
} NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY, *PNDIS_SWITCH_FORWARDING_DESTINATION_ARRAY;

Membros

Header

O tipo, a revisão e o tamanho da estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Esse membro é formatado como uma estrutura NDIS_OBJECT_HEADER .

O membro Type de Header deve ser definido como NDIS_OBJECT_TYPE_DEFAULT. Para especificar a versão da estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY , o membro Revision de Header deve ser definido com o seguinte valor:

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY_REVISION_1

Versão original do NDIS 6.30 e posterior.

Defina o membro Size como NDIS_SIZEOF_NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY_REVISION_1.

ElementSize

Um valor ULONG que especifica o tamanho, em bytes, de cada elemento NDIS_SWITCH_PORT_DESTINATION que segue a estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY .

NumElements

Um valor ULONG que especifica o número total de elementos NDIS_SWITCH_PORT_DESTINATION na estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY .

O valor do membro NumElements especifica o número de elementos de NDIS_SWITCH_PORT_DESTINATION usados no momento (conforme especificado pelo membro NumDestinations ) mais o número de elementos disponíveis para novas portas de destino. O número de elementos NDIS_SWITCH_PORT_DESTINATION não utilizados na estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY é calculado por (NumElements - NumDestinations).

NumDestinations

Um valor ULONG que especifica o número de elementos NDIS_SWITCH_PORT_DESTINATION na estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY que especificam destinos de porta.

Nota Se NumElements estiver definido como zero, esse membro será ignorado.
 

FirstElement

Um ponteiro para o primeiro elemento NDIS_SWITCH_PORT_DESTINATION no buffer que contém a estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY e todos os seus elementos.

Comentários

A extensão de comutador extensível pode fazer o seguinte com as portas de destino na estrutura NET_BUFFER_LIST de um pacote:

  • Consulte as portas de destino atuais na opção extensível para a qual o pacote será encaminhado.

    A extensão de comutador extensível chama a função GetNetBufferListDestinations para obter a matriz de destinos de porta para um pacote. GetNetBufferListDestinations retorna um ponteiro para a estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY no parâmetro Destinations .

    Para obter mais informações, consulte Consultando dados de porta de destino de comutador extensível de um pacote.

  • Adicione ou modifique as portas de destino para o pacote.

    Depois de consultar as portas de destino atuais para o pacote, a extensão de comutador extensível pode fazer o seguinte:

    • Uma extensão de encaminhamento pode adicionar novas portas de destino à estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY .
    • Uma extensão de filtragem ou encaminhamento pode modificar os dados dentro de uma estrutura NDIS_SWITCH_PORT_DESTINATION para uma porta de destino.
      Nota Uma extensão de filtragem só pode alterar o membro IsExcluded dessa estrutura. Uma extensão de encaminhamento também pode alterar os membros PreserveVLAN e PreservePriority .
       
    Se a extensão adicionar ou modificar destinos de porta, ela deverá chamar UpdateNetBufferListDestinations para confirmar as alterações nas portas de destino para os dados OOB do pacote na estrutura NET_BUFFER_LIST .

    Para obter mais informações, consulte Gerenciando dados de porta de destino do comutador extensível do Hyper-V.

As extensões de comutador extensíveis podem usar a macro NDIS_SWITCH_PORT_DESTINATION_AT_ARRAY_INDEX para acessar elementos NDIS_SWITCH_PORT_DESTINATION em uma matriz NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY .

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.30 e posterior.
Cabeçalho ndis.h (inclua Ndis.h)

Confira também

Adicionando dados de porta de destino do comutador extensível a um pacote

Excluindo a entrega de pacotes para portas de destino comutador extensível

Extensões de encaminhamento

GetNetBufferListDestinations

Encaminhamento híbrido

NDIS_OBJECT_HEADER

NDIS_SWITCH_PORT_DESTINATION

NDIS_SWITCH_PORT_DESTINATION_AT_ARRAY_INDEX

NET_BUFFER_LIST

Visão geral do comutador extensível do Hyper-V

UpdateNetBufferListDestinations