функция обратного вызова 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 необходима для драйверов мини-порта, поддерживающих выборочный интерфейс приостановки NDIS. Дополнительные сведения о том, как драйвер регистрирует свои функции выборочного обработчика приостановки, см. в разделе Регистрация функций выборочного обработчика приостановки NDIS.

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

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

Замечание

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

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

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

Замечание

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

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

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

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

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

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

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

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

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

Требования

Требование Ценность
Минимальный поддерживаемый клиент Поддерживается в NDIS 6.30 и более поздних версиях.
Целевая платформа Виндоус
Заголовок ndis.h (include Ndis.h)
IRQL пассивный уровень

См. также

MiniportCancelIdleNotification

NdisMIdleNotificationComplete