Compartilhar via


NDIS_SWITCH_UPDATE_NET_BUFFER_LIST_DESTINATIONS função de retorno de chamada (ndis.h)

A extensão de comutador extensível do Hyper-V chama a função UpdateNetBufferListDestinations para confirmar modificações feitas pela extensão em um pacote que contém várias portas de destino de comutador extensíveis. A função salva essas modificações no contexto de encaminhamento extensível de opção OOB (fora de banda) da estrutura de NET_BUFFER_LIST do pacote.

Sintaxe

NDIS_SWITCH_UPDATE_NET_BUFFER_LIST_DESTINATIONS NdisSwitchUpdateNetBufferListDestinations;

NDIS_STATUS NdisSwitchUpdateNetBufferListDestinations(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      UINT32 NumberOfNewDestinations,
  [in]      PNDIS_SWITCH_FORWARDING_DESTINATION_ARRAY Destinations
)
{...}

Parâmetros

[in] NdisSwitchContext

Um valor NDIS_SWITCH_CONTEXT que contém o identificador do módulo de comutador extensível ao qual a extensão do comutador extensível do Hyper-V está anexada. Quando a extensão chama NdisFGetOptionalSwitchHandlers, esse identificador é retornado por meio do parâmetro NdisSwitchContext .

[in, out] NetBufferList

Um ponteiro para uma estrutura NET_BUFFER_LIST para um único pacote.

Nota Essa estrutura deve conter um contexto de encaminhamento de comutador extensível. Se a extensão criou ou clonou o pacote, ela deverá ter alocado anteriormente essa estrutura chamando a função AllocateNetBufferListForwardingContext .
 

[in] NumberOfNewDestinations

Um valor UINT32 que especifica o número de novas portas de destino que foram adicionadas ao pacote.

[in] Destinations

Um ponteiro para uma estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Essa estrutura especifica as portas de destino do comutador extensível do pacote.

Nota A extensão recebeu essa estrutura por meio de uma chamada anterior para a função GetNetBufferListDestinations .
 

Retornar valor

Se a chamada for bem-sucedida, a função retornará NDIS_STATUS_SUCCESS. Caso contrário, ele retornará um código de erro NDIS_STATUS_Xxx definido em Ndis.h.

Comentários

A extensão de comutador extensível chama a função GetNetBufferListDestinations para obter uma matriz das portas de destino do comutador extensível para um pacote. Se a função retornar com êxito, a matriz será obtida por meio do parâmetro Destinations , que contém um ponteiro para uma estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Cada elemento nessa matriz é formatado como uma estrutura NDIS_SWITCH_PORT_DESTINATION que especifica uma porta de destino para o pacote.

Depois que a extensão obtém a estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY , a extensão pode fazer o seguinte:

Se a extensão adicionar ou modificar portas de destino na estrutura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY , a extensão deverá chamar a função UpdateNetBufferListDestinations para confirmar essas alterações na estrutura NET_BUFFER_LIST do pacote.
Nota Somente extensões de encaminhamento podem chamar UpdateNetBufferListDestinations para confirmar portas de destino que foram adicionadas ou alteradas para pacotes com várias portas de destino. Para obter mais informações sobre esse tipo de extensão, consulte Extensões de encaminhamento.
 
Se a chamada para UpdateNetBufferListDestinations retornar NDIS_STATUS_SUCCESS, a interface de comutador extensível garantirá que a porta do comutador extensível e a conexão do adaptador de rede referenciadas nas portas de destino não serão excluídas até que a operação de envio ou recebimento do pacote seja concluída.

Além disso, depois que as alterações das portas de destino tiverem sido confirmadas, as portas de destino não poderão ser removidas e somente o membro IsExcluded da estrutura NDIS_SWITCH_PORT_DESTINATION de uma porta de destino poderá ser alterado. Para obter mais informações, consulte Excluindo a entrega de pacotes para portas de destino comutador extensível.

Nota Por motivos de desempenho, a extensão não deve chamar a função UpdateNetBufferListDestinations para confirmar as alterações em um pacote com apenas uma porta de destino. Em vez disso, a extensão chama AddNetBufferListDestination para confirmar as alterações na porta de destino do pacote.
 
Para obter mais informações sobre o contexto de encaminhamento de comutador extensível, consulte Contexto de encaminhamento de comutador extensível do Hyper-V.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.30 e posterior.
Plataforma de Destino Área de Trabalho
Cabeçalho ndis.h (inclua Ndis.h)
IRQL <= DISPATCH_LEVEL

Confira também

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest

OID_SWITCH_NIC_DELETE