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

A extensão de comutador extensível do Hyper-V chama a função CopyNetBufferListInfo para copiar o contexto de encaminhamento fora de banda (OOB) da estrutura de NET_BUFFER_LIST de um pacote de origem para a estrutura de NET_BUFFER_LIST de um pacote de destino. Esse contexto inclui as informações extensíveis da porta de origem do comutador e do adaptador de rede. As informações de porta de destino do comutador extensível também podem ser copiadas.

Sintaxe

NDIS_SWITCH_COPY_NET_BUFFER_LIST_INFO NdisSwitchCopyNetBufferListInfo;

NDIS_STATUS NdisSwitchCopyNetBufferListInfo(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST DestNetBufferList,
  [in]      PNET_BUFFER_LIST SrcNetBufferList,
  [in]      UINT32 Flags
)
{...}

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 está anexada. Quando a extensão chama NdisFGetOptionalSwitchHandlers, esse identificador é retornado por meio do parâmetro NdisSwitchContext .

[in, out] DestNetBufferList

Um ponteiro para uma estrutura de NET_BUFFER_LIST para o pacote de destino para o qual o contexto de encaminhamento de comutador extensível é copiado.

[in] SrcNetBufferList

Um ponteiro para uma estrutura NET_BUFFER_LIST para o pacote de origem do qual o contexto de encaminhamento de comutador extensível é copiado.

[in] Flags

Um valor UINT32. Quando o sinalizador NDIS_SWITCH_COPY_NBL_INFO_FLAGS_PRESERVE_DESTINATIONS é especificado, a função copia as portas de destino do comutador extensível do pacote de origem para o pacote de destino.

Os dados contidos na união NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO do pacote de origem são sempre copiados para o contexto de encaminhamento de comutador extensível no pacote de destino. Esses dados incluem os identificadores de porta de origem e o índice da conexão do adaptador de rede da qual o pacote foi originado. Dependendo do número de portas de destino comutador extensíveis copiadas para o pacote de destino, o membro NumAvailableDestinations da união NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO é atualizado no pacote de destino.

Para obter mais informações sobre o contexto de encaminhamento, consulte Contexto de encaminhamento extensível de comutador extensível do Hyper-V.

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 CopyNetBufferListInfo para copiar os dados OOB de um pacote de origem para um pacote de destino. Esses dados incluem o seguinte:

  • Os dados da matriz NetBufferListInfo da estrutura NET_BUFFER_LIST do pacote de origem.
  • O NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO dados do contexto de encaminhamento extensível de comutador do pacote de origem.
  • Os dados das portas de destino do comutador extensível do contexto de encaminhamento extensível de comutador do pacote de origem.
    Nota Esses dados só serão copiados se o sinalizador NDIS_SWITCH_COPY_NBL_INFO_FLAGS_PRESERVE_DESTINATIONS for especificado.
     
Antes que a extensão chame CopyNetBufferListInfo, ela deve preparar a estrutura de NET_BUFFER_LIST do pacote de destino seguindo estas etapas:
  1. A extensão deve primeiro inicializar uma estrutura NET_BUFFER_LIST para o pacote de destino derivado da estrutura de NET_BUFFER_LIST do pacote de origem.

    Por exemplo, a extensão pode chamar NdisAllocateCloneNetBufferList para criar uma cópia completa do pacote de origem. A extensão também pode chamar NdisAllocateFragmentNetBufferList para criar uma cópia de apenas um fragmento do pacote de origem. Para obter mais informações, consulte Estruturas de NET_BUFFER_LIST derivadas.

  2. A extensão deve chamar a função AllocateNetBufferListForwardingContext para alocar o contexto de encaminhamento de comutador extensível para o pacote de destino. Esses dados são usados para armazenar as informações de encaminhamento de comutador extensível OOB, como as portas de origem e destino de um pacote.
Nota Se a extensão estiver criando ou clonando o pacote de origem, a extensão deverá ter chamado anteriormente a função AllocateNetBufferListForwardingContext para o pacote. Os pacotes de origem que a extensão filtra por meio da pilha de driver de comutador extensível já contêm um contexto de encaminhamento de comutador extensível alocado.
 

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

NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO

NET_BUFFER_LIST

NdisAllocateCloneNetBufferList

NdisAllocateFragmentNetBufferList

NdisFGetOptionalSwitchHandlers