структура WDF_PROPERTY_STORE_ROOT (wudfddi_types.h)

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

Структура WDF_PROPERTY_STORE_ROOT содержит сведения, определяющие хранилище свойств UMDF.

Синтаксис

typedef struct _WDF_PROPERTY_STORE_ROOT {
  ULONG                         LengthCb;
  WDF_PROPERTY_STORE_ROOT_CLASS RootClass;
  union {
    struct {
      PCWSTR ServiceName;
    } HardwareKey;
    struct {
      LPCGUID InterfaceGUID;
      PCWSTR  ReferenceString;
    } DeviceInterfaceKey;
    struct {
      PCWSTR LegacyMapName;
    } LegacyHardwareKey;
  } Qualifier;
} WDF_PROPERTY_STORE_ROOT, *PWDF_PROPERTY_STORE_ROOT;

Члены

LengthCb

Длина этой структуры (в байтах).

RootClass

WDF_PROPERTY_STORE_ROOT_CLASS типизированное значение, идентифицирующее хранилище свойств.

Qualifier

Qualifier.HardwareKey

Qualifier.HardwareKey.ServiceName

Указатель на символьную строку, завершающуюся значением NULL, которая идентифицирует подраздел драйвера в аппаратном разделе устройства в реестре. Дополнительные сведения об этом члене см. в следующем разделе Примечаний.

Qualifier.DeviceInterfaceKey

Qualifier.DeviceInterfaceKey.InterfaceGUID

Указатель на GUID, который идентифицирует интерфейс устройства. Чтобы зарегистрировать интерфейс устройства, драйвер должен ранее вызывать IWDFDevice::CreateDeviceInterface .

Qualifier.DeviceInterfaceKey.ReferenceString

Указатель на символьную строку, завершающуюся значением NULL, которая идентифицирует ссылочные строки для интерфейса устройства. Драйвер должен указать этот член, если он указал строку ссылки при вызове IWDFDevice::CreateDeviceInterface. В противном случае этот элемент должен иметь значение NULL.

Qualifier.LegacyHardwareKey

Qualifier.LegacyHardwareKey.LegacyMapName

Указатель на символьную строку, завершающуюся null, которая определяет подраздел в разделеHKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP в реестре. Этот ключ используется только несколькими старыми драйверами.

Комментарии

Структура WDF_PROPERTY_STORE_ROOT используется в качестве входных данных для IWDFPropertyStoreFactory::RetrieveDevicePropertyStore и IWDFUnifiedPropertyStoreFactory::RetrieveUnifiedDevicePropertyStore.

Хранилища свойств UMDF представляют разделы реестра, к которым могут получить доступ драйверы. Прежде чем драйвер вызовет один из указанных выше методов, он должен инициализировать структуру WDF_PROPERTY_STORE_ROOT . Драйвер должен обнулить структуру, а затем задать для элемента LengthCb длину структуры.

Чтобы открыть программный ключ, драйвер должен:

  1. Задайте для элемента LengthCb структуры размер структуры.
  2. Задайте для элемента RootClass структуры значение WdfPropertyStoreRootClassSoftwareKey.
Чтобы открыть аппаратный ключ устройства, драйвер должен:
  1. Задайте для элемента LengthCb структуры размер структуры.
  2. Задайте для элемента RootClass структуры значение WdfPropertyStoreRootClassHardwareKey.
  3. Задайте значение для элемента Qualifier.HardwareKey.ServiceName . Это значение должно иметь одно из следующих значений:
    • WDF_PROPERTY_STORE_HARDWARE_KEY_ROOT, чтобы открыть подраздел \Параметры устройства в аппаратном ключе устройства. Драйвер может получить доступ только на чтение к этому подразделу.
    • WDF_PROPERTY_STORE_HARDWARE_KEY_DEFAULT, чтобы открыть подраздел, соответствующий имени службы драйвера, в подразделе \Device Parameters . Драйвер может получить доступ на чтение или запись к этому подразделу. Драйвер может при необходимости создать подраздел , если он не существует.
    • Предоставленная драйвером строка символов, чтобы открыть подраздел с именем, соответствующим строке символов, в подразделе \Device Parameters . Драйвер может получить доступ на чтение или запись к этому подразделу. Драйвер может при необходимости создать подраздел , если он не существует.

    Если драйвер создает подраздел под ключом оборудования устройства, рекомендуется указать WDF_PROPERTY_STORE_HARDWARE_KEY_DEFAULT , так как UMDF создает подраздел, соответствующий имени службы драйвера. Использование этого имени гарантирует, что каждый драйвер создает подраздел с уникальным именем. Драйвер не должен указывать WDF или WUDF в качестве имени подраздела.

Чтобы открыть ключ интерфейса устройства, драйвер должен:
  1. Задайте для элемента LengthCb структуры размер структуры.
  2. Задайте для элемента RootClass структуры значение WdfPropertyStoreRootClassDeviceInterfaceKey.
  3. Задайте для элемента Qualifier.DeviceInterfaceKey.InterfaceGUID идентификатор GUID, указанный драйвером для предыдущего вызова IWDFDevice::CreateDeviceInterface.
  4. Задайте для элемента Qualifier.DeviceInterfaceKey.ReferenceString ссылочной строки, указанной драйвером для предыдущего вызова IWDFDevice::CreateDeviceInterface, или значение NULL , если драйвер не указал ссылочной строки.
Драйвер может получить доступ на чтение или запись к ключу интерфейса устройства.

Чтобы открыть ключ DEVICEMAP, драйвер должен:

  1. Задайте для элемента LengthCb структуры размер структуры.
  2. Задайте для элемента RootClass структуры значение WdfPropertyStoreRootClassLegacyHardwareKey.
  3. Задайте для элемента Qualifier.LegacyHardwareKey.LegacyMapName символьную строку, указывающую подраздел в разделе HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP в реестре.
Драйвер может получить доступ на чтение или запись к указанному подразделу в разделе DEVICEMAP . Драйвер может при необходимости создать подраздел , если он не существует. Однако драйвер, создающий этот подраздел, должен указать флаг WdfPropertyStoreCreateVolatile , чтобы система удаляла подраздел при каждом перезапуске.

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

Требования

Требование Значение
Минимальная версия UMDF 1,9
Верхняя часть wudfddi_types.h (включая Wudfddi.h)

См. также раздел

IWDFPropertyStoreFactory::RetrieveDevicePropertyStore