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


Состояния питания USB-устройства

В этой статье описаны состояния устройства модели драйверов Windows (WDM), используемые для состояний питания USB-устройства, как указано в разделе 9.1 спецификации универсальной последовательной шины 2.0.

Состояния питания USB-устройства (как указано в разделе 9.1 спецификации универсальной последовательной шины 2.0) можно сгруппировать в три общие категории:

  • Подключено: устройство подключено, но не полностью подключено.
  • Powered: устройство находится в одном из полностью защищенных состояний: по умолчанию, адресу или настройке.
  • Приостановлено: устройство является состоянием простоя и работает на низкой мощности.

Прямая корреляция между состояниями питания устройства, определенными в модели питания WDM, и состояниями питания устройства, определенными в стандарте USB. Например, термины приостановлены и бездействия имеют определенные значения в спецификации USB. Однако эти термины часто используются в модели питания WDM. Клиентские драйверы Windows могут поместить USB-устройство в состояние приостановки. Дополнительные сведения см. в статье о выборочной приостановке USB. Когда драйвер клиента готов приостановить свое устройство, он указывает водителю шины простоя. Обсуждение неактивных запросов см. в статье о выборочной приостановке USB.

Состояния питания устройства в модели WDM можно свести следующим образом:

  • D0 — рабочее состояние. Устройство полностью работает.
  • D1/D2 — промежуточные состояния сна. Эти состояния позволяют устройству быть вооружены для удаленного пробуждения.
  • D3 - самое глубокое состояние сна. Устройства в состоянии D3 не могут быть вооружены для удаленного пробуждения.

Полное обсуждение состояний питания устройств в модели питания WDM см. в разделе "Состояния питания устройства".

Модель питания WDM использует термин на основе устройств для удаленного пробуждения. Arming — это программное обеспечение, которое обычно, но не всегда приводит к аппаратной операции включения функции удаленного пробуждения на USB-устройстве. Операция программного обеспечения WDM, которая использует устройство для удаленного пробуждения, — это IRP ожидания (IRP_MN_WAIT_WAKE). Дополнительные сведения об этом IRP см. в разделе "Поддержка устройств с возможностями пробуждения".

Описание связи между этой операцией программного обеспечения и включением функции удаленного пробуждения USB см. в разделе "Удаленное пробуждение USB-устройств".

В этом разделе содержатся следующие подразделы:

Изменение состояния питания некомпозитного устройства

Диспетчер политик питания для USB-устройства отвечает за настройку состояния питания устройства. Диспетчер политик питания задает состояние питания путем выдачи IRP (IRP_MN_SET_POWER) WDM. Дополнительные сведения о диспетчере политик питания см. в разделе "Ответственность за политику питания".

Действия, выполняемые водителем шины, зависят от уровня питания устройства, запрашиваемого диспетчером политик питания. Ниже перечислены действия, которые выполняет водитель шины для каждого уровня набора power request:

  • D0

    Водитель шины выполняет следующие задачи:

    1. Гарантирует, что все восходящие USB-концентраторы имеют питание и готовы к получению запросов.
    2. Возобновляет порт, очищая функцию PORT_SUSPEND, если USB-порт устройства приостановлен.
    3. Завершает простой IRP устройства с STATUS_SUCCESS, если оно ожидается.
    4. Разоружите устройство для удаленного пробуждения, если оно было вооружена.
  • D1/D2

    Водитель шины выполняет следующие задачи:

    1. Объявите устройство для удаленного пробуждения, если ожидается ожидание пробуждения (IRP_MN_WAIT_WAKE).
    2. Приостанавливает USB-порт устройства, задав функцию PORT_SUSPEND.
  • D3

    Водитель шины выполняет следующие задачи:

    1. Приостанавливает USB-порт устройства, задав функцию PORT_SUSPEND.
    2. Завершает ожидание пробуждения устройства с помощью STATUS_POWER_STATE_INVALID, если оно ожидается.
    3. Завершает простой IRP устройства (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) с STATUS_POWER_STATE_INVALID, если он ожидается.

Изменение состояния питания составного устройства

Клиентский драйвер для интерфейса на составном устройстве должен совместно использовать состояние питания составного устройства с клиентскими драйверами для других интерфейсов на устройстве. Поэтому драйвер клиента для интерфейса не может поместить составное устройство в более низкое состояние питания, не затрагивая другие интерфейсы на устройстве. Usb Generic Parent Driver (Usbccgp.sys) выполняет следующие действия, когда драйвер клиента интерфейса отправляет запрос IRP_MN_SET_POWER.

  • D0

    Водитель шины выполняет следующие задачи:

    1. Гарантирует, что все восходящие USB-концентраторы имеют питание и готовы к получению запросов.
    2. Возобновляет порт, очищая функцию PORT_SUSPEND, если USB-порт устройства приостановлен.
    3. Завершает простой IRP драйвера клиента с STATUS_SUCCESS, если он ожидается.
  • D1/D2

    Водитель автобуса не принимает никаких действий.

  • D3

    Водитель шины выполняет следующие задачи:

    1. Завершает ожидание пробуждения драйвера клиента (IRP_MN_WAIT_WAKE) с STATUS_POWER_STATE_INVALID, если он ожидается.
    2. Завершает простой IRP драйвера клиента (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) с STATUS_POWER_STATE_INVALID, если он ожидается.

Универсальный родительский драйвер приостанавливает USB-порт для устройства, если одно из следующих условий имеет значение true:

  • Система переходит в более низкое состояние питания.
  • Клиентские драйверы для всех функций на составном устройстве, инициированные выборочной приостановкой.