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


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