Freigeben über


NDIS_RECEIVE_THROTTLE_PARAMETERS Struktur (ndis.h)

Die NDIS_RECEIVE_THROTTLE_PARAMETERS-Struktur gibt die maximale Anzahl von NET_BUFFER_LIST Strukturen an, die ein Miniporttreiber in einem Verzögerten Prozeduraufruf (DPC) angeben soll.

Syntax

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

Angehörige

MaxNblsToIndicate

Die maximale Anzahl von NET_BUFFER_LIST Strukturen, die ein Miniporttreiber in eine Empfangsanzeige aufnehmen sollte. Wenn dieser Wert NDIS_INDICATE_ALL_NBLS ist, kann der Miniport alle NET_BUFFER_LIST Strukturen angeben, über die er verfügt.

MoreNblsPending

Ein Wert, der bei TRUE-angibt, dass der Miniporttreiber NET_BUFFER_LIST Strukturen aufweist, die nach dem Verarbeiten der maximierten Anzahl oder Strukturen, die NDIS im MaxNblsToIndicate Member angefordert hat.

Hinweis Wenn NDIS den MaxNblsToIndicate Member auf NDIS_INDICATE_ALL_NBLS festlegen, sollte der Miniporttreiber MoreNblsPending auf FALSE- festlegen, bevor er aus dem DPC zurückgegeben wird.
 

Bemerkungen

Die ReceiveThrottleParameters Parameter des MiniportInterruptDPC- und des MiniportMessageInterruptDPC DPC-Handlerfunktionen verweisen auf eine NDIS_RECEIVE_THROTTLE_PARAMETERS Struktur. Diese Struktur gibt die Parameter von Receive Side Throttle (RST) in NDIS 6.20 und höher an.

Beim Eintrag zum DPC-Handler gibt der MaxNblsToIndicate Member der NDIS_RECEIVE_THROTTLE_PARAMETERS-Struktur die maximale Anzahl von NET_BUFFER_LIST Strukturen an, die der Miniporttreiber im DPC angeben soll. Wenn dieser Wert NDIS_INDICATE_ALL_NBLS ist, kann der Miniporttreiber alle NET_BUFFER_LIST Strukturen angeben, die er in seinen Warteschlangen hat.

Nachdem der Miniporttreiber die angegebene maximale Anzahl von NET_BUFFER_LIST Strukturen verarbeitet hat, verfügt der Miniporttreiber möglicherweise über mehr Pakete in den Empfangswarteschlangen. In diesem Fall sollte der Miniporttreiber die MoreNblsPending Member auf TRUE- festlegen, und er sollte keine Unterbrechungen erneut aktivieren, bevor er vom DPC zurückgegeben wird. Dies gilt sowohl für zeilenbasierte als auch für Nachrichtenvoreingenommene Unterbrechungen.

Der Miniporttreiber sollte diese Richtlinien befolgen, wenn das MaxNblsToIndicate- Element auf NDIS_INDICATE_ALL_NBLS festgelegt ist:

  • Ein Wert von NDIS_INDICATE_ALL_NBLS ermöglicht es dem Miniporttreiber, die Anzahl der NET_BUFFER_LIST Strukturen zu bestimmen, die er in einem DPC-Aufruf angibt. Dadurch erhält der Miniporttreiber die folgenden Optionen:
    • Der Miniporttreiber kann alle ausstehenden NET_BUFFER_LIST Strukturen aus den Empfangswarteschlangen anzeigen.
    • Der Miniporttreiber kann die Anzahl der NET_BUFFER_LIST Strukturen einschränken, die er basierend auf seinen Heuristiken angibt, um eine übermäßige Zeit innerhalb eines DPC-Aufrufs zu vermeiden.

      Insbesondere sollte der Treiber seine Heuristik verwenden, um ein DPC-Timeout zu vermeiden, was die maximale Zeit, die der Treiber in seinem DPC verbringen kann. Wenn das Timeoutintervall abläuft, tritt eine Fehlerüberprüfung auf dem System auf. Ab Windows 7 beträgt das DPC-Timeout 10 Sekunden.

  • Der Miniporttreiber sollte MoreNblsPending auf FALSE- festlegen, bevor er vom DPC zurückgegeben wird. Der Treiber sollte dies unabhängig davon tun, ob er NET_BUFFER_LIST Strukturen in den Empfangswarteschlangen aussteht, die nicht angegeben wurden.
Wenn der Miniporttreiber zeilenbasierte Unterbrechungen oder eine einzelne MSI-Nachricht verwendet, sollte er die Interruptverarbeitung für alle von ihr verwendeten Interruptquellen ausführen. Wenn es Pakete in der Empfangswarteschlange gibt, sollte es höchstens MaxNblsToIndicate- NET_BUFFER_LIST Strukturen mit der NDIS mit dem NdisMIndicateReceiveNetBufferLists Funktion.

Wenn der Miniporttreiber mehrere MSI-Nachrichten verwendet, um unterschiedliche Interruptquellen zu unterscheiden, sollte der ReceiveThrottleParameters Mitglied für MSI-Nachrichten ignoriert werden, die nicht mit Empfangsanzeigen verknüpft sind. Für den Empfang von Interruptnachrichten sollte der Miniporttreiber höchstens MaxNblsToIndicate- NET_BUFFER_LIST Strukturen angeben.

Hinweis Wenn der Miniporttreiber MoreNblsPendingfestlegt, ruft NDIS den DPC erneut auf. Die Zeitspanne, die vor dem nächsten DPC-Aufruf übergeben wird, ist jedoch nicht definiert. Außerdem wird die Zeitspanne zwischen dem anfänglichen Interruptdienstrouting (ISR) und dem DPC nicht definiert. Nachdem der Miniporttreiber MoreNblsPendingfestgelegt hat, sollte er den nächsten DPC behandeln, da er den ersten DPC verarbeitet hat.
 

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt in NDIS 6.20 und höher.
Header- ndis.h (include Ndis.h)

Siehe auch

MiniportInterruptDPC-

MiniportMessageInterruptDPC

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists