Поделиться через


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

Подпрограмма обратного вызова SetD3ColdSupport включает или отключает переходы в состояние питания устройства D3cold.

Синтаксис

SET_D3COLD_SUPPORT SetD3coldSupport;

void SetD3coldSupport(
  [in, optional] PVOID Context,
  [in]           BOOLEAN D3ColdSupport
)
{...}

Параметры

[in, optional] Context

Указатель на сведения о контексте для интерфейса. Вызывающий объект задает этому параметру значение Context член структуры D3COLD_SUPPORT_INTERFACE для интерфейса.

[in] D3ColdSupport

Следует ли разрешать переходы с D3hot на D3cold. Установите значение TRUE, чтобы включить эти переходы. В противном случае задайте значение FALSE. Дополнительные сведения см. в разделе "Примечания".

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

Никакой

Замечания

Драйвер, который является владельцем политики питания (PPO) для устройства, может вызывать эту подпрограмму, чтобы включить или отключить переходы в подстате D3cold, которое может произойти, когда компьютер находится в состоянии питания системы S0 (рабочая) и не готовится к выходу S0.

Если устройство должно сигнализировать о событии пробуждения из любого состояния Dx с низкой мощностью, которое он вводит, драйвер для этого устройства не должен включать переходы в подстате D3cold, если устройство не может сигнализировать о событии пробуждения из этого подстата. В противном случае после ввода D3cold устройство будет недоступно до перезапуска компьютера или пробуждения от спящего состояния.

Драйвер для устройства может вызывать подпрограмму getIdleWakeInfo , чтобы определить, может ли устройство сигнализировать о событии пробуждения от D3cold.

При необходимости драйвер устройства может выполнять ряд вызовов SetD3ColdSupport для включения и отключения переходов D3cold в ответ на динамически изменяющиеся условия.

Например, графическое устройство может иметь большой аппаратный контекст для восстановления после перехода с D3cold на D0. Время, необходимое для восстановления этого контекста, может или не может быть приемлемым в зависимости от набора задач, выполняемых пользователем в настоящее время. Кроме того, время восстановления может отличаться в зависимости от этого набора задач. Драйвер может потребоваться динамически включить и отключить переходы в D3cold в качестве изменения набора задач.

Устройство может ввести подстатное состояние D3cold только из подстата D3hot. Если драйвер вызывает SetD3ColdSupport для включения переходов с D3hot на D3cold, устройство может или не ввести D3cold после ввода D3hot. В ответ на событие пробуждения устройство может ввести D0 непосредственно из D3hot, не проходя через D3cold.

Когда устройство перемещается с D3hot на D3cold, это, вероятно, делает это, потому что источник питания, который он использует для некоторых других устройств, был отключен. Через некоторое время после ввода этих устройств D3cold драйвер для одного из устройств может запросить переход на D0. В ответ на этот запрос драйвер родительской шины или драйвер фильтра ACPI включает источник питания, а все устройства, совместно использующие источник питания, вводят состояния питания по умолчанию.

Единственным драйвером устройства, ожидающим это изменение состояния питания, является драйвер, запрашивающий изменение. Драйверы для других устройств должны получать уведомления об этом изменении, чтобы они могли правильно инициализировать свои устройства для работы в D0. Только драйвер, который может получать это уведомление, должен разрешить устройству вводить D3cold. В противном случае драйвер не будет знать, когда устройство входит в D0.

Начиная с Windows 8 драйвер WDM может зарегистрировать свое устройство с помощью платформы питания (PoFx) и получать уведомления DevicePowerRequiredCallback, когда устройство входит в D0. Аналогичным образом драйвер KMDF может зарегистрировать свое устройство в PoFx и получать уведомления EvtDeviceD0Entry обратном вызове событий.

Драйвер, который не регистрирует свое устройство с помощью PoFx, по-прежнему может быть уведомлен о переходе на D0, если устройство вооружается для пробуждения. Когда водители автобуса включите питание на устройство, они завершают запрос IRP_MN_WAIT_WAKE водителя. В ответ драйвер инициализирует свое устройство для работы в D0.

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

Если драйвер вызывает SetD3ColdSupport отключить переходы в D3cold, D0 — это единственное состояние питания устройства, которое устройство может ввести из D3hot.

Если драйвер вызывает SetD3ColdSupport для включения переходов в D3cold, эти переходы могут быть отключены по другим причинам. Драйвер может вызвать подпрограмму GetD3ColdCapability, чтобы определить, может ли устройство вводить подстаток D3cold. Однако драйверу может не потребоваться эта информация. Если устройство не может вводить D3cold, вызовы SetD3ColdSupport не влияют, но безвредны.

SetD3ColdSupport подпрограмма влияет только на переходы D3hot-to-D3cold, которые могут возникать при входе компьютера (и не готовится к выходу) состояния S0. Эта подпрограмма не влияет на ситуацию, когда компьютер готовится выйти из S0 и ввести состояние системы с низкой мощностью. Устройство в подстате D3hot может всегда вводить подстаток D3cold непосредственно перед тем, как компьютер входит в состояние низкой мощности системы.

По умолчанию перед первым вызовом процедуры SetD3ColdSupport переходы D3hot-to-D3cold отключены. Чтобы изменить это значение по умолчанию, чтобы переходы D3hot-to-D3cold были включены до первого вызова SetD3ColdSupport, пакет драйвера для устройства может включать следующие две строки в DDInstall.HW INF-файла, который устанавливает драйвер:

Include = machine.inf
Needs = PciD3ColdSupported

Windows 8 — это первая версия Windows для поддержки устройств, которые могут входить и выйти из подстата D3cold, пока компьютер остается в состоянии S0. Дополнительные сведения см. в разделе Low-Power Штатах.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 8.
целевая платформа Настольный
заголовка wdm.h (include Wdm.h)
IRQL PASSIVE_LEVEL

См. также

D3COLD_SUPPORT_INTERFACE

DevicePowerRequiredCallback

EvtDeviceD0Entry

GetD3ColdCapability

IRP_MN_WAIT_WAKE