Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.
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.
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:
- 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.
- A extensão deve chamar CopyNetBufferListInfo para copiar os dados OOB do pacote para o pacote duplicado.
- 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.
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
NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY
NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL
Visão geral da do Comutador Extensível Hyper-V