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

La extensión de conmutador extensible de Hyper-V llama a la función UpdateNetBufferListDestinations para confirmar las modificaciones realizadas en un paquete que contiene varios puertos de destino de conmutador extensible. La función guarda estas modificaciones en el contexto de reenvío extensible de conmutador fuera de banda (OOB) de la estructura NET_BUFFER_LIST del paquete.

Sintaxis

NDIS_SWITCH_UPDATE_NET_BUFFER_LIST_DESTINATIONS NdisSwitchUpdateNetBufferListDestinations;

NDIS_STATUS NdisSwitchUpdateNetBufferListDestinations(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      UINT32 NumberOfNewDestinations,
  [in]      PNDIS_SWITCH_FORWARDING_DESTINATION_ARRAY Destinations
)
{...}

Parámetros

[in] NdisSwitchContext

Valor de NDIS_SWITCH_CONTEXT que contiene el identificador del módulo de conmutador extensible al que está asociada la extensión de conmutador extensible de 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 de NET_BUFFER_LIST para un único paquete.

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] NumberOfNewDestinations

Valor UINT32 que especifica el número de puertos de destino nuevos que se agregaron al paquete.

[in] Destinations

Puntero a una estructura de NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Esta estructura especifica los puertos de destino del conmutador extensible del paquete.

Nota La extensión recibió esta estructura a través de una llamada anterior a la función GetNetBufferListDestinations .
 

Valor devuelto

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

Comentarios

La extensión de conmutador extensible llama a la función GetNetBufferListDestinations para obtener una matriz de los puertos de destino del conmutador extensible para un paquete. Si la función devuelve correctamente, la matriz se obtiene a través del parámetro Destinations , que contiene un puntero a una estructura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Cada elemento de esta matriz tiene el formato de estructura NDIS_SWITCH_PORT_DESTINATION que especifica un puerto de destino para el paquete.

Una vez que la extensión obtiene la estructura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY , la extensión puede hacer lo siguiente:

Si la extensión agrega o modifica los puertos de destino en la estructura de NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY , la extensión debe llamar a la función UpdateNetBufferListDestinations para confirmar esos cambios en la estructura de NET_BUFFER_LIST del paquete.
Nota Solo las extensiones de reenvío pueden llamar a UpdateNetBufferListDestinations para confirmar los puertos de destino que se agregaron o cambiaron para los paquetes con varios puertos de destino. Para obtener más información sobre este tipo de extensión, vea Reenvío de extensiones.
 
Si la llamada a UpdateNetBufferListDestinations devuelve NDIS_STATUS_SUCCESS, la interfaz de conmutador extensible garantiza que el puerto de conmutador extensible y la conexión del adaptador de red a los que se hace referencia en los puertos de destino no se eliminarán hasta que se complete la operación de envío o recepción del paquete.

Además, después de confirmar los cambios en los puertos de destino, no se pueden quitar los puertos de destino y solo se puede cambiar el miembro IsExcluded de la estructura NDIS_SWITCH_PORT_DESTINATION de un puerto de destino. Para obtener más información, vea Exclusión de la entrega de paquetes a puertos de destino de conmutador extensible.

Nota Por motivos de rendimiento, la extensión no debe llamar a la función UpdateNetBufferListDestinations para confirmar los cambios en un paquete con un solo puerto de destino. En su lugar, la extensión llama a AddNetBufferListDestination para confirmar los cambios en el puerto de destino del paquete.
 
Para obtener más información sobre el contexto de reenvío de conmutador extensible, vea Contexto de reenvío de conmutador extensible de Hyper-V.

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con NDIS 6.30 y versiones posteriores.
Plataforma de destino Escritorio
Encabezado ndis.h (incluya Ndis.h)
IRQL <= DISPATCH_LEVEL

Consulte también

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest

OID_SWITCH_NIC_DELETE