Compartir a través de


OID_RECEIVE_FILTER_ALLOCATE_QUEUE

El uso excesivo 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 del método OID, el informationBuffer miembro de la estructura de NDIS_OID_REQUEST contiene un puntero a una estructura de 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 miniporte NDIS 6.20 y versiones posteriores. Es obligatorio para los controladores de miniportar que admiten la interfaz de cola de máquinas virtuales (VMQ).

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

Nota El controlador de sobreslización puede establecer las marcas 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 otras 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 controlarlo correctamente, la cola se encuentra en estado Pausado.

El controlador que se sobrepone 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 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 miniporte puede asignar correctamente los recursos de hardware y software necesarios para la cola de recepción, completa la solicitud OID devolviendo NDIS_STATUS_SUCCESS.

El controlador de miniport debe conservar los identificadores de cola para 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 miniportar 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 OID para notificar al controlador de miniportar que la asignación se ha completado para el lote actual de colas de recepción.

El controlador de miniporte 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 de controladores ni se conservan en la cola.

Los controladores de uso excesivo usan solicitudes OID de OID_RECEIVE_FILTER_FREE_QUEUE para liberar colas que asignan.

Códigos de estado de retorno

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

Código de estado Descripción

NDIS_STATUS_SUCCESS

La cola se asignó correctamente. El búfer de información contiene la estructura 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 sobreaportado no eran válidos.

NDIS_STATUS_INVALID_LENGTH

El búfer de información era demasiado corto. NDIS establece el DATA.METHOD_INFORMATION.miembro bytesNeeded de la estructura NDIS_OID_REQUEST con el tamaño mínimo del búfer necesario.

NDIS_STATUS_NOT_SUPPORTED

La versión NDIS del controlador de miniport 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 (include 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