Compartir a través de


NDIS_SWITCH_SET_NET_BUFFER_LIST_SWITCH_CONTEXT función de devolución de llamada (ndis.h)

La extensión de conmutador extensible Hyper-V llama a la función SetNetBufferListSwitchContext para adjuntar un búfer de contexto asignado por extensión al NET_BUFFER_LIST. A continuación, se puede acceder al contexto durante la vigencia de ese NET_BUFFER_LIST, incluido si el contexto se establece en la entrada y el NBL se vuelve a ver en la salida, independientemente de si otras extensiones establecen su propio contexto. Este tipo de acceso no es posible mediante las API de contexto de NDIS existentes NET_BUFFER_LIST (NdisAllocateNetBufferListContext/ NET_BUFFER_LIST_CONTEXT_DATA_START) porque otra extensión puede asignar contexto NDIS cuando obtiene la propiedad del NET_BUFFER_LIST, momento en el que se pierde el puntero al contexto NDIS original.

Sintaxis

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

Valor NDIS_SWITCH_CONTEXT que contiene el identificador del módulo de conmutador extensible al que se adjunta la extensión de conmutador extensible Hyper-V. Cuando la extensión llama a NdisFGetOptionalSwitchHandlers, este identificador se devuelve a través del parámetro NdisSwitchContext.

[in, out] NetBufferList

Puntero a una estructura NET_BUFFER_LIST para un único paquete que recibe la asociación de contexto.

Nota Esta estructura debe contener un contexto de reenvío de conmutador extensible. Si la extensión ha creado o clonado el paquete, debe haber asignado previamente esta estructura llamando a la función AllocateNetBufferListForwardingContext.
 

[in] ContextType

Tipo de contexto declarado mediante NDIS_DECLARE_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE que se usará como clave al recuperar el contexto.

[in] Context

Puntero al contexto que se podrá recuperar mediante el ContextType especificado.

Valor devuelto

Si la llamada se realiza correctamente, la función devuelve NDIS_STATUS_SUCCESS. De lo contrario, devuelve un NDIS_STATUS_código de error xxx definido en Ndis.h.

Observaciones

Las API de setNetBufferListSwitchContext permiten a las extensiones adjuntar contexto a un NET_BUFFER_LIST de entrada y recuperarlo en la salida. Incluso así, las extensiones deben ser resistentes al contexto de entrada que no está presente en la salida. El contexto del modificador no se conserva cuando se clona un NET_BUFFER_LIST, por lo que en escenarios en los que se clona el NET_BUFFER_LIST entre entrada y salida, el NET_BUFFER_LIST no tendrá el contexto del modificador original.

La extensión debe administrar la duración del contexto. Un enfoque consiste en asignar contexto de NET_BUFFER_LIST NDIS (mediante NdisAllocateNetBufferListContext, o preconfigurado si la extensión posee el grupo de NET_BUFFER_LIST) y usa el SetNetBufferListSwitchContext para asociar un identificador de tipo de contexto con el contexto de NET_BUFFER_LIST NDIS. Cuando se completa el NBL, la extensión puede liberar el contexto de NET_BUFFER_LIST NDIS (mediante NdisFreeNetBufferListContexto liberar la NET_BUFFER_LIST si se originó en la extensión).

Para obtener más información sobre el contexto de reenvío extensible de conmutadores, vea Hyper-V contexto de reenvío extensible de conmutadores.

Requisitos

Requisito Valor
cliente mínimo admitido Compatible con NDIS 6.30 y versiones posteriores.
de la plataforma de destino de Escritorio
encabezado de ndis.h (incluya Ndis.h)
irQL <= DISPATCH_LEVEL

Consulte también

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

GetNetBufferListSwitchContext

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest