estrutura NDIS_RECEIVE_THROTTLE_PARAMETERS (ndis.h)

A estrutura NDIS_RECEIVE_THROTTLE_PARAMETERS especifica o número máximo de estruturas de NET_BUFFER_LIST que um driver de miniporto deve indicar em uma DPC (chamada de procedimento adiada).

Sintaxe

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

Membros

MaxNblsToIndicate

O número máximo de estruturas de NET_BUFFER_LIST que um driver de miniporte deve incluir em uma indicação de recebimento. Se esse valor for NDIS_INDICATE_ALL_NBLS, o miniporto poderá indicar todas as estruturas de NET_BUFFER_LIST que ele tem.

MoreNblsPending

Um valor que, quando TRUE, especifica que o driver de miniporto tem NET_BUFFER_LIST estruturas pendentes depois de processar o número máximo ou as estruturas solicitadas pelo NDIS no membro MaxNblsToIndicate .

Nota Se o NDIS definir o membro MaxNblsToIndicate como NDIS_INDICATE_ALL_NBLS, o driver de miniporto deverá definir MoreNblsPending como FALSE antes de retornar do DPC.
 

Comentários

Os parâmetros ReceiveThrottleParameters do MiniportInterruptDPC e do MiniportMessageInterruptDPC As funções do manipulador DPC apontam para uma estrutura de NDIS_RECEIVE_THROTTLE_PARAMETERS. Essa estrutura especifica os parâmetros de RST (Acelerador Lateral de Recebimento) no NDIS 6.20 e posterior.

Na entrada do manipulador DPC, o membro MaxNblsToIndicate da estrutura NDIS_RECEIVE_THROTTLE_PARAMETERS especifica o número máximo de estruturas de NET_BUFFER_LIST que o driver de miniporto deve indicar no DPC. Se esse valor for NDIS_INDICATE_ALL_NBLS, o driver de miniporto poderá indicar todas as estruturas de NET_BUFFER_LIST que ele tem em suas filas.

Depois que o driver de miniporto processar o número máximo especificado de estruturas de NET_BUFFER_LIST, o driver de miniporto poderá ter mais pacotes em suas filas de recebimento. Nesse caso, o driver de miniporto deve definir o membro MoreNblsPending como TRUE e não deve habilitar novamente as interrupções antes de retornar do DPC. Isso é verdadeiro para interrupções tendenciosas de linha e mensagem.

O driver de miniporte deve seguir estas diretrizes quando o membro MaxNblsToIndicate estiver definido como NDIS_INDICATE_ALL_NBLS:

  • Um valor de NDIS_INDICATE_ALL_NBLS permite que o driver de miniporte determine o número de estruturas NET_BUFFER_LIST que ele indica em uma chamada DPC. Isso fornece ao driver de miniporto as seguintes opções:
    • O driver de miniporte pode indicar todas as suas estruturas de NET_BUFFER_LIST pendentes de suas filas de recebimento.
    • O driver de miniporto pode limitar o número de estruturas de NET_BUFFER_LIST que ele indica com base em sua heurística para evitar passar um tempo excessivo dentro de uma chamada DPC.

      Em particular, o driver deve usar sua heurística para evitar um tempo limite de DPC, que é a quantidade máxima de tempo que o driver pode passar em seu DPC. Quando o intervalo de tempo limite expira, ocorre uma verificação de bugs no sistema. A partir do Windows 7, o tempo limite do DPC é de 10 segundos.

  • O driver de miniporte deve definir MoreNblsPending como FALSE antes de retornar do DPC. O driver deve fazer isso independentemente de ter estruturas de NET_BUFFER_LIST pendentes em suas filas de recebimento que não foram indicadas.
Se o driver de miniporto estiver usando interrupções baseadas em linha ou uma única mensagem MSI, ele deverá fazer o processamento de interrupção para todas as fontes de interrupção que ele tem. Se houver pacotes na fila de recebimento, ele deverá indicar, no máximo, MaxNblsToIndicate NET_BUFFER_LIST estruturas para o NDIS com o Função NdisMIndicateReceiveNetBufferLists .

Se o driver de miniporto estiver usando várias mensagens MSI para diferenciar diferentes fontes de interrupção, ele deverá ignorar o membro ReceiveThrottleParameters para mensagens MSI que não estão associadas a indicações de recebimento. Para receber mensagens de interrupção, o driver de miniporto deve indicar, no máximo , MaxNblsToIndicate NET_BUFFER_LIST estruturas.

Nota Se o driver de miniporto definir MoreNblsPending, o NDIS chamará o DPC novamente. No entanto, a quantidade de tempo que passa antes da próxima chamada DPC não é definida. Além disso, a quantidade de tempo entre o ISR (roteamento de serviço de interrupção inicial) retorna e o DPC não está definido. Depois que o driver de miniporto definir MoreNblsPending, ele deverá lidar com o próximo DPC, pois ele lidou com o primeiro DPC.
 

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.20 e posterior.
Cabeçalho ndis.h (inclua Ndis.h)

Confira também

MiniportInterruptDPC

MiniportMessageInterruptDPC

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists