Обзор индикации состояния причины пробуждения 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 .
События пробуждения для конкретных носителей
Сетевой адаптер создает событие пробуждения по определенной причине мультимедиа, такой как отмена связи с точкой доступа (AP) 802.11 или получение sms-сообщения мобильной широкополосной связи (МБ).
События пробуждения этого типа задаются с помощью элемента 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 индикатор состояния только для событий пробуждения, созданных базовым сетевым адаптером.