Compartir a través de


estructura NDIS_RECEIVE_THROTTLE_PARAMETERS (ndis.h)

La estructura NDIS_RECEIVE_THROTTLE_PARAMETERS especifica el número máximo de estructuras de NET_BUFFER_LIST que un controlador de miniporte debe indicar en una llamada a procedimiento diferido (DPC).

Sintaxis

typedef struct _NDIS_RECEIVE_THROTTLE_PARAMETERS {
  ULONG MaxNblsToIndicate;
  ULONG MoreNblsPending : 1;
} NDIS_RECEIVE_THROTTLE_PARAMETERS, *PNDIS_RECEIVE_THROTTLE_PARAMETERS;

Miembros

MaxNblsToIndicate

Número máximo de estructuras de NET_BUFFER_LIST que un controlador de miniporte debe incluir en una indicación de recepción. Si este valor es NDIS_INDICATE_ALL_NBLS, el miniporte puede indicar todas las estructuras NET_BUFFER_LIST que tiene.

MoreNblsPending

Valor que, cuando TRUE, especifica que el controlador de miniport tiene NET_BUFFER_LIST estructuras pendientes después de procesar el número máximo o estructuras que NDIS solicitó en el miembro MaxNblsToIndicate.

Nota Si NDIS establece el miembro MaxNblsToIndicate en NDIS_INDICATE_ALL_NBLS, el controlador de miniport debe establecer MoreNblsPending en FALSE antes de que vuelva del DPC.
 

Observaciones

Los parámetros ReceiveThrottleParameters del MiniportInterruptDPC y funciones de controlador DPC de MiniportMessageInterruptDPC apuntan a una estructura de NDIS_RECEIVE_THROTTLE_PARAMETERS. Esta estructura especifica los parámetros de de limitación lateral de recepción (RST) en NDIS 6.20 y versiones posteriores.

En la entrada al controlador DPC, el miembro MaxNblsToIndicate de la estructura de NDIS_RECEIVE_THROTTLE_PARAMETERS especifica el número máximo de estructuras de NET_BUFFER_LIST que el controlador de miniport debe indicar en el DPC. Si este valor es NDIS_INDICATE_ALL_NBLS, el controlador de miniport puede indicar todas las estructuras NET_BUFFER_LIST que tiene en sus colas.

Una vez que el controlador de miniporte procesa el número máximo especificado de estructuras de NET_BUFFER_LIST, es posible que el controlador de miniporte tenga más paquetes en sus colas de recepción. En este caso, el controlador de minipuerto debe establecer el miembro MoreNblsPending en TRUE y no debe volver a habilitar las interrupciones antes de que vuelva de la DPC. Esto es cierto tanto para interrupciones basadas en línea como para las interrupciones sesgadas de mensajes.

El controlador de miniport debe seguir estas instrucciones cuando el miembro MaxNblsToIndicate esté establecido en NDIS_INDICATE_ALL_NBLS:

  • Un valor de NDIS_INDICATE_ALL_NBLS permite al controlador de miniportar determinar el número de estructuras de NET_BUFFER_LIST que indica en una llamada DPC. Esto proporciona al controlador de miniporte las siguientes opciones:
    • El controlador de miniport puede indicar todas sus estructuras de NET_BUFFER_LIST pendientes de sus colas de recepción.
    • El controlador de miniport puede limitar el número de estructuras de NET_BUFFER_LIST que indica en función de su heurística para evitar gastar una cantidad excesiva de tiempo dentro de una llamada DPC.

      En concreto, el controlador debe usar su heurística para evitar un tiempo de espera de DPC, que es la cantidad máxima de tiempo que el controlador puede pasar en su DPC. Cuando expira el intervalo de tiempo de espera, se produce una comprobación de errores en el sistema. A partir de Windows 7, el tiempo de espera de DPC es de 10 segundos.

  • El controlador de miniport debe establecer MoreNblsPending en FALSE antes de que vuelva de DPC. El controlador debe hacerlo independientemente de si tiene estructuras NET_BUFFER_LIST pendientes en sus colas de recepción que no se han indicado.
Si el controlador de miniporte usa interrupciones basadas en línea o un único mensaje MSI, debe realizar el procesamiento de interrupciones para todos los orígenes de interrupción que tiene. Si hay paquetes en la cola de recepción, debe indicar como máximo estructuras de NET_BUFFER_LIST MaxNblsToIndicate a NDIS con el función NdisMIndicateReceiveNetBufferLists.

Si el controlador de miniporte usa varios mensajes MSI para diferenciar orígenes de interrupción diferentes, debe omitir el ReceiveThrottleParameters miembro para los mensajes MSI que no están asociados a indicaciones de recepción. En el caso de los mensajes de interrupción de recepción, el controlador de miniport debe indicar como máximo estructuras de NET_BUFFER_LIST MaxNblsToIndicate.

Nota Si el controlador de miniporta establece MoreNblsPending, NDIS volverá a llamar al DPC. Sin embargo, no se define la cantidad de tiempo que pasa antes de la siguiente llamada DPC. Además, la cantidad de tiempo entre el enrutamiento inicial del servicio de interrupción (ISR) devuelve y el DPC no está definido. Una vez que el controlador de miniporte establece MoreNblsPending, debe controlar el siguiente DPC, ya que controló el primer DPC.
 

Requisitos

Requisito Valor
cliente mínimo admitido Se admite en NDIS 6.20 y versiones posteriores.
encabezado de ndis.h (incluya Ndis.h)

Consulte también

miniportInterruptDPC

MiniportMessageInterruptDPC

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists