Compartilhar via


NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO união (ndis.h)

A união NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO especifica as informações para encaminhar um pacote para uma ou mais portas de comutador extensíveis Hyper-V.

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

Sintaxe

typedef union _NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO {
  UINT64 AsUINT64;
  struct {
    UINT32 NumAvailableDestinations : 16;
    UINT32 SourcePortId : 16;
    UINT32 SourceNicIndex : 8;
    UINT32 NativeForwardingRequired : 1;
#if ...
    UINT32 Reserved1 : 1;
#else
    UINT32 Reserved1 : 2;
#endif
    UINT32 IsPacketDataSafe : 1;
    UINT32 SafePacketDataSize : 12;
    UINT32 IsPacketDataUncached : 1;
    UINT32 IsSafePacketDataUncached : 1;
    UINT32 Reserved2 : 7;
  };
} NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO, *PNDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO;

Membros

AsUINT64

O valor NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO completo de 64 bits.

NumAvailableDestinations

Um valor que especifica o número de elementos de portas de destino de comutador extensível não utilizados dentro de uma estrutura de NET_BUFFER_LIST. Para obter mais informações, consulte a seção Comentários.

SourcePortId

O identificador da porta de comutador extensível de origem da qual o NET_BUFFER_LIST se originou.

SourceNicIndex

Um valor UINT32 que especifica o índice do adaptador de rede de origem que está conectado à porta de comutador extensível especificada pelo membro SourcePortId.

Para obter mais informações sobre esse valor de índice, consulte Valores de Índice do Adaptador de Rede.

NativeForwardingRequired

Se esse membro estiver definido como VERDADEIRO, o pacote será um pacote NVGRE e o componente HNV (Virtualização de Rede) Hyper-V do comutador extensível Hyper-V encaminhará esse pacote. Para obter mais informações, consulte de Encaminhamento Híbrido.

Esse sinalizador não deve ser gravado por nenhuma extensão.

Observação Esse sinalizador só está disponível no NDIS 6.40 e posterior.

Reserved1

Esse membro é reservado para uso futuro pelo NDIS.

Esse membro é reservado para uso futuro pelo NDIS.

IsPacketDataSafe

Se esse membro estiver definido como VERDADEIRO, todos os dados do pacote virão da memória de host confiável.

SafePacketDataSize

Um valor que especifica o número de bytes consecutivos nos dados do pacote localizados na memória do host confiável. Esse valor está em unidades de bytes desde o início dos dados do pacote. O restante dos dados do pacote (se houver) após o valor SafePacketDataSize está localizado na memória compartilhada não confiável que é acessada pelas partições filho e pai Hyper-V.

Para obter mais informações, consulte a seção Comentários.

Observação Este membro será válido somente se o membro IsPacketDataSafe estiver definido como FALSE.

IsPacketDataUncached

Se esse sinalizador não estiver definido, todos os dados do pacote serão armazenados em cache. Se estiver definido, parte ou todos os dados não serão armazenados em cache. Quando definido, verifique o campo IsSafePacketDataUncached para ver se pelo menos a parte SafePacketData está armazenada em cache.

IsSafePacketDataUncached

Se o sinalizador IsPacketDataUncached estiver definido, esse campo indicará se a parte SafePacketData do pacote será armazenada em cache. Em caso afirmativo, consulte o campo SafePacketDataSize para saber quantos bytes são armazenados em cache.

Reserved2

Esse membro é reservado para uso futuro pelo NDIS.

Observações

Extensíveis extensíveis podem usar a macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL para acessar a união NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO em uma estrutura de NET_BUFFER_LIST.

O NumAvailableDestinations membro da união NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO especifica o número de elementos de porta de destino de comutador extensível não utilizados em uma estrutura de NET_BUFFER_LIST. Cada porta de destino de comutador extensível é especificada por um elemento NDIS_SWITCH_PORT_DESTINATION dentro da estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY de uma estrutura NET_BUFFER_LIST. As chamadas de extensão de comutador extensível GetNetBufferListDestinations para obter o NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY atual em uma estrutura NET_BUFFER_LIST.

O membro NativeForwardingRequired especifica se o pacote é um pacote NVGRE ou não. Se for VERDADEIRO, o pacote será um pacote NVGRE e a extensão de encaminhamento não determinará a matriz de porta de destino de encaminhamento do pacote, embora possa adicionar ou excluir portas de destino na matriz. Para obter mais informações, consulte de Encaminhamento Híbrido.

O sinalizador IsPacketDataUncached pode ajudar as extensões de comutador extensíveis a determinar se parte ou todos os dados do pacote estão armazenados em cache ou não. Se esse sinalizador estiver definido, parte ou todos os dados não serão armazenados em cache e o sinalizador IsSafePacketDataUncached informará à extensão se a parte de dados do pacote seguro está armazenada em cache. Se os dados do pacote seguro forem armazenados em cache, o membro SafePacketDataSize especifica quantos bytes são armazenados em cache.

SafePacketDataSize especifica o tamanho dos dados de pacote localizados no local ou confiáveis, memória no sistema operacional pai da partição pai Hyper-V. Essa memória não é acessível pela partição filho. Portanto, ele é considerado "seguro" contra atualizações não sincronizadas pelo sistema operacional convidado que é executado nessa partição.

Se uma extensão de comutador extensível exigir mais espaço confiável para inspecionar os dados do pacote, ela deverá seguir estas etapas:

  1. A extensão deve duplicar a estrutura de NET_BUFFER_LIST do pacote alocando uma estrutura NET_BUFFER_LIST e NET_BUFFER. Em seguida, a extensão chama NdisCopyFromNetBufferToNetBuffer para duplicar a estrutura de NET_BUFFER do pacote. Se essa função for concluída com êxito, os dados do pacote serão copiados para memória confiável.
  2. A extensão deve chamar CopyNetBufferListInfo para copiar os dados OOB do pacote para o pacote duplicado.
  3. Depois que o pacote original tiver sido duplicado, a extensão deverá obter a união NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO no pacote duplicado usando a macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL. A extensão deve definir o membro IsPacketDataSafe para TRUE.
Para obter mais informações sobre como duplicar pacotes na interface de comutador extensível, consulte de tráfego de pacotes de origem.

Requisitos

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

Consulte também

de extensões de encaminhamento de

encaminhar pacotes para Hyper-V portas de comutador extensíveis

encaminhando pacotes para adaptadores de rede física

GetNetBufferListDestinations

de Encaminhamento Híbrido

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER_LIST

NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL

Visão geral da do Comutador Extensível Hyper-V