NDIS_RECEIVE_THROTTLE_PARAMETERS struttura (ndis.h)

La struttura NDIS_RECEIVE_THROTTLE_PARAMETERS specifica il numero massimo di strutture NET_BUFFER_LIST che un driver miniport deve indicare in una chiamata di procedura posticipata (DPC).

Sintassi

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

Members

MaxNblsToIndicate

Numero massimo di strutture NET_BUFFER_LIST che un driver miniport deve includere in un'indicazione di ricezione. Se questo valore è NDIS_INDICATE_ALL_NBLS, il miniport può indicare tutte le strutture NET_BUFFER_LIST che ha.

MoreNblsPending

Valore che, quando TRUE, specifica che il driver miniport ha NET_BUFFER_LIST strutture in sospeso dopo aver elaborato il numero massimo o le strutture richieste da NDIS nel membro MaxNblsToIndicate .

Nota Se NDIS imposta il membro MaxNblsToIndicate su NDIS_INDICATE_ALL_NBLS, il driver miniport deve impostare MoreNblsPending su FALSE prima che venga restituito dal DPC.
 

Commenti

Parametri ReceiveThrottleParameters di MiniportInterruptDPC e MiniportMessageInterruptDPC Le funzioni del gestore DPC puntano a una struttura NDIS_RECEIVE_THROTTLE_PARAMETERS. Questa struttura specifica i parametri della RST (Receive Side Throttle) in NDIS 6.20 e versioni successive.

Nella voce del gestore DPC il membro MaxNblsToIndicate della struttura NDIS_RECEIVE_THROTTLE_PARAMETERS specifica il numero massimo di strutture NET_BUFFER_LIST che il driver miniport deve indicare nel DPC. Se questo valore è NDIS_INDICATE_ALL_NBLS, il driver miniport può indicare tutte le strutture NET_BUFFER_LIST presenti nelle code.

Dopo che il driver miniport elabora il numero massimo specificato di strutture NET_BUFFER_LIST, il driver miniport potrebbe avere più pacchetti nelle code di ricezione. In questo caso, il driver miniport deve impostare il membro MoreNblsPending su TRUE e non deve riattivare gli interruzioni prima che venga restituito dal DPC. Questo vale sia per gli interruzioni di tipo line-based che per i messaggi con pregiudizi.

Il driver miniport deve seguire queste linee guida quando il membro MaxNblsToIndicate è impostato su NDIS_INDICATE_ALL_NBLS:

  • Un valore di NDIS_INDICATE_ALL_NBLS consente al driver miniport di determinare il numero di strutture NET_BUFFER_LIST che indica in una chiamata DPC. In questo modo il driver miniport offre le opzioni seguenti:
    • Il driver miniport può indicare tutte le strutture NET_BUFFER_LIST in sospeso dalle code di ricezione.
    • Il driver miniport può limitare il numero di strutture NET_BUFFER_LIST che indica in base ai relativi euristici per evitare di spendere un periodo di tempo eccessivo all'interno di una chiamata DPC.

      In particolare, il driver deve usare le sue euristiche per evitare un timeout DPC, ovvero la quantità massima di tempo che il driver può trascorrere nel proprio DPC. Al termine dell'intervallo di timeout, si verifica un controllo di bug nel sistema. A partire da Windows 7, il timeout DPC è di 10 secondi.

  • Il driver miniport deve impostare MoreNblsPending su FALSE prima che venga restituito dal DPC. Il driver deve eseguire questa operazione indipendentemente dal fatto che abbia strutture NET_BUFFER_LIST in sospeso nelle code di ricezione che non sono state indicate.
Se il driver miniport usa interruzioni basate su riga o un singolo messaggio msi, deve eseguire l'elaborazione degli interruzioni per tutte le origini di interruzione presenti. Se nella coda di ricezione sono presenti pacchetti, deve indicare alla maggior parte delle strutture MaxNblsToIndicate NET_BUFFER_LIST con NDIS Funzione NdisMIndicateReceiveNetBufferLists .

Se il driver miniport usa più messaggi MSI per distinguere origini di interruzioni diverse, deve ignorare il membro ReceiveThrottleParameters per i messaggi MSI che non sono associati alle indicazioni di ricezione. Per ricevere messaggi di interruzione, il driver miniport deve indicare alla maggior parte delle strutture MaxNblsToIndicate NET_BUFFER_LIST.

Nota Se il driver miniport imposta MoreNblsPending, NDIS chiamerà di nuovo il DPC. Tuttavia, la quantità di tempo che passa prima della chiamata DPC successiva non è definita. Inoltre, la quantità di tempo tra il routing del servizio di interruzione iniziale (ISR) restituisce e il DPC non è definito. Dopo che il driver miniport imposta MoreNblsPending, deve gestire il DPC successivo man mano che gestisce il primo DPC.
 

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.20 e versioni successive.
Intestazione ndis.h (includere Ndis.h)

Vedi anche

MiniportInterruptDPC

MiniportMessageInterruptDPC

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists