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


Добавление устройства

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

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

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

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

Платформа добавляет объект устройства для каждого устройства, загруженного в процесс узла драйвера. Чтобы добавить устройство, платформа вызывает метод IDriverEntry::OnDeviceAdd драйвера и передает интерфейсы IWDFDriver и IWDFDeviceInitialize в вызове. Предоставленный интерфейс IWDFDeviceInitialize действителен только до того, как драйвер вызовет IWDFDriver::CreateDevice. Драйвер может вызывать следующие методы IWDFDeviceInitialize для выполнения следующих операций:

  • Драйвер вызывает метод IWDFDeviceInitialize::RetrieveDevicePropertyStore для получения интерфейса IWDFNamedPropertyStore для хранилища свойств устройства. Драйвер может использовать IWDFNamedPropertyStore для получения и задания свойств устройства.

  • Драйвер вызывает метод IWDFDeviceInitialize::SetLockingConstraint , чтобы указать, как его функции обратного вызова вызываются платформой.

  • Драйвер вызывает метод IWDFDeviceInitialize::SetFilter , чтобы включить устройство в качестве устройства-фильтра.

После того как драйвер использует IWDFDeviceInitialize для инициализации устройства, драйвер передает указатель на IWDFDeviceInitialize в вызове метода IWDFDriver::CreateDevice , чтобы создать объект устройства UMDF для устройства. После создания объекта устройства платформы драйвер вызывает метод IWDFDevice::CreateIoQueue для создания очередей ввода-вывода для чтения и записи. В этих вызовах IWDFDevice::CreateIoQueue драйвер должен определить, как он получает запросы из очереди ввода-вывода. Дополнительные сведения см. в разделе Настройка режима диспетчеризации для очереди ввода-вывода.