Метод IAdapterPowerManagement::P owerChangeState (portcls.h)
Метод PowerChangeState
запрашивает, чтобы устройство переключилось в новое состояние питания.
Синтаксис
void PowerChangeState(
[in] POWER_STATE NewState
);
Параметры
[in] NewState
Указывает новое состояние питания, запрашиваемое для устройства. Этот параметр является объединением типа POWER_STATE. Новое состояние питания (NewState.DeviceState) может быть одним из DEVICE_POWER_STATE значений перечисления, показанных в следующей таблице.
Состояние включения | Значение |
---|---|
PowerDeviceD0 | Состояние полного питания (D0). Этот код может быть функцией текущего состояния питания. Сохраните новое состояние. Это локальное значение используется для определения того, когда следует кэшировать доступ к свойству, а когда разрешить драйверу доступ к оборудованию. |
PowerDeviceD1 | Состояние спящего режима с наименьшей задержкой по отношению к времени задержки, необходимого для возврата в D0 |
PowerDeviceD2 | Состояние спящего режима со средней задержкой. В этом состоянии драйвер устройства не может предполагать, что он может коснуться оборудования, поэтому все доступы должны быть кэшированы и восстановлено оборудование при входе в D0. |
PowerDeviceD3 | Состояние полного гибернации и является состоянием спящего режима с максимальной задержкой. Драйвер не может получить доступ к оборудованию в этом состоянии и должен кэшировать все операции доступа к оборудованию и восстанавливать оборудование по возвращении в D0 или D1. |
Возвращаемое значение
None
Remarks
PortCls вызывает PowerChangeState
метод в ответ на IRP IRP_MN_SET_POWER питания. Этот вызов не должен завершаться ошибкой. PortCls и система используют PowerChangeState
вызов , чтобы поместить устройство в требуемое состояние питания. Когда система пытается приостановить или возобновить активный аудиопоток, драйвер должен быть в состоянии сохранить или восстановить контекст устройства соответствующим образом.
Чтобы помочь драйверу, PortCls приостановит все активные звуковые потоки перед вызовом этого метода, чтобы поместить устройство в спящий режим. После вызова этого метода PortCls разблокирует активные звуковые потоки, чтобы разбудить устройство. Минипорты могут выбрать дополнительные уведомления, используя интерфейс IPowerNotify .
Драйвер мини-порта должен выполнить запрошенное изменение состояния питания устройства перед возвратом PowerChangeState
из вызова. Если драйверу мини-порта необходимо сохранить или восстановить состояние устройства перед изменением состояния питания, драйвер минипорта должен поддерживать интерфейс IPowerNotify , который позволяет получать предварительное предупреждение о любом таком изменении. Перед возвращением из успешного PowerChangeState
вызова драйвер мини-порта должен кэшировать новое состояние питания.
Хотя драйвер мини-порта находится в одном из состояний спящего режима (любое состояние, отличное от PowerDeviceD0), он должен избегать записи на оборудование. Драйвер мини-порта должен кэшировать все аппаратные доступы, которые необходимо отложить до тех пор, пока устройство снова не войтется. Если состояние питания изменяется с одного из состояний спящего режима на PowerDeviceD0, драйвер мини-порта должен выполнять любые отложенные аппаратные операции доступа после включения питания устройства. Если состояние питания изменяется с PowerDeviceD0 на спящий режим, драйвер мини-порта может выполнять любые необходимые аппаратные операции во время PowerChangeState
вызова, прежде чем выключать устройство.
При выключении драйвера минипорта никогда не предлагается создать объект драйвера мини-порта или объект потока. PortCls всегда помещает устройство в состояние PowerDeviceD0 перед вызовом метода NewStream драйвера мини-порта.
Код для этого метода должен находиться в постраничной памяти.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | portcls.h (включая Portcls.h) |