estructura NDIS_RECEIVE_FILTER_FIELD_PARAMETERS (ntddndis.h)
La estructura NDIS_RECEIVE_FILTER_FIELD_PARAMETERS especifica el criterio de prueba de filtro para un campo en un encabezado de paquete de red.
Los filtros de recepción NDIS se usan en las siguientes interfaces NDIS:
-
Fusión de paquetes NDIS. Para obtener más información sobre cómo usar filtros de recepción en esta interfaz, vea Administración de filtros de recepción de fusión de paquetes.
-
Virtualización de E/S raíz única (SR-IOV). Para obtener más información sobre cómo usar filtros de recepción en esta interfaz, vea Establecer un filtro de recepción en un puerto virtual.
-
Virtual Machine Queue (VMQ). Para obtener más información sobre cómo usar filtros de recepción en esta interfaz, consulte Configuración y borrado de filtros de VMQ.
Sintaxis
typedef struct _NDIS_RECEIVE_FILTER_FIELD_PARAMETERS {
NDIS_OBJECT_HEADER Header;
ULONG Flags;
NDIS_FRAME_HEADER FrameHeader;
NDIS_RECEIVE_FILTER_TEST ReceiveFilterTest;
union {
NDIS_MAC_HEADER_FIELD MacHeaderField;
NDIS_ARP_HEADER_FIELD ArpHeaderField;
NDIS_IPV4_HEADER_FIELD IPv4HeaderField;
NDIS_IPV6_HEADER_FIELD IPv6HeaderField;
NDIS_UDP_HEADER_FIELD UdpHeaderField;
} HeaderField;
_HEADER_FIELD _HEADER_FIELD;
union {
UCHAR FieldByteValue;
USHORT FieldShortValue;
ULONG FieldLongValue;
ULONG64 FieldLong64Value;
UCHAR FieldByteArrayValue[16];
} FieldValue;
_FIELD_VALUE _FIELD_VALUE;
union {
UCHAR ResultByteValue;
USHORT ResultShortValue;
ULONG ResultLongValue;
ULONG64 ResultLong64Value;
UCHAR ResultByteArrayValue[16];
} ResultValue;
_RESULT_VALUE _RESULT_VALUE;
} NDIS_RECEIVE_FILTER_FIELD_PARAMETERS, *PNDIS_RECEIVE_FILTER_FIELD_PARAMETERS;
Miembros
Header
Estructura NDIS_OBJECT_HEADER de la estructura NDIS_RECEIVE_FILTER_FIELD_PARAMETERS . El controlador establece el miembro Type de la estructura que Header especifica para NDIS_OBJECT_TYPE_DEFAULT.
Para indicar la versión de la estructura de NDIS_RECEIVE_FILTER_FIELD_PARAMETERS , el controlador establece el miembro Revision en uno de los siguientes valores:
Flags
OR bit a bit de marcas. Las marcas siguientes son válidas para OID_RECEIVE_FILTER_SET_FILTER OID.
Valor | Significado |
---|---|
|
Si se establece esta marca, el adaptador de red solo debe indicar paquetes recibidos que pasen los siguientes criterios:
Nota Si un controlador de sobreslización establece un filtro de direcciones MAC y un filtro de identificador VLAN con una solicitud de OID de OID_RECEIVE_FILTER_SET_FILTER, no establece esta marca en ninguno de los campos de filtro. En este caso, el controlador de minipuerto debe indicar paquetes que coincidan con la dirección MAC especificada y el identificador VLAN. Es decir, el controlador de minipuerto no debe indicar paquetes con una dirección MAC coincidente que tenga un identificador VLAN cero o que no estén marcados como paquetes.
|
FrameHeader
Tipo de encabezado en la trama de datos de red.
ReceiveFilterTest
Tipo de prueba que se va a realizar para el filtro de recepción.
HeaderField
Tipo de campo en un encabezado. El tipo de campo (por ejemplo, NDIS_MAC_HEADER_FIELD) corresponde al tipo de encabezado especificado en el miembro FrameHeader .
Esta unión contiene los siguientes miembros:
HeaderField.MacHeaderField
Tipo de campo en un encabezado MAC.
HeaderField.ArpHeaderField
Tipo de campo en un encabezado protocolo de resolución de direcciones (ARP).
HeaderField.IPv4HeaderField
Valor de enumeración NDIS_IPV4_HEADER_FIELD que especifica el tipo de campo en un encabezado ip versión 4 (IPv4).
HeaderField.IPv6HeaderField
Valor de enumeración NDIS_IPV6_HEADER_FIELD que especifica el tipo de campo en un encabezado ip versión 6 (IPv6).
HeaderField.UdpHeaderField
Tipo de campo en un encabezado de Protocolo de datagramas de usuario (UDP).
_HEADER_FIELD
FieldValue
Valor que el adaptador de miniporte compara con el valor del campo de encabezado correspondiente en los paquetes entrantes. La ubicación del valor del campo de encabezado viene determinada por el tipo de campo especificado en el miembro HeaderField .
Para obtener más información, vea la sección Comentarios.
Esta unión contiene los siguientes miembros:
FieldValue.FieldByteValue
Valor UCHAR que se va a comparar con un campo de un paquete de red.
FieldValue.FieldShortValue
Valor de USHORT que se va a comparar con un campo de un paquete de red.
FieldValue.FieldLongValue
Valor de ULONG que se va a comparar con un campo de un paquete de red.
FieldValue.FieldLong64Value
Valor de ULONG64 que se va a comparar con un campo de un paquete de red.
FieldValue.FieldByteArrayValue[16]
Matriz UCHAR que se va a comparar con un campo de un paquete de red.
_FIELD_VALUE
ResultValue
Unión que contiene un valor de resultado de prueba.
Si el miembro ReceiveFilterTest se establece en NdisReceiveFilterTestMaskEqual, el adaptador de red calcula primero un resultado del valor del miembro FieldValue y el valor del campo de encabezado según lo especificado por el miembro HeaderField . A continuación, el adaptador compara el resultado calculado con ResultValue.
Para obtener más información, vea la sección Comentarios.
Esta unión contiene los siguientes miembros:
ResultValue.ResultByteValue
Valor UCHAR que se va a comparar con un resultado de prueba.
ResultValue.ResultShortValue
Valor de USHORT que se va a comparar con un resultado de prueba.
ResultValue.ResultLongValue
Valor de ULONG que se va a comparar con un resultado de prueba.
ResultValue.ResultLong64Value
Valor de ULONG64 que se va a comparar con un resultado de prueba.
ResultValue.ResultByteArrayValue[16]
Matriz UCHAR que se va a comparar con un resultado de prueba.
_RESULT_VALUE
Comentarios
La estructura NDIS_RECEIVE_FILTER_FIELD_PARAMETERS especifica el criterio de prueba de filtro para un campo en una posible matriz de pruebas de campo que se pueden especificar con el NDIS_RECEIVE_FILTER_PARAMETERS estructura.
En la tabla siguiente se describe cómo el adaptador de red usa los miembros ReceiveFilterTest, FieldValue y ResultValue para realizar una prueba de filtro en el valor de campo de encabezado especificado de un paquete recibido.
Valor ReceiveFilterTest | Prueba de filtro realizada por el adaptador de red |
---|---|
NdisReceiveFilterTestEqual | (<valor del campo de encabezado> == FieldValue) |
NdisReceiveFilterTestMaskEqual | ((<header field value> & FieldValue) == ResultValue) |
NdisReceiveFilterTestNotEqual | (<valor del campo de encabezado> != FieldValue) |
- Para NDIS 6.20, el controlador de minipuerto debe devolver un estado erróneo para la solicitud OID de OID_RECEIVE_FILTER_SET_FILTER.
-
A partir de NDIS 6.30, si no se establece la marca de NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO y no hay ningún filtro de identificador VLAN configurado por la solicitud del método OID_RECEIVE_FILTER_SET_FILTER , el controlador de miniporte debe realizar una de las siguientes acciones:
- El controlador de minipuerto debe devolver un estado erróneo para la solicitud de método OID_RECEIVE_FILTER_SET_FILTER .
- El controlador de minipuerto debe configurar el adaptador de red para inspeccionar y filtrar los campos de dirección MAC especificados. Si una etiqueta VLAN está presente en el paquete recibido, el adaptador de red debe quitarla de los datos del paquete. El controlador de minipuerto debe colocar la etiqueta VLAN en una NDIS_NET_BUFFER_LIST_8021Q_INFO asociada a la estructura NET_BUFFER_LIST del paquete.
-
El controlador de minipuerto debe configurar el adaptador de red para inspeccionar y filtrar los campos de dirección MAC y identificador de VLAN especificados.
Si una etiqueta VLAN está presente en el paquete recibido, el adaptador de red debe quitarla de los datos del paquete. El controlador de minipuerto debe colocar la etiqueta VLAN en una NDIS_NET_BUFFER_LIST_8021Q_INFO asociada a la estructura NET_BUFFER_LIST del paquete.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Se admite en NDIS 6.20 y versiones posteriores. |
Encabezado | ntddndis.h (include Ndis.h) |
Consulte también
NDIS_RECEIVE_FILTER_PARAMETERSComentarios
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