Включение переходов в D3cold
Все версии Windows позволяют устройству находиться в режиме D3cold, пока компьютер находится в спящем режиме (в одном из системных состояний с низким энергопотреблением, S1–S4). Прежде чем компьютер выйдет из S0, драйверы функций, драйверы шины и драйверы фильтров работают вместе, чтобы переместить устройство в D3hot. Когда компьютер переходит в маломощное состояние Sx, этот переход имеет побочный эффект перемещения устройства из D3hot в D3cold.
Начиная с Windows 8, устройство может войти в D3cold и выйти из нее, пока компьютер остается в S0. Драйвер, который является владельцем политики питания (PPO) для устройства, может включать и отключать эти переходы на D3cold. Драйвер не должен разрешать устройству входить в D3cold, если только устройство не сможет при необходимости выйти из D3cold, а затем возобновить нормальную работу после перехода на D0.
Когда устройство входит в D3, оно изначально входит в подсостояние D3hot D3. Из D3hot устройство может ввести D0 или D3cold. В ответ на событие пробуждения или запрос ввода-вывода устройство входит в D0 из D3hot. В противном случае устройство может остаться в D3hot или переместиться из D3hot в D3cold. Дополнительные сведения об этих переходах см. на схеме состояния питания устройства в разделе Состояния питания устройства.
Драйвер не инициирует переход устройства с D3hot на D3cold. Вместо этого этот переход происходит, когда все другие устройства, которые совместно используют общий источник питания с этим устройством, находятся в D3hot и готовы к входу в D3cold. Когда последнее из этих устройств входит в D3hot, базовые драйверы шины и встроенное ПО системы удаляют источник питания, а устройства входят в D3cold в унисон.
Драйвер PPO для устройства сообщает операционной системе, следует ли включить переход устройства с D3hot на D3cold. Драйвер может предоставить эти сведения в INF-файле, который устанавливает устройство, или драйвер может вызвать подпрограмму SetD3ColdSupport во время выполнения, чтобы динамически включать или отключать переходы устройства на D3cold. Дополнительные сведения см. в статье Использование интерфейса драйвера GUID_D3COLD_SUPPORT_INTERFACE.
Включив устройство для входа в D3cold, драйвер гарантирует следующее поведение:
- Устройство может переносить переход с D3hot на D3cold, когда компьютер останется в S0.
- Устройство будет работать правильно, когда оно вернется в D0 из D3cold.
Устройство, которое не соответствует требованиям, после ввода D3cold может быть недоступно до тех пор, пока компьютер не перезагрузится или не перейдет в спящий режим. Если устройство должно иметь возможность сигнализировать о событии пробуждения из любого состояния Dx с низким энергопотреблением, которое оно входит, вход в D3cold не должен быть включен, если драйвер не уверен, что сигнал пробуждения устройства будет работать в D3cold.
Помещение устройства в D3cold не обязательно означает, что все источники питания устройства были удалены; это означает, что отсутствуют только источники питания, обеспечивающие связь с устройством через шину. Устройство может по-прежнему черпать достаточно энергии, чтобы сообщить процессору о событии пробуждения. Например, сетевой интерфейс Ethernet карта (NIC), main источник питания которого удален, может черпать питание от кабеля Ethernet.
Так как D3cold — это состояние, в котором шина не может использоваться для взаимодействия с устройством, водитель не может поместить устройство в D3cold напрямую. Вместо этого драйвер сначала вызывает подпрограмму PoRequestPowerIrp , чтобы запросить IRP питания D3 ( запрос IRP_MN_SET_POWER с целевым состоянием = PowerDeviceD3), чтобы переместить устройство с D0 на D3hot. После ввода D3hot устройство может перейти с D3hot на D3cold. Устройство входит в D3cold только при отключении питания к шине, что происходит, если водитель родительского автобуса отключает шину или если встроенное ПО системы отключает питание для части аппаратной платформы.