Использование реестра в драйверах 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.

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

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

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

  • Программные ключи

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

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

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

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

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

  • Ключ DEVICEMAP

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

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

Дополнительные сведения о разделах реестра для драйверов см. в статье Общие сведения о деревьях и разделах реестра.