Tipos de dados de contexto de encaminhamento extensível do Hyper-V
A estrutura NET_BUFFER_LIST para cada pacote que atravessa o caminho de dados de comutador extensível do Hyper-V contém dados OOB (fora de banda). Esses dados especificam a porta de origem de onde o pacote se originou, bem como uma ou mais portas de destino para entrega de pacotes. Esses dados OOB são conhecidos como o contexto extensível de encaminhamento de comutador.
Os seguintes tipos de dados foram declarados para acessar o contexto de encaminhamento de comutador extensível dentro da estrutura de NET_BUFFER_LIST de um pacote:
NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO
Essa é uma união de 64 bits que contém as características de encaminhamento de um pacote. Esses dados incluem os identificadores para a porta de origem e a conexão do adaptador de rede da qual o pacote se originou. Esses dados também incluem o número de elementos não utilizados que estão disponíveis na matriz de porta de destino.
A extensão de comutador extensível pode acessar esses dados usando a macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL .
NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY
Essa estrutura define a matriz de porta de destino para o pacote. Cada elemento nessa matriz é formatado como uma estrutura NDIS_SWITCH_PORT_DESTINATION .
A estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY contém membros que especificam o número atual do número total de elementos, bem como o número de elementos usados na matriz.
A extensão de comutador extensível pode obter essa matriz chamando a função GetNetBufferListDestinations . Se o driver adicionar ou modificar elementos na matriz de um pacote com várias portas de destino, ele deverá chamar a função UpdateNetBufferListDestinations . Essa função confirma essas alterações na matriz de porta de destino no contexto de encaminhamento do pacote.
Nota Para confirmar alterações em um pacote com apenas uma porta de destino, é mais eficiente para o driver chamar a função AddNetBufferListDestination .
NDIS_SWITCH_PORT_DESTINATION
Essa estrutura define uma porta de destino para o pacote. Para pacotes com uma única porta de destino, há apenas um elemento NDIS_SWITCH_PORT_DESTINATION na matriz de porta de destino. Para pacotes com várias portas de destino, há um ou mais desses elementos na matriz.
Depois que a extensão de comutador extensível tiver chamado GetNetBufferListDestinations para obter a matriz de porta de destino do pacote, ela poderá acessar elementos individuais na matriz usando a macro NDIS_SWITCH_PORT_DESTINATION_AT_ARRAY_INDEX .