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


Пользователь отключает устройство (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.

Во время работы системы пользователь может удалить устройство одним из следующих двух способов: путем упорядоченного удаления, что означает, что пользователь сообщает системе о том, что устройство будет удалено (например, с помощью программы отмены или удаления оборудования); или неожиданным удалением, что означает, что пользователь отключает устройство без информирования системы. Если шина поддерживает неожиданное удаление (например, USB), драйверы устройства должны иметь возможность справляться с внезапным исчезновением устройства.

Организованное удаление
Пользователь может запросить извлечение с помощью программы "Отключить или извлечь оборудование", отключив устройство через Диспетчер устройств, или нажав кнопку извлечения на самому устройстве. Платформа позволяет удалить или отключить устройство, если только драйвер не предоставил функцию обратного вызова IPnpCallback::OnQueryRemove и эта функция не наложила вето на удаление.

На следующем рисунке показана последовательность обратных вызовов UMDF при отключении питания и удалении. Последовательность начинается в верхней части рисунка с устройством, которое находится в рабочем состоянии питания (D0).

Блок-схема, показывающая последовательность выключения и упорядоченного отключения устройства для драйвера UMDF.

Неожиданное удаление
В этом сценарии пользователь неожиданно отключает устройство. В последовательности неожиданного удаления UMDF вызывает колбэк IPnpCallback::OnSurpriseRemoval, чтобы уведомить драйвер о том, что устройство было неожиданно удалено. Этот обратный вызов не гарантируется в каком-либо определённом порядке с другими обратными вызовами в последовательности удаления.

Как правило, драйвер должен избежать доступа к оборудованию в пути удаления. Отражатель завершает работу, если попытка доступа к оборудованию длится неопределённое время. На следующем рисунке показана последовательность неожиданного удаления для драйвера UMDF.

Блок-схема, показывающая последовательность удаления сюрпризов для драйвера UMDF.