Determinación de las funcionalidades de VMQ de un adaptador de red
NDIS proporciona la interfaz para determinar las funcionalidades de VMQ de un adaptador de red, como:
Funcionalidades de filtrado genéricas de un adaptador de red.
Funcionalidades admitidas de la cola de máquinas virtuales.
Compatibilidad con Lookahead para permitir la división de la memoria de datos de red en dos búferes independientes.
Nota A partir de NDIS 6.30, ya no se admite la división de datos de paquetes en búferes de búsqueda anticipada independientes.
Los controladores de minipuerto proporcionan la siguiente información a NDIS durante la inicialización del adaptador de red:
Las funcionalidades de hardware de VMQ que el adaptador de red puede admitir.
Las funcionalidades de VMQ que están habilitadas actualmente.
Características globales de filtrado de recepción habilitadas o deshabilitadas en un adaptador de red.
El uso excesivo de controladores y aplicaciones puede usar las siguientes solicitudes de consulta de OID para obtener las funcionalidades del adaptador de red.
OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES
OID_RECEIVE_FILTER_CURRENT_CAPABILITIES
OID_RECEIVE_FILTER_GLOBAL_PARAMETERS
NDIS controla estas solicitudes de consulta de OID para controladores de minipuerto. Por lo tanto, la consulta no se solicita para controladores de minipuerto. NDIS informa de que las funcionalidades de VMQ de recepción habilitadas actualmente de un adaptador de red durante la inicialización. Por lo tanto, los controladores demasiado elevados no tienen que consultar estos identificadores de identificación.
La estructura NDIS_RECEIVE_FILTER_CAPABILITIES especifica las funciones de filtrado de un adaptador de red. Esta estructura se usa de las siguientes maneras:
Cuando NDIS llama a la función MiniportInitializeEx , el controlador de miniporta registra sus capacidades de filtrado inicializando una estructura de NDIS_RECEIVE_FILTER_CAPABILITIES . A continuación, el controlador establece el miembro HardwareReceiveFilterCapabilities de la estructura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES para que apunte a la estructura de NDIS_RECEIVE_FILTER_CAPABILITIES . A continuación, el controlador llama a la función NdisMSetMiniportAttributes y, a continuación, establece el parámetro MiniportAttributes en un puntero a la estructura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
Un controlador de protocolo sobreajuste recibe la estructura de NDIS_RECEIVE_FILTER_CAPABILITIES en la estructura de NDIS_BIND_PARAMETERS cuando NDIS llama a la función ProtocolBindAdapterEx del controlador.
Un controlador de filtro excesivamente recibe la estructura de NDIS_RECEIVE_FILTER_CAPABILITIES en la estructura de NDIS_FILTER_ATTACH_PARAMETERS cuando NDIS llama a la función FilterAttach del controlador.
Los controladores demasiado excesivos reciben la estructura de NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES mediante la emisión de una solicitud de consulta de OID de OID_RECEIVE_FILTER_CURRENT_CAPABILITIES o OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES. Los miembros HardwareReceiveFilterCapabilities y CurrentReceiveFilterCapabilities apuntan a una estructura de NDIS_RECEIVE_FILTER_CAPABILITIES .
La estructura NDIS_RECEIVE_FILTER_CAPABILITIES incluye la siguiente información:
EnabledFilterTypes
Los tipos de los filtros de recepción admitidos. La marca NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED especifica que los filtros de cola de máquinas virtuales (VMQ) están habilitados.
EnabledQueueTypes
Los tipos de colas de recepción admitidas. La marca NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED especifica que las colas de máquina virtual (VM) están habilitadas.
NumQueues
Número de colas de recepción que admite el adaptador de red. Para admitir VMQ, este número debe ser igual o menor que el número de direcciones MAC de unidifusión que admite la NIC. Este número no debe incluir la cola predeterminada.
Nota El número de direcciones MAC de unidifusión o colas de máquina virtual que admite un adaptador de red no incluye la dirección MAC de la NIC asociada.
SupportedQueueProperties
Las propiedades de cola que admite el adaptador de red. La marca NDIS_RECEIVE_FILTER_VM_QUEUE_SUPPORTED especifica que el adaptador de red proporciona los requisitos mínimos para admitir el filtrado de VMQ. Una NIC compatible con VMQ debe proporcionar una entrada de tabla MSI-X para cada cola de recepción. Por lo tanto, un controlador de minipuerto de VMQ debe establecer la marca NDIS_RECEIVE_FILTER_MSI_X_SUPPORTED.
SupportedFilterTests
Las operaciones de prueba de filtro que admite un controlador de minipuerto. Por ejemplo, el adaptador de red admite probar el campo de encabezado seleccionado para determinar si es igual a un valor determinado. Un controlador de minipuerto de VMQ debe establecer la marca NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED.
SupportedHeaders
Los tipos de encabezados de paquetes de red que un controlador de minipuerto puede inspeccionar. Por ejemplo, el adaptador de red puede inspeccionar el encabezado MAC de un paquete de red. El encabezado MAC incluye el tipo de paquete, el destino y las direcciones MAC de origen, el identificador VLAN y los campos de etiqueta de prioridad. Un controlador de minipuerto de VMQ debe establecer la marca NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED.
SupportedMacHeaderFields
Los tipos de campos de encabezado MAC que un controlador de minipuerto puede inspeccionar. Un controlador de minipuerto de VMQ debe establecer la marca NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED.
MaxMacHeaderFilters
Número máximo de filtros de encabezado MAC que admite el controlador de minipuerto. Debe haber al menos tantos filtros de encabezado como colas de máquina virtual.
MaxQueueGroups
Este miembro está reservado para NDIS.
MaxQueuesPerQueueGroup
Este miembro está reservado para NDIS.
MinLookaheadSplitSize
Tamaño mínimo, en bytes, que admite el adaptador de red para segmentos de paquetes de búsqueda anticipada.
Nota A partir de NDIS 6.30, ya no se admite la división de datos de paquetes en búferes de búsqueda anticipada independientes. Los controladores de minipuerto que admiten NDIS 6.30 o versiones posteriores deben establecer este miembro en cero.
MaxLookaheadSplitSize
Tamaño máximo, en bytes, que admite el adaptador de red para segmentos de paquetes de búsqueda anticipada.
Nota A partir de NDIS 6.30, ya no se admite la división de datos de paquetes en búferes de búsqueda anticipada independientes. Los controladores de minipuerto que admiten NDIS 6.30 o versiones posteriores deben establecer este miembro en cero.
Después de una devolución correcta de la consulta OID de OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES , el miembro InformationBuffer de la estructura NDIS_OID_REQUEST contiene un puntero a una estructura de NDIS_RECEIVE_FILTER_CAPABILITIES. Estas funcionalidades pueden incluir funcionalidades de hardware de VMQ que están deshabilitadas actualmente por la configuración del archivo INF o a través de la página De propiedades avanzadas . Para más información sobre la configuración de los archivos VMQ INF, consulte Entradas de INF estándar de VMQ.
Los controladores de minipuerto NDIS proporcionan las funcionalidades de hardware de filtrado de recepción durante la inicialización en el miembro HardwareReceiveFilterCapabilities de la estructura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
Después de una devolución correcta de la consulta OID de OID_RECEIVE_FILTER_CURRENT_CAPABILITIES , el miembro InformationBuffer de la estructura NDIS_OID_REQUEST contiene un puntero a una estructura NDIS_RECEIVE_FILTER_CAPABILITIES . Estas funcionalidades incluyen las funcionalidades de VMQ habilitadas actualmente.
Los controladores de minipuerto NDIS proporcionan las funcionalidades de filtrado de recepción habilitadas actualmente durante la inicialización en el miembro CurrentReceiveFilterCapabilities de la estructura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
NDIS informa de las funcionalidades de filtrado de recepción habilitadas actualmente de un adaptador de red subyacente a controladores de protocolo excesivos en el miembro ReceiveFilterCapabilities de la estructura NDIS_BIND_PARAMETERS durante la operación de enlace.
La estructura NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS se usa en el OID de consulta de OID_RECEIVE_FILTER_GLOBAL_PARAMETERS para obtener la configuración actual del filtro de recepción global.
NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS incluye la siguiente información:
EnabledFilterTypes
Los tipos de filtros de recepción habilitados. La marca NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED especifica que los filtros de cola de máquinas virtuales (VMQ) están habilitados.
EnabledQueueTypes
Los tipos de colas de recepción habilitadas. La marca NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED especifica que las colas de máquina virtual (VM) están habilitadas.
Después de una devolución correcta de la consulta OID de OID_RECEIVE_FILTER_GLOBAL_PARAMETERS , el miembro InformationBuffer de la estructura NDIS_OID_REQUEST contiene un puntero a una estructura de NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS . La estructura NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS especifica las características de filtrado de recepción habilitadas o deshabilitadas en un adaptador de red.
Los controladores de protocolo NDIS usan OID_RECEIVE_FILTER_GLOBAL_PARAMETERS para consultar los parámetros de configuración global actuales para el filtrado de recepción en un adaptador de red. Por ejemplo, los controladores de protocolo pueden usar este OID para determinar si los tipos de filtros de recepción o las colas de recepción están habilitados o deshabilitados.