Partilhar via


NDIS_RECEIVE_THROTTLE_PARAMETERS estrutura (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 adiado).

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 NET_BUFFER_LIST que um driver de miniporto 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 estruturas NET_BUFFER_LIST pendentes depois de processar o número máximo ou estruturas solicitadas pelo NDIS no membro MaxNblsToIndicate do.

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

Observações

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

Na entrada do manipulador de DPC, o MaxNblsToIndicate membro 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 para TRUE e não deve reabilitar interrupções antes de retornar do DPC. Isso é verdadeiro para interrupções tendenciosas de linha e de mensagem.

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

  • Um valor de NDIS_INDICATE_ALL_NBLS permite que o driver de miniporto determine o número de estruturas de NET_BUFFER_LIST que ele indica em uma chamada DPC. Isso fornece ao driver de miniporto as seguintes opções:
    • O driver de miniporto 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 gastar um tempo excessivo em uma chamada DPC.

      Em particular, o driver deve usar sua heurística para evitar um tempo limite de DPC, que é o tempo máximo 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 de DPC é de 10 segundos.

  • O driver de miniporto deve definir MoreNblsPending para 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 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 a ReceiveThrottleParameters membro 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 estruturas de NET_BUFFER_LIST MaxNblsToIndicate.

Observação 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 de 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
de cliente com suporte mínimo Com suporte no NDIS 6.20 e posterior.
cabeçalho ndis.h (inclua Ndis.h)

Consulte também

miniportInterruptDPC

miniportMessageInterruptDPC

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists