Compartilhar via


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

A extensão de comutador extensível Hyper-V chama a função SetNetBufferListSwitchContext para anexar um buffer de contexto alocado por extensão ao NET_BUFFER_LIST. O contexto é então acessível durante o tempo de vida desse NET_BUFFER_LIST, incluindo se o contexto é definido na entrada e a NBL é vista novamente na saída, independentemente de outras extensões definirem seu próprio contexto. Esse tipo de acesso não é possível usando as APIs de contexto de NET_BUFFER_LIST NDIS existentes (NdisAllocateNetBufferListContext/ NET_BUFFER_LIST_CONTEXT_DATA_START) porque outra extensão pode alocar o contexto de NDIS quando obtém a propriedade do NET_BUFFER_LIST, momento em que o ponteiro para o contexto original do NDIS é perdido.

Sintaxe

NDIS_SWITCH_SET_NET_BUFFER_LIST_SWITCH_CONTEXT NdisSwitchSetNetBufferListSwitchContext;

NDIS_STATUS NdisSwitchSetNetBufferListSwitchContext(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      PNDIS_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE ContextType,
  [in]      PVOID Context
)
{...}

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 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 que recebe a associação de contexto.

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

[in] ContextType

O tipo de contexto declarado usando NDIS_DECLARE_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE que será usado como a chave ao recuperar o contexto.

[in] Context

O ponteiro para o contexto que será recuperável usando o ContextTypeespecificado.

Valor de retorno

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.

Observações

As APIs SetNetBufferListSwitchContext permitem que as extensões anexem o contexto a um NET_BUFFER_LIST na entrada e a recuperem na saída. Mesmo assim, as extensões devem ser resilientes ao contexto de entrada que não está presente na saída. O contexto de alternância não é preservado quando um NET_BUFFER_LIST é clonado, portanto, em cenários em que o NET_BUFFER_LIST é clonado entre entrada e saída, o NET_BUFFER_LIST não terá o contexto de alternância original.

A extensão deve gerenciar o tempo de vida do contexto. Uma abordagem é alocar o contexto de NET_BUFFER_LIST do NDIS (usando NdisAllocateNetBufferListContextou pré-configurado se a extensão possui o pool de NET_BUFFER_LIST) e usar o setNetBufferListSwitchContext para associar um identificador de tipo de contexto ao contexto de NET_BUFFER_LIST do NDIS. Quando o NBL for concluído, a extensão poderá liberar o contexto de NET_BUFFER_LIST do NDIS (usando NdisFreeNetBufferListContextou liberando o NET_BUFFER_LIST em si se ele tiver sido originado pela extensão).

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

Requisitos

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

Consulte também

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

GetNetBufferListSwitchContext

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest