Отключение носителя с низким энергопотреблением
Функция отключения носителя с низким энергопотреблением (D3 при отключении) экономит электроэнергию, помещая сетевой адаптер в маломощном состоянии (D3) при отключении носителя. При повторном подключении носителя сетевой адаптер возвращается в состояние полного питания (D0).
NDIS использует функцию D3 при отключении в следующих условиях:
Оборудование сетевого адаптера должно иметь возможность создавать событие пробуждения при подключении к мультимедиа.
Драйвер мини-порта должен сообщить о возможности события пробуждения сетевого адаптера в элементе MinLinkChangeWakeUp структуры NDIS_PM_CAPABILITIES .
Значение MinLinkChangeWakeUp должно соответствовать значению элемента DeviceWakeструктуры DEVICE_CAPABILITIES , сообщаемой IRP_MN_QUERY_CAPABILITIES IRP.
Драйвер мини-порта должен быть зарегистрирован как драйвер NDIS 6.20 или более поздней версии.
Сетевой адаптер должен быть адаптером Ethernet PCI.
Возможность события пробуждения должна быть включена с помощью стандартного INF-файла *DeviceSleepOnDisconnect ключевое слово.
Набор микросхем компьютера должен иметь возможность правильно распространять событие пробуждения, пока компьютер полностью питается. NDIS проверяет это, запрашивая свойство DEVPKEY_PciDevice_S0WakeupSupported PCI.
Обратите внимание, что функция D3 при отключении доступна только при полном включении компьютера в рабочем состоянии (S0). Эта функция отменяется, когда компьютер переходит в спящий режим, чтобы предотвратить пробуждение компьютера при внешнем цикле связи; то есть при отключении и включении переключателя. Дополнительные сведения о настройке состояния низкого энергопотребления при переходе компьютера в спящий режим см. в разделе Низкое энергопотребление для пробуждения по локальной сети.
Драйвер мини-порта сообщает D3 о возможностях отключения во время инициализации. Дополнительные сведения об отчетах D3 о возможностях отключения см. в разделе Возможности управления питанием в отчетах.
В стандартном INF-файле *DeviceSleepOnDisconnect ключевое слово указывается, включена или отключена поддержка D3 при отключении устройства. Дополнительные сведения об этой ключевое слово INF см. в разделе Стандартизированные ключевые слова INF для управления питанием.
Во время инициализации драйверы мини-порта, поддерживающие D3 при отключении, должны сообщать о самом низком уровне питания, где они могут поддерживать возможность уведомлять операционную систему о событии подключения к мультимедиа. Драйвер мини-порта сообщает об уровне питания в элементе MinLinkChangeWakeUp структуры NDIS_PM_CAPABILITIES . Например, драйвер мини-порта может сообщить о NdisDeviceStateD3.
На следующем рисунке показана последовательность событий для установки сетевого адаптера в состояние низкого энергопотребления после события отключения мультимедиа.
Когда адаптер обнаруживает отключение носителя, происходит следующая последовательность:
Оборудование сетевого адаптера обнаруживает событие отключения носителя и передает сведения драйверу мини-порта.
Драйвер мини-порта уведомляет NDIS о событии отключения мультимедиа с помощью указания состояния NDIS_STATUS_LINK_STATE . Элемент StatusBuffer структуры NDIS_STATUS_INDICATION содержит NDIS_LINK_STATE структуру. Значение MediaConnectStateDisconnected задается в элементе MediaConnectState структуры NDIS_LINK_STATE .
NDIS использует OID_PM_PARAMETERS для отключения пробуждения по локальной сети и включения пробуждения при подключении к мультимедиа (NDIS_PM_WAKE_ON_LINK_CHANGE_ENABLED задано в элементе WakeUpFlags ).
NDIS использует OID OID_PNP_SET_POWER для уведомления драйвера мини-порта о новом состоянии питания (D3).
NDIS отправляет шине PCIe IRP_MN_WAIT_WAKE IRP для ожидания события повторного подключения.
NDIS устанавливает для шины PCIe состояние D3 с IRP_MN_SET_POWER IRP.
На следующем рисунке показана последовательность событий для восстановления полной мощности сетевого адаптера после события подключения к мультимедиа.
При повторном подключении носителя происходит следующая последовательность:
Сетевой адаптер активирует систему, утверждая wake# на шине PCIe или PME# на шине PCI.
Автобус завершает ожидающий IRP_MN_WAIT_WAKE IRP. IRP ожидает завершения последнего шага в последовательности отключения.
NDIS устанавливает шину на полную мощность (D0) с IRP_MN_SET_POWER IRP.
NDIS уведомляет драйвер мини-порта о том, что сетевой адаптер находится в состоянии полного питания (D0) с помощью запроса набора OID OID_PNP_SET_POWER.
Сетевой адаптер уведомляет NDIS о событии подключения к мультимедиа с указанием состояния NDIS_STATUS_LINK_STATE . Значение MediaConnectStateConnected задается в элементе MediaConnectState структуры NDIS_LINK_STATE .
Начиная с версии NDIS 6.30, если драйвер мини-порта поддерживает NDIS_STATUS_PM_WAKE_REASON индикаторы состояния, он должен выдавать это уведомление о состоянии, если сетевой адаптер разбудит систему. Драйвер выдает это уведомление о состоянии, когда обрабатывает запрос набора OID OID_PNP_SET_POWER для перехода в состояние полной мощности (D0).
Дополнительные сведения см. в разделе Индикаторы состояния причины пробуждения NDIS.
Примечание Если драйвер мини-порта выдает указание состояния NDIS_STATUS_PM_WAKE_REASON , он должен сделать это, прежде чем он выдает указание состояния NDIS_STATUS_LINK_STATE .