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

NDIS вызывает функцию обработчика MiniportIdleNotification , чтобы запустить операцию выборочной приостановки NDIS в неактивном сетевом адаптере. В результате этой операции сетевой адаптер приостанавливается и переходит в маломощное состояние.

Синтаксис

MINIPORT_IDLE_NOTIFICATION MiniportIdleNotification;

NDIS_STATUS MiniportIdleNotification(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] BOOLEAN ForceIdle
)
{...}

Параметры

[in] MiniportAdapterContext

Дескриптор контекстной области, выделенной драйвером мини-порта в функции MiniportInitializeEx . Драйвер мини-порта использует эту область контекста для хранения сведений о состоянии сетевого адаптера.

[in] ForceIdle

Значение BOOLEAN , которое, если задано значение TRUE, указывает, что драйвер мини-порта не должен вето на уведомление о бездействии и должен продолжать переход на состояние с низким энергопотреблением.

Дополнительные сведения о параметре ForceIdle см. в разделе Примечания.

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

MiniportIdleNotification возвращает одно из следующих значений состояния:

Код возврата Описание
NDIS_STATUS_PENDING Драйвер мини-порта успешно обработал уведомление о бездействии. Уведомление остается в состоянии ожидания, пока драйвер мини-порта не вызовет NdisMIdleNotificationComplete. Примечание: Драйвер мини-порта не должен возвращать NDIS_STATUS_SUCCESS из MiniportIdleNotification.
NDIS_STATUS_BUSY Драйвер мини-порта наложил вето на уведомление о простое, так как сетевой адаптер все еще используется. Примечание.MiniportIdleNotification не должен возвращать этот код состояния, если параметр ForceIdle имеет значение TRUE.
NDIS_STATUS_FAILURE Водитель минипорта не смог успешно выдать IRP для конкретной шины.

Комментарии

Функция обработчика MiniportIdleNotification необходима для драйверов miniport, поддерживающих интерфейс выборочной приостановки NDIS. Дополнительные сведения о том, как драйвер регистрирует свои функции обработчика выборочной приостановки, см. в разделе Регистрация функций обработчика выборочной приостановки NDIS.

NDIS устанавливает для параметра ForceIdleзначение FALSE , если сетевой адаптер неактивен дольше, чем время ожидания простоя. Поэтому NDIS выборочно приостанавливает работу только сетевого адаптера.

Продолжительность периода простоя определяется значением inf-ключевое слово *SSIdleTimeout. Дополнительные сведения об этом ключевое слово см. в разделе Стандартизированные ключевые слова INF для выборочной приостановки NDIS.

Примечание

NDIS устанавливает для параметра ForceIdleзначение TRUE только в том случае, если система, соответствующая технологии Always On Always Connected (AOAC), переходит в состояние "Подключенный режим ожидания".

Если драйвер минипорта определяет, что используется сетевой адаптер, он может наложить вето на запрос уведомления о простое, возвратив NDIS_STATUS_BUSY. В результате NDIS перезапустит монитор активности сетевого адаптера.

Если адаптер снова становится неактивным в течение периода простоя, NDIS вызывает MiniportIdleNotification.

Примечание

Драйвер мини-порта не должен возвращать NDIS_STATUS_BUSY, если параметр ForceIdle имеет значение TRUE.

После выдачи уведомления о бездействии его можно отменить и завершить следующим образом:

  • NDIS может отменить незавершенное уведомление о простое, если выполняются следующие условия:

    • Драйвер чрезмерного протокола или фильтра выдает запрос на отправку пакета или запрос OID к драйверу минипорта.
    • Базовый адаптер сигнализирует о событии пробуждения, например о получении пакета, соответствующего шаблону пробуждения по локальной сети (WOL), или об изменении состояния подключения к мультимедиа.

    NDIS отменяет уведомление о простое, вызывая MiniportCancelIdleNotification. При вызове этой функции обработчика драйвер минипорта отменяет все ранее выданные ему ранее для уведомления о бездействии irp, относящиеся к шине. Наконец, драйвер мини-порта вызывает NdisMIdleNotificationComplete , чтобы завершить уведомление о бездействии.

  • После того как сетевой адаптер находится в маломощном состоянии, драйвер мини-порта может самостоятельно завершить уведомление о простое, чтобы возобновить работу адаптера в состояние полного питания. Причины этого зависят от конструкции и требований драйвера и адаптера.

    Драйвер мини-порта завершает уведомление о бездействии, вызывая NdisMIdleNotificationComplete. Дополнительные сведения о том, как драйвер мини-порта завершает уведомление о простое, см. в разделе Завершение уведомления о выборочной приостановке простоя NDIS.

Дополнительные сведения об обработке уведомлений о простое для выборочной приостановки NDIS см. в разделе Обработка уведомления о простое выборочной приостановки NDIS.

Рекомендации по реализации функции обработчика MiniportIdleNotification см. в разделе Реализация функции обработчика MiniportIdleNotification.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.30 и более поздних версиях.
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL PASSIVE_LEVEL

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

MiniportCancelIdleNotification

NdisMIdleNotificationComplete