Обзор статусов сигналов причин пробуждения NDIS

Начиная с NDIS 6.30, минипорт-драйверы выдают индикацию статуса причины пробуждения NDIS (NDIS_STATUS_PM_WAKE_REASON) для уведомления NDIS и вышележащих драйверов о причине пробуждения системы. Если сетевой адаптер создает событие пробуждения, минипорт-драйвер немедленно выдает указание состояния NDIS о NDIS_STATUS_PM_WAKE_REASON, когда сетевой адаптер переходит в состояние полного энергоснабжения.

Примечание Поддержка индикаций состояния причины пробуждения NDIS является необязательной для драйверов минипорта мобильной широкополосной связи (МБ).

Минипорт-драйвер настраивается путем задания параметров управления питанием (PM) через запрос на установку идентификатора объекта (OID) OID_PM_PARAMETERS. Этот запрос OID задает параметры PM через структуру NDIS_PM_PARAMETERS.

Структура NDIS_PM_PARAMETERS задает параметры для следующих типов событий пробуждения.

события пробуждения при получении пакетов
Сетевой адаптер создает событие пробуждения, если он получает пакет, соответствующий шаблону пробуждения по локальной сети (WOL). Шаблоны WOL включают следующие:

  • Шаблоны WOL, независимые от типа сети, такие как магические пакеты или шаблоны данных TCP/IP внутри полезной нагрузки пакета. Например, структура NDIS_PM_PARAMETERS может указать шаблон WOL для кадра TCP SYN.

  • Шаблоны WOL для конкретных носителей, такие как идентификационный пакет запроса EAPOL или сообщение SMS для мобильного широкополосного доступа (МБ).

  • Подстановочные знаки, соответствующие фильтру получения, указанному с помощью запроса набора OID OID_GEN_CURRENT_PACKET_FILTER.

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

Шаблоны WOL задаются с помощью EnabledWoLPacketPatterns члена структуры NDIS_PM_PARAMETERS.

Специфичные для медиа пробуждения события
Сетевой адаптер создает событие пробуждения из-за конкретной причины, например, отсоединения от точки доступа 802.11 (AP) или получения сообщения службы мобильной широкополосной связи (МШС) в формате СМС.

События пробуждения этого типа задаются с помощью MediaSpecificWakeUpEvents члена структуры NDIS_PM_PARAMETERS.

Независимые от среды события пробуждения
Сетевой адаптер создает событие пробуждения из-за независимой от типа подключения причины, например подключения к сети или отключения от сети.

События пробуждения этого типа задаются с помощью WakeUpFlags члена структуры NDIS_PM_PARAMETERS.

Минипорт-драйвер должен соответствовать этим рекомендациям для указания состояния причины пробуждения NDIS:

  • Если драйвер минипорта поддерживает индикацию пакетов пробуждения, он должен сообщить об этой возможности, когда NDIS вызывает функцию MiniportInitializeEx драйвера. Дополнительные сведения см. в разделе Способности индикации причины пробуждения.

    Примечание Минипорт драйвер не обязан сообщать о своей способности выдавать индикации статуса причины пробуждения NDIS по событиям, которые не связаны с получением пакета WOL.

  • Когда минипорт-драйвер посылает индикацию пакета пробуждения для пакета WOL, он должен включать пакет, который вызвал событие пробуждения. Дополнительные сведения см. в разделе Выдача индикаторов состояния причины пробуждения NDIS.

  • Если сетевой адаптер создал сигнал пробуждения, драйвер минипорта должен выдать указание состояния NDIS_STATUS_PM_WAKE_REASON. Драйвер делает это при обработке запроса набора OID OID_PNP_SET_POWER для перехода в состояние полной мощности.

  • Минипорт-драйвер должен выдать индикацию состояния NDIS_STATUS_PM_WAKE_REASON, прежде чем выдать индикацию состояния, связанную с событием пробуждения. Например, если событие пробуждения произошло из-за изменения состояния медиа-подключения, драйвер минипорта должен указать состояние NDIS_STATUS_LINK_STATE после выдачи указания состояния NDIS_STATUS_PM_WAKE_REASON.

  • Минипорт-драйвер должен выдать NDIS_STATUS_PM_WAKE_REASON индикацию статуса только для событий управления питанием, которые ранее были включены с помощью запроса набора OID OID_PM_PARAMETERS.

  • Драйвер минипорта должен выдавать указание состояния NDIS_STATUS_PM_WAKE_REASON только для событий пробуждения, созданных базовым сетевым адаптером.