Compartir a través de


OID_RECEIVE_FILTER_ALLOCATE_QUEUE

El exceso de controladores emite solicitudes de método de identificador de objeto (OID) de OID_RECEIVE_FILTER_ALLOCATE_QUEUE para asignar una cola que tiene un conjunto inicial de parámetros de configuración.

El miembro InformationBuffer de la estructura NDIS_OID_REQUEST contiene un puntero a una estructura de NDIS_RECEIVE_QUEUE_PARAMETERS . Después de una devolución correcta de la solicitud de método OID, el miembro InformationBuffer de la estructura NDIS_OID_REQUEST contiene un puntero a una estructura NDIS_RECEIVE_QUEUE_PARAMETERS que tiene un nuevo identificador de cola.

Observaciones

La solicitud de método OID de OID_RECEIVE_FILTER_ALLOCATE_QUEUE es opcional para los controladores de minipuerto NDIS 6.20 y versiones posteriores. Es obligatorio para los controladores de minipuerto que admiten la interfaz de cola de máquinas virtuales (VMQ).

El controlador de sobreaprovisionamiento inicializa la estructura de NDIS_RECEIVE_QUEUE_PARAMETERS con su configuración de cola solicitada. NDIS asigna un identificador de cola en el miembro QueueId de la estructura NDIS_RECEIVE_QUEUE_PARAMETERS y pasa la solicitud de método al controlador de minipuerto.

Nota El controlador de sobreaprovisionamiento puede establecer las marcas de NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION y NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED en el miembro Flags de la estructura NDIS_RECEIVE_QUEUE_PARAMETERS . Las demás marcas no se usan para la asignación de colas.

Después de emitir un controlador de miniporte una solicitud de OID de OID_RECEIVE_FILTER_ALLOCATE_QUEUE y controlarla correctamente, la cola se encuentra en estado Pausado.

El controlador de sobreaprovisionamiento debe usar el identificador de cola que proporciona NDIS en las solicitudes OID posteriores, por ejemplo, para modificar los parámetros de la cola o liberar la cola. El identificador de cola también se incluye en los datos fuera de banda (OOB) en todas las estructuras de NET_BUFFER_LIST asociadas a la cola. Los controladores usan la macro NET_BUFFER_LIST_RECEIVE_QUEUE_ID para recuperar el identificador de cola en una estructura de NET_BUFFER_LIST .

Cuando NDIS recibe una solicitud de OID para asignar una cola de recepción, comprueba los parámetros de la cola. Una vez que NDIS asigna los recursos necesarios y el identificador de cola, envía la solicitud OID al controlador de miniport subyacente. El identificador de cola es único para el adaptador de red asociado.

Si el controlador de minipuerto puede asignar correctamente los recursos de hardware y software necesarios para la cola de recepción, completa la solicitud de OID devolviendo NDIS_STATUS_SUCCESS.

El controlador de minipuerto debe conservar los identificadores de cola de las colas de recepción asignadas. NDIS usa el identificador de cola de una cola de recepción para las llamadas posteriores al controlador de miniporte para establecer un filtro de recepción en la cola de recepción, cambiar los parámetros de la cola de recepción o liberar la cola de recepción.

Después de que un controlador sobreasigne una o varias colas de recepción y, opcionalmente, establezca los filtros iniciales, debe emitir OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE establecer solicitudes de OID para notificar al controlador de minipuerto que la asignación está completa para el lote actual de colas de recepción.

El controlador de minipuerto no debe conservar ningún paquete en una cola de recepción si no hay ningún filtro establecido en esa cola. Si una cola nunca tenía ningún filtro establecido o se borraron todos los filtros, la cola debe estar vacía y se deben descartar los paquetes. Es decir, los paquetes no se indican en la pila del controlador ni se conservan en la cola.

Los controladores demasiado excesivos usan solicitudes de OID de OID_RECEIVE_FILTER_FREE_QUEUE para liberar colas que asignan.

Códigos de estado de devolución

NDIS o el controlador de minipuerto devuelve uno de los siguientes códigos de estado para la solicitud de método OID de OID_RECEIVE_FILTER_ALLOCATE_QUEUE.

status code Descripción

NDIS_STATUS_SUCCESS

La cola se asignó correctamente. El búfer de información contiene la estructura de NDIS_RECEIVE_QUEUE_PARAMETERS actualizada.

NDIS_STATUS_PENDING

La solicitud está pendiente de finalización. El código de estado final y los resultados se pasarán a un 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 de sobreaprovisionamiento no eran válidos.

NDIS_STATUS_INVALID_LENGTH

El búfer de información era demasiado corto. NDIS establece los DATOS. METHOD_INFORMATION. Miembro BytesNeeded 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 minipuerto es anterior a la versión 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 (incluye Ndis.h)

Consulte también

NDIS_OID_REQUEST

NET_BUFFER_LIST

NET_BUFFER_LIST_RECEIVE_QUEUE_ID

OID_RECEIVE_FILTER_FREE_QUEUE

OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE

NDIS_RECEIVE_QUEUE_PARAMETERS