Compartir a través de


estructura de 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

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

MoreNblsPending

Valor que, cuando es TRUE, especifica que el controlador de minipuerto 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 miniporte debe establecer MoreNblsPending en FALSE antes de que vuelva del DPC.
 

Comentarios

Parámetros ReceiveThrottleParameters de MiniportInterruptDPC y MiniportMessageInterruptDPC Las funciones del controlador DPC apuntan a una estructura de NDIS_RECEIVE_THROTTLE_PARAMETERS. Esta estructura especifica los parámetros 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 NDIS_RECEIVE_THROTTLE_PARAMETERS especifica el número máximo de estructuras de NET_BUFFER_LIST que el controlador de miniporte debe indicar en el DPC. Si este valor es NDIS_INDICATE_ALL_NBLS, el controlador de minipuerto 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, el controlador de miniporte podría tener 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 las interrupciones basadas en líneas como para los mensajes sesgados.

El controlador de minipuerto debe seguir estas directrices 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 minipuerto las siguientes opciones:
    • El controlador de minipuerto puede indicar todas sus estructuras de NET_BUFFER_LIST pendientes de sus colas de recepción.
    • El controlador de minipuerto puede limitar el número de estructuras de NET_BUFFER_LIST que indica en función de su heurística para evitar pasar 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 minipuerto debe establecer MoreNblsPending en FALSE antes de que vuelva del 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 minipuerto 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 MaxNblsToIndicate NET_BUFFER_LIST estructuras 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 miembro ReceiveThrottleParameters para los mensajes MSI que no están asociados con las indicaciones de recepción. En el caso de los mensajes de interrupción de recepción, el controlador de minipuerto debe indicar como máximo estructuras de NET_BUFFER_LIST MaxNblsToIndicate .

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

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con NDIS 6.20 y versiones posteriores.
Encabezado ndis.h (incluya Ndis.h)

Consulte también

MiniportInterruptDPC

MiniportMessageInterruptDPC

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists