Share via


NDIS_RECEIVE_THROTTLE_PARAMETERS structure (ndis.h)

La structure NDIS_RECEIVE_THROTTLE_PARAMETERS spécifie le nombre maximal de structures NET_BUFFER_LIST qu’un pilote miniport doit indiquer dans un appel de procédure différée (DPC).

Syntaxe

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

Membres

MaxNblsToIndicate

Nombre maximal de structures NET_BUFFER_LIST qu’un pilote de miniport doit inclure dans une indication de réception. Si cette valeur est NDIS_INDICATE_ALL_NBLS, le miniport peut indiquer toutes les structures NET_BUFFER_LIST dont il dispose.

MoreNblsPending

Valeur qui, lorsque la valeur est TRUE, spécifie que le pilote miniport a NET_BUFFER_LIST structures en attente après avoir traité le nombre maximal ou les structures demandées par NDIS dans le membre MaxNblsToIndicate .

Note Si NDIS définit le membre MaxNblsToIndicate sur NDIS_INDICATE_ALL_NBLS, le pilote de miniport doit définir MoreNblsPending sur FALSE avant qu’il ne retourne à partir du DPC.
 

Remarques

Paramètres ReceiveThrottleParameters de MiniportInterruptDPC et MiniportMessageInterruptDPC Les fonctions de gestionnaire DPC pointent vers une structure NDIS_RECEIVE_THROTTLE_PARAMETERS. Cette structure spécifie les paramètres de la limitation côté réception (RST) dans NDIS 6.20 et versions ultérieures.

Lors de l’entrée dans le gestionnaire DPC, le membre MaxNblsToIndicate de la structure NDIS_RECEIVE_THROTTLE_PARAMETERS spécifie le nombre maximal de structures NET_BUFFER_LIST que le pilote miniport doit indiquer dans le DPC. Si cette valeur est NDIS_INDICATE_ALL_NBLS, le pilote miniport peut indiquer toutes les structures NET_BUFFER_LIST qu’il a dans ses files d’attente.

Une fois que le pilote miniport a traite le nombre maximal spécifié de structures NET_BUFFER_LIST, le pilote miniport peut avoir plus de paquets dans ses files d’attente de réception. Dans ce cas, le pilote miniport doit définir le membre MoreNblsPending sur TRUE et il ne doit pas réactiver les interruptions avant qu’il ne revienne du DPC. Cela est vrai pour les interruptions basées sur les lignes et les messages biaisés.

Le pilote miniport doit suivre ces instructions lorsque le membre MaxNblsToIndicate est défini sur NDIS_INDICATE_ALL_NBLS :

  • La valeur NDIS_INDICATE_ALL_NBLS permet au pilote miniport de déterminer le nombre de structures NET_BUFFER_LIST qu’il indique dans un appel DPC. Cela donne au pilote miniport les options suivantes :
    • Le pilote miniport peut indiquer toutes ses structures de NET_BUFFER_LIST en attente à partir de ses files d’attente de réception.
    • Le pilote miniport peut limiter le nombre de structures de NET_BUFFER_LIST qu’il indique en fonction de son heuristique pour éviter de passer trop de temps dans un appel DPC.

      En particulier, le pilote doit utiliser ses heuristiques pour éviter un délai d’expiration DPC, qui est le temps maximal que le pilote peut passer dans son DPC. Lorsque l’intervalle de délai d’expiration expire, une vérification d’erreur se produit sur le système. À compter de Windows 7, le délai DPC est de 10 secondes.

  • Le pilote miniport doit définir MoreNblsPending sur FALSE avant de retourner à partir du DPC. Le pilote doit le faire indépendamment du fait qu’il ait des structures NET_BUFFER_LIST en attente dans ses files d’attente de réception qui n’ont pas été indiquées.
Si le pilote miniport utilise des interruptions basées sur des lignes ou un seul message MSI, il doit effectuer le traitement des interruptions pour toutes les sources d’interruption dont il dispose. S’il existe des paquets dans la file d’attente de réception, cela doit indiquer au maximum MaxNblsToIndicate NET_BUFFER_LIST structures à NDIS avec le Fonction NdisMIndicateReceiveNetBufferLists .

Si le pilote miniport utilise plusieurs messages MSI pour différencier différentes sources d’interruption, il doit ignorer le membre ReceiveThrottleParameters pour les messages MSI qui ne sont pas associés à des indications de réception. Pour recevoir des messages d’interruption, le pilote miniport doit indiquer au maximum MaxNblsToIndicate NET_BUFFER_LIST structures.

Note Si le pilote miniport définit MoreNblsPending, NDIS appelle à nouveau le DPC. Toutefois, la durée qui s’écoule avant l’appel DPC suivant n’est pas définie. En outre, la durée entre le routage du service d’interruption (ISR) initial retourne et la DPC n’est pas définie. Une fois que le pilote miniport définit MoreNblsPending, il doit gérer la DPC suivante comme il a géré la première DPC.
 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.20 et versions ultérieures.
En-tête ndis.h (inclure Ndis.h)

Voir aussi

MiniportInterruptDPC

MiniportMessageInterruptDPC

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists