Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Устройство покидает рабочее состояние (D0) и переходит в состояние низкого энергопотребления, если происходит одно из следующих событий:
Устройство неактивно (т. е. к нему нет доступа) и может перейти в состояние простоя с низким энергопотреблением, пока система остается в рабочем состоянии (S0).
Состояние питания системы изменилось с рабочего состояния (S0) на состояние низкой мощности. (Драйверы могут вызывать WdfDeviceGetSystemPowerAction, чтобы определить причину изменения состояния питания системы.)
Для каждой функции и драйвера фильтра, поддерживающего устройство, платформа выполняет в последовательности один драйвер за раз, начиная с драйвера, который является самым высоким в стеке драйверов:
Если драйвер использует автономный ввод-вывод, фреймворк вызывает функцию обратного вызова драйвера EvtDeviceSelfManagedIoSuspend.
Платформа останавливает все очереди ввода-вывода, управляемые питанием драйвера, и вызывает их EvtIoStop функции обратного вызова (если они существуют).
Если драйвер является владельцем политики питания устройства, платформа вызывает EvtDeviceArmWakeFromS0, EvtDeviceArmWakeFromSxили EvtDeviceArmWakeFromSxWithReason функцию обратного вызова.
Если оборудование и драйвер поддерживают DMA, платформа вызывает функции обратного вызова драйвера EvtDmaEnablerSelfManagedIoStop, EvtDmaEnablerFlushи EvtDmaEnablerDisable (если они существуют) для каждого канала DMA, который был создан.
Платформа вызывает функцию обратного вызова драйвера EvtDeviceD0ExitPreInterruptsDisabled (если она существует), а затем для каждого прерывания вызывает функцию обратного вызова драйвера EvtInterruptDisable, чтобы драйвер мог отключить прерывания устройства.
Платформа вызывает функцию обратного вызова EvtDeviceD0Exit драйвера (если она существует).
Водитель автобуса – последний элемент в стеке. Когда платформа вызывает функцию обратного вызова драйвера шины EvtDeviceD0Exit, функция обратного вызова задает состояние питания устройства (дочернее устройство шины) в состояние низкой мощности. Платформа указывает состояние D3 с низкой мощностью, если только владелец политики питания не указал другое состояние низкой мощности.
Примечание.
Метод, используемый драйвером шины для задания состояния питания дочернего устройства, специфичен для конкретной шины. Например, спецификация управления питанием шины PCI определяет 16-разрядный регистр управления питанием или регистр состояния (PMCSR). Самые низкие два бита ("PowerState") определяют текущее состояние питания устройства и используются для установки устройства в новое состояние питания. Когда PDO pci.sys получает IRP_MN_SET_POWER/D3, он считывает PMCSR, изменяет биты PowerState на 11b (уровень питания D3) и записывает обратно PMCSR.