NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO unión (ndis.h)
La unión NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO especifica la información para reenviar un paquete a uno o varios puertos de conmutador extensibles de Hyper-V.
Esta información se incluye en los datos fuera de banda (OOB) de la estructura NET_BUFFER_LIST del paquete.
Sintaxis
typedef union _NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO {
UINT64 AsUINT64;
struct {
UINT32 NumAvailableDestinations : 16;
UINT32 SourcePortId : 16;
UINT32 SourceNicIndex : 8;
UINT32 NativeForwardingRequired : 1;
#if ...
UINT32 Reserved1 : 1;
#else
UINT32 Reserved1 : 2;
#endif
UINT32 IsPacketDataSafe : 1;
UINT32 SafePacketDataSize : 12;
UINT32 IsPacketDataUncached : 1;
UINT32 IsSafePacketDataUncached : 1;
UINT32 Reserved2 : 7;
};
} NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO, *PNDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO;
Miembros
AsUINT64
Valor completo de NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO de 64 bits.
NumAvailableDestinations
Valor que especifica el número de elementos de puertos de destino de conmutador extensible sin usar dentro de una estructura de NET_BUFFER_LIST . Para obtener más información, vea la sección Comentarios.
SourcePortId
Identificador del puerto de conmutador extensible de origen desde el que se originó el NET_BUFFER_LIST .
SourceNicIndex
Valor UINT32 que especifica el índice del adaptador de red de origen que está conectado al puerto de conmutador extensible especificado por el miembro SourcePortId .
Para obtener más información sobre este valor de índice, vea Valores de índice del adaptador de red.
NativeForwardingRequired
Si este miembro se establece en TRUE, el paquete es un paquete NVGRE y el componente virtualización de red de Hyper-V (HNV) del conmutador extensible de Hyper-V reenviará este paquete. Para más información, consulte Reenvío híbrido.
Esta marca no debe escribirse en ninguna extensión.
Reserved1
Este miembro está reservado para su uso futuro por NDIS.
Este miembro está reservado para su uso futuro por NDIS.
IsPacketDataSafe
Si este miembro se establece en TRUE, todos los datos del paquete proceden de la memoria del host de confianza.
SafePacketDataSize
Valor que especifica el número de bytes consecutivos en los datos del paquete que se encuentran en la memoria de host de confianza. Este valor se encuentra en unidades de bytes desde el inicio de los datos del paquete. El resto de los datos de paquete (si existen) después del valor SafePacketDataSize se encuentra en memoria compartida que tiene acceso el elemento secundario de Hyper-V y las particiones primarias.
Para obtener más información, vea la sección Comentarios.
IsPacketDataUncached
Si no se establece esta marca, se almacenan en caché todos los datos del paquete. Si se establece, parte o todos los datos no se almacenan en caché. Cuando se establece, compruebe el campo IsSafePacketDataUncached para ver si al menos la parte SafePacketData está almacenada en caché.
IsSafePacketDataUncached
Si se establece la marca IsPacketDataUncached , este campo indica si la parte SafePacketData del paquete se almacena en caché. Si es así, consulte el campo SafePacketDataSize para saber cuántos bytes se almacenan en caché.
Reserved2
Este miembro está reservado para su uso futuro por NDIS.
Comentarios
Las extensiones de conmutador extensible pueden usar la macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL para acceder a la unión de NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO en una estructura de NET_BUFFER_LIST .
El miembro NumAvailableDestinations de la unión NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO especifica el número de elementos de puerto de destino de conmutador extensible sin usar dentro de una estructura de NET_BUFFER_LIST . Cada puerto de destino de conmutador extensible se especifica mediante un elemento NDIS_SWITCH_PORT_DESTINATION dentro de la estructura NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY de una estructura de NET_BUFFER_LIST . La extensión de conmutador extensible llama a GetNetBufferListDestinations para obtener el NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY actual en una estructura de NET_BUFFER_LIST .
El miembro NativeForwardingRequired especifica si el paquete es un paquete NVGRE o no. Si es TRUE, el paquete es un paquete NVGRE y la extensión de reenvío no determina la matriz de puertos de destino de reenvío del paquete, aunque puede agregar o excluir puertos de destino en la matriz. Para más información, consulte Reenvío híbrido.
La marca IsPacketDataUncached puede ayudar a las extensiones de conmutador extensible a determinar si parte o todos los datos del paquete se almacenan en caché o no. Si se establece esta marca, parte o todos los datos no se almacenan en caché y la marca IsSafePacketDataUncached indica a la extensión si el elemento de datos de paquete seguro está almacenado en caché. Si los datos de paquetes seguros se almacenan en caché, el miembro SafePacketDataSize especifica cuántos bytes se almacenan en caché.
SafePacketDataSize especifica el tamaño de los datos de paquete que se encuentran en la memoria local, o de confianza, en el sistema operativo primario de la partición primaria de Hyper-V. La partición secundaria no puede acceder a esta memoria. Por lo tanto, se considera "seguro" de las actualizaciones no sincronizadas por el sistema operativo invitado que se ejecuta en esa partición.
Si una extensión de conmutador extensible requiere más espacio de confianza para inspeccionar los datos del paquete, debe seguir estos pasos:
- La extensión debe duplicar la estructura NET_BUFFER_LIST del paquete asignando una estructura de NET_BUFFER_LIST y NET_BUFFER . A continuación, la extensión llama a NdisCopyFromNetBufferToNetBuffer para duplicar la estructura de NET_BUFFER del paquete. Si esta función se completa correctamente, los datos del paquete se copian en la memoria de confianza.
- La extensión debe llamar a CopyNetBufferListInfo para copiar los datos de OOB del paquete en el paquete duplicado.
- Una vez duplicado el paquete original, la extensión debe obtener la unión NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO en el paquete duplicado mediante la macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL . La extensión debe establecer el miembro IsPacketDataSafe en TRUE.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con NDIS 6.30 y versiones posteriores. |
Encabezado | ndis.h (incluya Ndis.h) |
Consulte también
Reenvío de paquetes a puertos de conmutador extensible de Hyper-V
Reenvío de paquetes a adaptadores de red físicos
NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY
NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL
Información general sobre el conmutador extensible de Hyper-V
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de