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;
Member
MaxNblsToIndicate
Die maximale Anzahl von NET_BUFFER_LIST Strukturen, die ein Miniporttreiber in eine Empfangsanzeige einschließen 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 über NET_BUFFER_LIST Strukturen verfügt, die ausstehen, nachdem er die maximale Anzahl oder Strukturen verarbeitet hat, die NDIS im MaxNblsToIndicate-Element angefordert hat .
Hinweise
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 Einstieg in den 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 in seinen Warteschlangen angeben.
Nachdem der Miniporttreiber die angegebene maximale Anzahl von NET_BUFFER_LIST Strukturen verarbeitet hat, enthält der Miniporttreiber möglicherweise mehr Pakete in seinen Empfangswarteschlangen. In diesem Fall sollte der Miniporttreiber das MoreNblsPending-Element auf TRUE festlegen und Interrupts nicht erneut aktivieren, bevor er vom DPC zurückgegeben wird. Dies gilt sowohl für zeilenbasierte als auch für Nachrichtenvoreingenommene Interrupts.
Der Miniporttreiber sollte diese Richtlinien befolgen, wenn das MaxNblsToIndicate-Element auf NDIS_INDICATE_ALL_NBLS festgelegt ist:
- Der Wert 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. Dies bietet dem Miniporttreiber die folgenden Optionen:
- Der Miniporttreiber kann alle ausstehenden NET_BUFFER_LIST-Strukturen aus seinen Empfangswarteschlangen angeben.
-
Der Miniporttreiber kann die Anzahl der NET_BUFFER_LIST Strukturen begrenzen, die er basierend auf seiner Heuristik angibt, um zu vermeiden, dass ein DPC-Aufruf übermäßig viel Zeit aufwendet.
Insbesondere sollte der Treiber seine Heuristik verwenden, um ein DPC-Timeout zu vermeiden. Dies ist 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 ausstehende NET_BUFFER_LIST Strukturen in seinen Empfangswarteschlangen hat, die nicht angegeben wurden.
Wenn der Miniporttreiber mehrere MSI-Nachrichten verwendet, um verschiedene Interruptquellen zu unterscheiden, sollte er das ReceiveThrottleParameters-Element für MSI-Nachrichten ignorieren, die nicht Empfangsanzeigen zugeordnet sind. Beim Empfangen von Interruptnachrichten sollte der Miniporttreiber höchstens MaxNblsToIndicate NET_BUFFER_LIST-Strukturen angeben.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Unterstützt in NDIS 6.20 und höher. |
Kopfzeile | ndis.h (include Ndis.h) |