Compartilhar via


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

A função AllocateNetBufferListForwardingContext prepara uma estrutura NET_BUFFER_LIST para operações de envio ou recebimento dentro do comutador extensível.

Sintaxe

NDIS_SWITCH_ALLOCATE_NET_BUFFER_LIST_FORWARDING_CONTEXT NdisSwitchAllocateNetBufferListForwardingContext;

NDIS_STATUS NdisSwitchAllocateNetBufferListForwardingContext(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList
)
{...}

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 lista vinculada de estruturas de NET_BUFFER_LIST .

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 pode originar operações de envio de pacotes dentro do caminho de dados do comutador extensível. Por exemplo, a extensão pode enviar pacotes para qualquer porta na opção extensível. Para obter mais informações sobre esse caminho de dados, consulte Caminho de dados do Comutador Extensível do Hyper-V.

Depois que a extensão chama NdisAllocateNetBufferList ou NdisAllocateCloneNetBufferList para criar ou clonar um pacote de seu pool de NET_BUFFER_LIST , a extensão deve chamar a função AllocateNetBufferListForwardingContext . Essa função aloca e inicializa o contexto de encaminhamento de comutador extensível OOB (fora de banda) para a estrutura de NET_BUFFER_LIST especificada. Para obter mais informações sobre esse contexto, consulte Contexto de encaminhamento extensível de comutador extensível do Hyper-V.

A extensão deve seguir estas diretrizes para alocar o contexto de encaminhamento por meio da função AllocateNetBufferListForwardingContext :

  • A extensão chama NdisAllocateNetBufferList para alocar um pacote do pool de NET_BUFFER_LIST da extensão para uma operação de envio ou recebimento pela opção extensível. Antes que a extensão inicialize as portas de origem e destino para o pacote, ela deve chamar AllocateNetBufferListForwardingContext.

    Para obter mais informações sobre como especificar portas comutador extensíveis de origem e destino, consulte Gerenciando dados de origem e porta de destino extensíveis do Hyper-V.

  • Antes que a extensão chame AllocateNetBufferListForwardingContext, ela deve definir o membro SourceHandle de cada estrutura de NET_BUFFER_LIST alocada para o valor do identificador que identifica a extensão. A extensão recebe esse identificador por meio do parâmetro NdisFilterHandle quando o NDIS chama a função FilterAttach da extensão.
  • Quando a operação de envio for concluída, a extensão deverá chamar a função FreeNetBufferListForwardingContext para desalocar os recursos para o contexto de encaminhamento. A extensão deve chamar essa função antes de chamar NdisFreeNetBufferList para retornar o pacote ao pool de NET_BUFFER_LIST .
  • Se a extensão estiver clonando um pacote, ela deverá chamar CopyNetBufferListInfo para copiar o contexto de encaminhamento do pacote original para o pacote clonado. A extensão deve fazer isso depois de chamar AllocateNetBufferListForwardingContext.
Para obter mais informações sobre como originar operações de envio, consulte Filtrar operações de envio e recebimento do módulo.
Nota Se o parâmetro NetBufferList contiver um ponteiro para uma lista vinculada de várias estruturas de NET_BUFFER_LIST , somente a primeira estrutura NET_BUFFER_LIST na lista terá um contexto de encaminhamento alocado para ele.
 

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

CopyNetBufferListInfo

FilterAttach

FreeNetBufferListForwardingContext

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBufferList

NdisFGetOptionalSwitchHandlers

NdisFreeNetBufferList