Использование реестра в драйверах 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 также позволяет драйверам удалять значения.
Дополнительные сведения о разделах реестра для драйверов см. в статье Общие сведения о деревьях и разделах реестра.