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


Использование реестра в драйверах UMDF 1.x

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

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

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

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

Драйверы на основе UMDF могут считывать и записывать значения в реестр с помощью интерфейсов объекта хранилища свойств.

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

  • Аппаратные ключи

    Диспетчер PnP создает аппаратный ключ или ключ устройствадля каждого устройства, в котором хранится уникальная идентификация устройства.

    Драйвер может получить и изменить некоторые значения свойств под ключом оборудования. Расположение сохраненных значений зависит от метода, используемого для доступа к ним.

    Значения свойств, созданные с использованием методов PropertyStore, сохраняются в подразделе \Device Parameters внутри ключа оборудования. Чтобы получить доступ к этим свойствам, драйвер вызывает один из следующих методов для получения интерфейса хранилища свойств.

    IWDFDevice::RetrieveDevicePropertyStore
    Получает указатель на интерфейс IWDFNamedPropertyStore.

    IWDFDeviceInitialize::RetrieveDevicePropertyStore
    Получает указатель на интерфейс IWDFNamedPropertyStore.

    IWDFPropertyStoreFactory::RetrieveDevicePropertyStore
    Получает указатель на интерфейс IWDFNamedPropertyStore2. Параметр SubkeyPath можно использовать для указания значений подключа, созданного драйвером, например \Device Parameters\DriverServiceName\subkey.

    Драйверы имеют доступ только для чтения к значениям в подразделе \Параметры устройства и не могут получить доступ к \Параметры устройства\WDF или \Параметры устройства\WUDF.

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

    Чтобы получить доступ к этим свойствам, драйвер вызывает IWDFUnifiedPropertyStoreFactory::RetrieveUnifiedDevicePropertyStore для получения интерфейса хранилища свойств. Затем драйвер может использовать интерфейс IWDFUnifiedPropertyStore для изменения и получения текущих параметров свойств устройства.

  • Ключи программного обеспечения

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

    Ваш драйвер может вызвать IWDFPropertyStoreFactory::RetrieveDevicePropertyStore для получения доступа чтения или записи к значениям под его программным ключом. Драйвер может считывать и записывать сведения о драйвере, которые не связаны с определенными устройствами.

  • Ключи интерфейса устройства

    Реестр содержит ключи для всех классов интерфейсов устройств , созданных драйверами. В каждом из этих ключей есть запись для каждого экземпляра класса интерфейса устройства, зарегистрированного драйвером.

    Если драйвер зарегистрировал экземпляр класса интерфейса устройства, он может считывать и записывать значения в записи реестра для этого экземпляра путем вызова IWDFPropertyStoreFactory::RetrieveDevicePropertyStore. Драйвер может считывать и записывать специфичные для экземпляра сведения об интерфейсе устройства.

  • Ключ DEVICEMAP

    Реестр содержит HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP раздел, который используют некоторые драйверы для старых технологий, например последовательные и параллельные порты. Если ваш драйвер поддерживает технологию, использующую ключ DEVICEMAP, драйвер может получить доступ к вложенным ключам и значениям под этим ключом, вызвав IWDFPropertyStoreFactory::RetrieveDevicePropertyStore.

После того, как драйвер вызовет один из методов RetrieveDevicePropertyStore для открытия подраздела реестра, он может использовать методы, предоставляемые IWDFNamedPropertyStore, IWDFNamedPropertyStore2или IWDFUnifiedPropertyStore, чтобы создавать, читать и записывать значения в рамках этого подраздела. Интерфейс IWDFNamedPropertyStore2 также позволяет драйверам удалять значения.

См. в разделе Обзор деревьев реестра и ключейдополнительные сведения о ключах реестра для драйверов.