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


Удаленный пробуждение USB-устройств

Usb-устройства, которые могут реагировать на внешние сигналы пробуждения во время приостановки, имеют возможность удаленного пробуждения . Примерами устройств с возможностью удаленного пробуждения являются мыши, клавиатуры, USB-концентраторы, модемы (пробуждение по кругу), сетевые адаптеры, пробуждение при вставке кабеля. Все эти устройства могут создавать сигналы удаленного пробуждения. К устройствам, которые не могут генерировать сигналы удаленного пробуждения, относятся видеокамеры, запоминающие устройства, звуковые устройства и принтеры.

Драйверы для устройств, поддерживающих сигналы удаленного пробуждения, должны выдавать IRP_MN_WAIT_WAKE IRP, также известный как IRP пробуждения ожидания, чтобы вооружить устройство для удаленного пробуждения. Механизм ожидания пробуждения описан в разделе Поддержка устройств с Wake-Up возможностями.

Удаленный пробуждение на конечном USB-устройстве

В терминологии USB USB устройство включается для удаленного пробуждения, если задана его DEVICE_REMOTE_WAKEUP функция. Спецификация USB указывает, что программное обеспечение узла должно настроить функцию удаленного пробуждения на устройстве "только непосредственно перед" переводом устройства в спящий режим.

По этой причине USB-стек не устанавливает функцию DEVICE_REMOTE_WAKEUP на устройстве после получения IRP ожидания пробуждения для устройства. Вместо этого он ожидает, пока получит IRP_MN_SET_POWER запрос на изменение состояния устройства WDM на D1/D2. В большинстве случаев, когда стек USB получает этот запрос, он устанавливает функцию удаленного пробуждения на устройстве и переводит устройство в спящий режим, приостанавливая порт вышестоящий устройства. При проектировании и отладке драйвера следует помнить, что существует слабая связь между вооружением USB-устройства для пробуждения в программном обеспечении с помощью IRP ожидания и оборудованием устройства для пробуждения на оборудовании путем настройки функции удаленного пробуждения.

Usb-стек не включает устройство для удаленного пробуждения при получении запроса на переход устройства в спящий режим D3, так как в соответствии с моделью питания WDM устройства в D3 не могут разбудить систему.

Поведение пробуждения при подключении или отключении USB-устройства

Еще одним уникальным аспектом реализации USB режима питания WDM является вооружение USB-концентраторов для удаленного пробуждения. Если конечное USB-устройство в шине вооружается для пробуждения, USB-стек также будет вооружать контроллер узла USB для пробуждения, но он не обязательно будет вооружать usb-концентраторы вышестоящий устройства. Драйвер USB-концентратора использует концентратор для удаленного пробуждения только в том случае, если стек USB настроен для пробуждения системы при событиях подключения и отсоединения (отсоединения и отключения).

Контроллеры USB-узла универсального хост-контроллера (UHCI) не различают события удаленного пробуждения и изменения подключения на портах корневого концентратора. Это означает, что система всегда будет выходить из состояния низкого энергопотребления системы, когда USB-устройство подключено к порту корневого концентратора или отключено от порта корневого концентратора, если за контроллером UHCI находится по крайней мере одно устройство, которое вооружена для пробуждения.