Возможности D3cold устройства
Прежде чем драйвер, который является владельцем политики питания (PPO) для устройства, позволит устройству ввести D3cold (когда компьютер должен оставаться в S0), драйвер должен убедиться, что устройство будет реагировать и продолжать работать правильно после того, как устройство перейдет в D3cold.
Для устройства Plug and Play (PnP) операционная система обычно получает сведения о возможностях D3cold устройства от родительского драйвера шины.
Например, если устройство подключено к шине PCI или PCI Express, пространство конфигурации PCI устройства содержит блок регистра управления питанием, который указывает возможности устройства. Флаги возможностей в этом блоке указывают состояния питания устройства, от которых устройство может сигнализировать о событии управления питанием, или PME (термин PCI для события пробуждения). Эти состояния могут включать D3hot и D3cold. Дополнительные сведения об управлении питанием pci см. в спецификации интерфейса управления питанием шины PCI.
Если устройство должно иметь возможность сигнализировать о событии пробуждения из любого состояния Dx с низким энергопотреблением, которое оно входит, устройство не должно входить в D3cold, если устройство, родительский контроллер шины и аппаратная платформа не поддерживают сигнал о событии пробуждения из D3cold.
Драйвер KMDF для устройства вызывает метод WdfDeviceAssignS0IdleSettings , чтобы позволить устройству бездействовать в состоянии питания устройства с наименьшим питанием, из которого устройство может сигнализировать о событии пробуждения. Начиная с KMDF версии 1.11 , WdfDeviceAssignS0IdleSettings включает D3cold в диапазон возможных состояний Dx с низким энергопотреблением. Этот метод позволяет устройству простаивать в D3cold, только если устройство, родительский драйвер шины и встроенное ПО системы ACPI поддерживают сигнальные события пробуждения от D3cold.
Драйвер WDM для устройства должен решить, в какое состояние Dx с низким энергопотреблением следует переместить устройство, когда устройство находится в режиме простоя. (В отличие от этого, WdfDeviceAssignS0IdleSettings автоматически выбирает это состояние Dx, чтобы драйвер не должен это делать.) Если устройство должно иметь возможность сигнализировать о событии пробуждения из любого состояния Dx с низким энергопотреблением, которое оно входит, драйвер может вызвать подпрограмму GetIdleWakeInfo , чтобы определить состояние питания устройства с наименьшим питанием, из которого устройство может сигнализировать о событии пробуждения. Чтобы получить эти сведения, GetIdleWakeInfo запрашивает базовый драйвер шины и встроенное ПО системы ACPI. На основе сведений из GetIdleWakeInfo драйвер может вызвать подпрограмму SetD3ColdSupport , чтобы включить или отключить переходы устройства на D3cold.
Устройству может не потребоваться возможность сигнализировать о событии пробуждения из D3cold. Вместо этого устройство может потребоваться для перехода с D3cold на D0 только в ответ на действия, инициированные программным обеспечением. Например, драйверу может потребоваться пробуждение устройства, если драйвер получает запрос ввода-вывода для устройства. За некоторыми исключениями драйвер для такого устройства может разрешить устройству ввод D3cold. Возможное исключение — устройство, которому требуется большое количество времени для перехода с D3cold на D0. Например, устройство отображения может содержать большой объем памяти, который необходимо сохранить до того, как устройство перейдет в D3cold и восстанавливается после выхода устройства из D3cold.
Дополнительные сведения о поддержке ACPI для D3cold см. в разделе Требования к встроенному ПО для D3cold.