Поделиться через


функция обратного вызова NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION (ndkpi.h)

Функция NdkControlCqInterruptModeration (NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION) управляет модерацией прерываний в очереди завершения NDK (CQ).

Дополнительные сведения об модерации прерываний см. в разделе Модерация прерываний.

Синтаксис

NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION NdkFnControlCqInterruptModeration;

NTSTATUS NdkFnControlCqInterruptModeration(
  [in] NDK_CQ *pNdkCq,
  [in] ULONG ModerationInterval,
  [in] ULONG ModerationCount
)
{...}

Параметры

[in] pNdkCq

Указатель на объект очереди завершения NDK (NDK_CQ).

[in] ModerationInterval

Максимальное число микросекунд, которое поставщик может отложить прерывание ЦП узла после завершения, помещенного в CQ, удовлетворяет запросу arm. Если параметр ModerationInterval равен нулю, поставщик не выполняет модерацию прерываний в CQ независимо от значения параметра ModerationCount . Если параметр ModerationInterval имеет значение MAXULONG, ModerationCount управляет модерированием прерываний в CQ. Если Значение ModerationInterval больше, чем максимальный интервал модерации, поддерживаемый адаптером, или если степень детализации таймера адаптера больше, поставщик может округлить значение интервала.

[in] ModerationCount

Максимальное количество завершений, которое поставщик может накапливать в CQ перед прерыванием ЦП узла для удовлетворения запроса arm CQ. Если параметр ModerationInterval равен нулю или единице, поставщик не выполняет модерацию прерываний в CQ независимо от значения параметра ModerationInterval . Если параметр ModerationCount имеет значение MAXULONG или больше глубины CQ, ModerationInterval управляет модерированием прерываний в CQ.

Возвращаемое значение

Функция NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION возвращает один из следующих кодов NTSTATUS.

Код возврата Описание
STATUS_SUCCESS
Операция выполнена успешно.
STATUS_INSUFFICIENT_RESOURCES
Запрос завершился сбоем из-за нехватки ресурсов.
STATUS_NOT_SUPPORTED
Поставщик NDK не поддерживает управление модерированием прерываний CQ с NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION. Поставщик, задающий флаг NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORT в элементе AdapterFlags структуры NDK_ADAPTER_INFO, не должен возвращать этот код состояния.
STATUS_INVALID_PARAMETER_MIX
Потребитель NDK предоставил MAXULONG для ModerationInterval и MAXULONG или значение, превышающее количество записей завершения, которые CQ может одновременно хранить для ModerationCount .
Другие коды состояния
Произошла ошибка.

Комментарии

Потребители NDK не должны вызывать NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION, если поставщик не устанавливает флаг NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED в элементе AdapterFlags структуры NDK_ADAPTER_INFO. Для поставщика, который задает флаг NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED, потребитель NDK может вызвать эту функцию в любой момент после создания CQ. Поведение по умолчанию для CQ — не модерация прерываний. Потребитель NDK не должен вызывать эту функцию в одном И том же CQ одновременно.

Потребитель NDK не должен указывать MAXULONG для ModerationInterval и MAXULONG или значение, превышающее количество записей завершения, которые CQ может одновременно хранить (CqDepth) для ModerationCount . В противном случае поставщик вернет STATUS_INVALID_PARAMETER_MIX.

Потребитель NDK может вызывать NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION несколько раз. Поставщик может не применять параметры перед возвратом из этой функции. Однако поставщик не должен откладывать применение параметров на неопределенный срок. Если потребитель выполняет другой вызов этой функции, пока поставщик еще не применил параметры из предыдущего вызова функции, поставщик должен как можно скорее ввести последние предоставленные параметры в действие. То есть либо поставщик должен отменить применение предыдущих параметров и применить новые параметры, либо дождаться завершения применения предыдущих параметров и применения новых параметров.

Поставщики, которые указывают на поддержку модерации прерываний с помощью флага NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED, обычно должны успешно обрабатывать NDK_FN_CONTROL_CQ_INTERRUPT_MODERATION и возвращать STATUS_SUCCESS. Однако поставщик может завершить запрос неудачей из-за нехватки ресурсов, например из-за сбоя выделения памяти. В этом случае поставщик должен вернуть STATUS_INSUFFICIENT_RESOURCES. Поставщики не могут возвращать STATUS_PENDING из этой функции. Поставщики, которые не указывают на поддержку этой функции с флагом NDK_ADAPTER_FLAG_CQ_INTERRUPT_MODERATION_SUPPORTED, должны по-прежнему реализовывать эту функцию. В этом случае эта функция должна возвращать STATUS_NOT_SUPPORTED.

Требования

Требование Значение
Минимальная версия клиента Не поддерживается, поддерживается в NDIS 6.30 и более поздних версиях.
Минимальная версия сервера Windows Server 2012
Целевая платформа Windows
Header ndkpi.h (включая Ndkpi.h)
IRQL <=DISPATCH_LEVEL

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

NDK_ADAPTER_INFO

NDK_CQ

NDK_CQ_DISPATCH