união NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO (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ível do 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 em uma estrutura NET_BUFFER_LIST . Para obter mais informações, consulte a seção Comentários.
SourcePortId
O identificador da porta do 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 for definido como TRUE, o pacote será um pacote NVGRE e o componente HNV (Virtualização de Rede Hyper-V) do comutador extensível do Hyper-V encaminhará esse pacote. Para obter mais informações, consulte 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 TRUE, todos os dados do pacote serão provenientes 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 de 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 pai e filho do 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, marcar 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 está armazenada em cache. Nesse caso, consulte o campo SafePacketDataSize para saber quantos bytes são armazenados em cache.
Reserved2
Esse membro é reservado para uso futuro pelo NDIS.
Comentários
As extensões de comutador 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 NET_BUFFER_LIST .
O membro NumAvailableDestinations 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 do 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 . A extensão de comutador extensível chama 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 TRUE, 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 Encaminhamento híbrido.
O sinalizador IsPacketDataUncached pode ajudar as extensões de comutador 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 especificará quantos bytes serão armazenados em cache.
SafePacketDataSize especifica o tamanho dos dados do pacote localizados na memória local ou confiável no sistema operacional pai da partição pai do 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 NET_BUFFER_LIST do pacote alocando uma estrutura de 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 a 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 como TRUE.
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
Encaminhando pacotes para portas de comutador extensível do Hyper-V
Encaminhando pacotes para adaptadores de rede física
NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de