структура NDIS_RECEIVE_THROTTLE_PARAMETERS (ndis.h)

Структура NDIS_RECEIVE_THROTTLE_PARAMETERS указывает максимальное число NET_BUFFER_LIST структур, которое драйвер мини-порта должен указать в отложенном вызове процедуры (DPC).

Синтаксис

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

Члены

MaxNblsToIndicate

Максимальное количество NET_BUFFER_LIST структур, которые водитель минипорта должен включать в индикатор получения. Если это значение равно NDIS_INDICATE_ALL_NBLS, минипорт может указать все NET_BUFFER_LIST структуры, которые у него есть.

MoreNblsPending

Значение , указывающее , что драйвер мини-порта NET_BUFFER_LIST структур, ожидающих обработки максимального числа или структур, запрошенных NDIS в элементе MaxNblsToIndicate .

Примечание Если NDIS задает для элемента MaxNblsToIndicate значение NDIS_INDICATE_ALL_NBLS, драйвер мини-порта должен установить для MoreNblsPendingзначение FALSE , прежде чем он возвращается из DPC.
 

Комментарии

Параметры ReceiveThrottleParametersminiportInterruptDPC и MiniportMessageInterruptDPC Функции обработчика DPC указывают на NDIS_RECEIVE_THROTTLE_PARAMETERS структуру. Эта структура задает параметры регулирования на стороне получения (RST) в NDIS 6.20 и более поздних версиях.

При входе в обработчик DPC член MaxNblsToIndicate структуры NDIS_RECEIVE_THROTTLE_PARAMETERS указывает максимальное число NET_BUFFER_LIST структур, которые драйвер мини-порта должен указать в DPC. Если это значение равно NDIS_INDICATE_ALL_NBLS, драйвер мини-порта может указать все NET_BUFFER_LIST структуры, имеющиеся в очередях.

После того как драйвер мини-порта обработает указанное максимальное количество NET_BUFFER_LIST структур, драйвер мини-порта может содержать больше пакетов в очередях получения. В этом случае драйвер мини-порта должен задать для члена MoreNblsPendingзначение TRUE и не должен повторно включать прерывания перед возвратом из DPC. Это относится как к прерываниям на основе строк, так и к предвзятым сообщениям.

Драйвер мини-порта должен следовать этим рекомендациям, если для элемента MaxNblsToIndicate задано значение NDIS_INDICATE_ALL_NBLS:

  • Значение NDIS_INDICATE_ALL_NBLS позволяет драйверу мини-порта определить количество NET_BUFFER_LIST структур, которые он указывает в вызове DPC. Это дает драйверу мини-порта следующие параметры:
    • Драйвер мини-порта может указать все ожидающие структуры NET_BUFFER_LIST из очередей получения.
    • Драйвер мини-порта может ограничить количество NET_BUFFER_LIST структур, которые он указывает на основе его эвристики, чтобы избежать чрезмерного времени в вызове DPC.

      В частности, драйвер должен использовать свою эвристическую функцию, чтобы избежать превышения времени ожидания DPC, которое является максимальным временем, которое драйвер может провести в своем DPC. По истечении интервала ожидания в системе выполняется проверка ошибок. Начиная с Windows 7 время ожидания DPC составляет 10 секунд.

  • Драйвер мини-порта должен установить для MoreNblsPendingзначение FALSE , прежде чем он возвращается из DPC. Драйвер должен делать это независимо от того, имеет ли он ожидающие NET_BUFFER_LIST структуры в очередях получения, которые не были указаны.
Если драйвер мини-порта использует прерывания на основе строки или одно сообщение MSI, он должен выполнять обработку прерываний для всех источников прерываний, которые у него есть. Если в очереди получения есть пакеты, она должна указывать максимум MaxNblsToIndicate NET_BUFFER_LIST структур в NDIS с помощьюФункция NdisMIndicateReceiveNetBufferLists.

Если драйвер мини-порта использует несколько сообщений MSI для различения различных источников прерываний, он должен игнорировать элемент ReceiveThrottleParameters для сообщений MSI, которые не связаны с указаниями получения. Для получения сообщений прерывания драйвер мини-порта должен указывать не более maxNblsToIndicate NET_BUFFER_LIST структур.

Примечание Если драйвер мини-порта задает значение MoreNblsPending, NDIS снова вызовет DPC. Однако время, которое проходит до следующего вызова DPC, не определено. Кроме того, интервал времени между возвратом исходной маршрутизации службы прерываний (ISR) и DPC не определен. После того как драйвер мини-порта установит MoreNblsPending, он должен обрабатывать следующий DPC так же, как и первый DPC.
 

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.20 и более поздних версиях.
Верхняя часть ndis.h (включая Ndis.h)

См. также раздел

MiniportInterruptDPC

MiniportMessageInterruptDPC

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists