Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un controlador demasiado excesivo emite una solicitud de método OID de OID_RECEIVE_FILTER_SET_FILTER para establecer un filtro en un adaptador de red.
El informationBuffer miembro de la estructura NDIS_OID_REQUEST contiene un puntero a un búfer asignado por el autor de la llamada. Este búfer tiene el formato para contener lo siguiente:
Estructura NDIS_RECEIVE_FILTER_PARAMETERS que especifica los parámetros de un filtro de recepción NDIS.
Matriz de NDIS_RECEIVE_FILTER_FIELD_PARAMETERS estructuras que especifican el criterio de prueba de filtro para un campo en un encabezado de paquete de red.
Después de una devolución correcta de la solicitud del método OID, el miembro InformationBuffer de la estructura de NDIS_OID_REQUEST contiene un puntero a una estructura de NDIS_RECEIVE_FILTER_PARAMETERS. Si el controlador que está sobreponiendo está creando un nuevo filtro de recepción, NDIS actualiza esta estructura con un nuevo identificador de filtro.
Observaciones
Los filtros de recepción NDIS se usan en las siguientes interfaces NDIS:
NDIS Packet Coalescing. 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.
cola de máquinas virtuales (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.
La solicitud de método OID de OID_RECEIVE_FILTER_SET_FILTER es obligatoria para los controladores de miniporte que admiten el fusión de paquetes NDIS, SR-IOV o interfaz VMQ.
El controlador que se sobrepone inicializa la estructura NDIS_RECEIVE_FILTER_PARAMETERS con su configuración de filtro solicitada. NDIS asigna un identificador de filtro en el filterId miembro de la estructura NDIS_RECEIVE_FILTER_PARAMETERS y pasa la solicitud de método al controlador de miniport subyacente.
Cada filtro establecido en una cola de recepción tiene un identificador de filtro único para un adaptador de red. Es decir, los identificadores de filtro no se duplican en distintas colas que administra el adaptador de red. Cuando NDIS recibe una solicitud OID para establecer un filtro en una cola de recepción, comprueba los parámetros de filtro. Una vez que NDIS asigna los recursos necesarios y el identificador de filtro, envía la solicitud OID al adaptador de red subyacente. Si el adaptador de red puede asignar correctamente los recursos de hardware y software necesarios para el filtro, completa la solicitud OID con un estado devuelto de NDIS_STATUS_SUCCESS.
Nota a partir de NDIS 6.30, el filtro de recepción de fusión de paquetes solo se admite en la cola de recepción predeterminada del adaptador de red. Esta cola de recepción tiene un identificador de NDIS_DEFAULT_RECEIVE_QUEUE_ID.
El controlador de miniport debe conservar los identificadores de filtro para los filtros de recepción asignados. NDIS usa el identificador de un filtro en solicitudes OID posteriores para cambiar los parámetros de filtro de recepción o borrar el filtro de recepción.
Después de que un controlador de miniporte reciba una solicitud de OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE y tenga filtros establecidos en la cola, la cola se encuentra en el estado En ejecución. En este estado, el controlador de miniporte puede iniciar indicaciones de paquetes en la cola llamando a NdisMIndicateReceiveNetBufferLists.
Instrucciones adicionales para la interfaz de SR-IOV
Los siguientes puntos se aplican a los controladores de miniportar que admiten la interfaz SR-IOV:
Para la interfaz SR-IOV, se crea una cola de recepción en un puerto virtual predeterminado o no predeterminado (VPort).
Nota a partir de Windows Server 2012, la interfaz SR-IOV solo admite la cola de recepción predeterminada de un VPort.
Después de asignar un SR-IOV VPort a través de una solicitud de conjunto de OID de OID_NIC_SWITCH_CREATE_VPORT, los controladores que se sobreponen pueden establecer filtros en VPort con solicitudes OID de OID_RECEIVE_FILTER_SET_FILTER.
Nota Solo el controlador sobreasignado que asignó VPort puede establecer un filtro en ese VPort.
Dado que el VPort predeterminado siempre existe, los controladores demasiado excesivos siempre pueden establecer un filtro en el VPort predeterminado.
Cuando se crea el VPort, no se establecen filtros de recepción en él. En este caso, el controlador de miniporte no debe indicar ningún paquete de recepción en ese VPort antes de que el controlador de miniporte reciba una solicitud OID de OID_RECEIVE_FILTER_SET_FILTER para VPort. Una vez emitida esta solicitud de OID, el controlador de miniporte puede indicar paquetes en ese VPort.
Nota Si el controlador de miniporte indica paquetes en un VPort mientras procesa una solicitud OID de OID_RECEIVE_FILTER_SET_FILTER, debe completar la solicitud OID y devolver un código de estado NDIS_STATUS_SUCCESS.
Instrucciones adicionales para la interfaz VMQ
Los siguientes puntos se aplican a los controladores de miniportar que admiten la interfaz VMQ:
Después de asignar una cola de recepción de VMQ, los controladores de exceso pueden establecer filtros en la cola de recepción con solicitudes OID de OID_RECEIVE_FILTER_SET_FILTER.
Nota Solo el controlador de protocolo que asignó una cola de recepción puede establecer un filtro en esa cola.
Dado que la cola predeterminada siempre existe, los controladores de exceso siempre pueden establecer un filtro en la cola predeterminada. Si el adaptador de red admite una cola de colocación, los controladores que se superponen pueden establecer un filtro en la cola de colocación.
Los controladores demasiado excesivos no poseen las colas predeterminadas ni quitan. Por lo tanto, todos los controladores de protocolo que están enlazados a un adaptador de red usan la cola predeterminada o drop.
Cuando se crea la cola de recepción, no se establecen filtros de recepción en ella. En este caso, el controlador de miniporte no debe indicar ningún paquete de recepción en esa cola de recepción antes de que el controlador de miniporte reciba una solicitud OID de OID_RECEIVE_FILTER_SET_FILTER para la cola de recepción. Una vez emitida esta solicitud de OID, el controlador de miniporte puede indicar paquetes en esa cola de recepción.
Nota Si el controlador de miniporte indica paquetes en una cola mientras procesa una solicitud OID de OID_RECEIVE_FILTER_SET_FILTER, debe completar la solicitud OID y devolver un código de estado NDIS_STATUS_SUCCESS.
Códigos de estado de retorno
El controlador de miniport devuelve uno de los siguientes códigos de estado para la solicitud de método OID de OID_RECEIVE_FILTER_SET_FILTER:
NDIS_STATUS_SUCCESS
El filtro se estableció correctamente en la cola. El búfer de información contiene la estructura NDIS_RECEIVE_FILTER_PARAMETERS actualizada.
NDIS_STATUS_PENDING
La solicitud está pendiente de finalización. El código de estado final y los resultados se pasarán al controlador de finalización de solicitudes OID del autor de la llamada.
NDIS_STATUS_INVALID_PARAMETER
Uno o varios de los parámetros que proporcionó el controlador sobreaportado no eran válidos.
NDIS_STATUS_INVALID_LENGTH
El búfer de información era demasiado corto. NDIS establece el DATA. METHOD_INFORMATION. BytesNeeded miembro de la estructura NDIS_OID_REQUEST al tamaño mínimo del búfer necesario.
NDIS_STATUS_NOT_SUPPORTED
La versión NDIS del controlador de miniport es una versión anterior a la 6.20.
NDIS_STATUS_FAILURE
Error en la solicitud por otros motivos.
Requisitos
Versión |
Se admite en NDIS 6.20 y versiones posteriores. |
Encabezado |
Ntddndis.h (include Ndis.h) |
Consulte también
NdisMIndicateReceiveNetBufferLists
NDIS_RECEIVE_FILTER_PARAMETERS
NET_BUFFER_LIST_RECEIVE_FILTER_ID