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


Устройство возвращается в рабочее состояние (UMDF 1)

Предупреждение

UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2.

Архивные примеры UMDF 1 можно найти в Windows 11 версии 22H2 — обновление примеров драйверов за май 2022 г.

Дополнительные сведения см. в разделе начало работы с помощью UMDF.

Устройство с низким энергопотреблением возвращается в рабочее состояние, если происходит одно из следующих действий:

  • Устройство обнаруживает внешнее событие и активирует сигнал пробуждения в шине. Драйвер шины в режиме ядра обнаруживает сигнал пробуждения.

  • Устройство неактивно, и драйвер вызывает IWDFDevice2::StopIdle.

  • Состояние питания системы изменилось с низкого энергопотребления на рабочее состояние (S0).

В каждой из этих ситуаций драйвер шины в режиме ядра восстанавливает состояние устройства (дочернего устройства шины) в рабочее состояние (D0).

Для каждой функции на основе UMDF и драйвера фильтра, который поддерживает устройство, платформа последовательно выполняет по одному драйверу за раз, начиная с драйвера, который является самым низким в стеке драйверов:

  1. Платформа вызывает функцию обратного вызова IPnpCallback::OnD0Entry драйвера (если она существует).

  2. Если драйвер является владельцем политики питания устройства, платформа вызывает функцию обратного вызова IPowerPolicyCallbackWakeFromS0::OnDisarmWakeFromS0 или IPowerPolicyCallbackWakeFromSx::OnDisarmWakeFromSx .

  3. Платформа перезапускает все очереди ввода-вывода устройства, управляемые питанием, и вызывает их функции обратного вызова IQueueCallbackIoResume::OnIoResume (при необходимости).

  4. Если драйвер использует самоуправляемый ввод-вывод, платформа вызывает функцию обратного вызова IPnpCallbackSelfManagedIo::OnSelfManagedIoRestart .

Схему, на которую показаны эти шаги, см. в статье Подключение пользователя к устройству.