NDIS_SWITCH_SET_NET_BUFFER_LIST_SWITCH_CONTEXT função de retorno de chamada (ndis.h)
A extensão de comutador extensível do 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 dessa NET_BUFFER_LIST, incluindo se o contexto está 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 do NDIS NET_BUFFER_LIST 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 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 que recebe a associação de contexto.
[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 ContextType especificado.
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
As APIs SetNetBufferListSwitchContext permitem que as extensões anexem o contexto a um NET_BUFFER_LIST na entrada e as 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 NdisAllocateNetBufferListContext ou pré-configurado se a extensão possuir o pool de NET_BUFFER_LIST) e usar SetNetBufferListSwitchContext para associar um identificador de tipo de contexto ao contexto de NET_BUFFER_LIST NDIS. Quando a NBL for concluída, a extensão poderá liberar o contexto de NET_BUFFER_LIST do NDIS (usando NdisFreeNetBufferListContext ou liberando a NET_BUFFER_LIST em si se ela tiver sido originada pela extensão).
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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de