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


Метод IWDFUnifiedPropertyStoreFactory::RetrieveUnifiedDevicePropertyStore (wudfddi.h)

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

Метод RetrieveUnifiedDevicePropertyStore извлекает единый интерфейс хранилища свойств.

Синтаксис

HRESULT RetrieveUnifiedDevicePropertyStore(
  [in]  PWDF_PROPERTY_STORE_ROOT RootSpecifier,
  [out] IWDFUnifiedPropertyStore **PropertyStore
);

Параметры

[in] RootSpecifier

Адрес структуры WDF_PROPERTY_STORE_ROOT , выделенной драйвером. Драйвер заполняет эту структуру, чтобы определить унифицированное хранилище свойств, которое извлекает RetrieveUnifiedDevicePropertyStore .

[out] PropertyStore

Адрес расположения, которое получает указатель на интерфейс IWDFUnifiedPropertyStore .

Возвращаемое значение

RetrieveUnifiedDevicePropertyStore возвращает S_OK, если операция выполнена успешно. В противном случае метод может вернуть одно из следующих значений.

Код возврата Описание
E_INVALIDARG
Вызывающий объект предоставил недопустимый входной аргумент.
E_OUTOFMEMORY
Сбой при попытке выделения памяти.
 

Этот метод может возвращать одно из других значений, содержащихся в Winerror.h .

Комментарии

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

Элемент RootClassструктуры WDF_PROPERTY_STORE_ROOT , на который указывает RootSpecifier , должен иметь значение WdfPropertyStoreRootClassHardwareKey или WdfPropertyStoreRootClassDeviceInterfaceKey.

Кроме того, если для параметра RootClass задано значение WdfPropertyStoreRootClassHardwareKey, то элемент Qualifier.HardwareKey.ServiceNameобъекта RootSpecifier должен иметь значение NULL.

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

Примеры

В следующем примере кода извлекается единый интерфейс хранилища свойств.

HRESULT
GetDevicePropertyStore(
    _In_  IWDFDevice *                  FxDevice,
    _Out_ IWDFUnifiedPropertyStore **   ppUnifiedPropertyStore
    )
{
    HRESULT hr;
    IWDFUnifiedPropertyStore *          pUnifiedPropertyStore = NULL;
    WDF_PROPERTY_STORE_ROOT             RootSpecifier;
    IWDFUnifiedPropertyStoreFactory *   pUnifiedPropertyStoreFactory = NULL;

    HRESULT hrQI = FxDevice->QueryInterface(
                        IID_PPV_ARGS(&pUnifiedPropertyStoreFactory)
                        );
    WUDF_TEST_DRIVER_ASSERT(SUCCEEDED(hrQI));

    RootSpecifier.LengthCb = sizeof(RootSpecifier);
    RootSpecifier.RootClass = WdfPropertyStoreRootClassHardwareKey;
    RootSpecifier.Qualifier.HardwareKey.ServiceName = NULL;
    
    hr = pUnifiedPropertyStoreFactory->RetrieveUnifiedDevicePropertyStore(
            &RootSpecifier,
            &pUnifiedPropertyStore
            );

    if (FAILED(hr))
    {
        TraceEvents(
            TRACE_LEVEL_ERROR, 
            TEST_TRACE_DEVICE, 
            "Failed to retrieve unified property store for device: ”
            “hr = %!HRESULT!",
            hr
            );
        goto exit;
    }

    *ppUnifiedPropertyStore = pUnifiedPropertyStore;

exit:
    SAFE_RELEASE(pUnifiedPropertyStoreFactory);
    
    return hr;
}

Требования

Требование Значение
Дата окончания поддержки Недоступно в UMDF 2.0 и более поздних версиях.
Целевая платформа Персональный компьютер
Минимальная версия UMDF 1.11
Верхняя часть wudfddi.h (включая Wudfddi.h)
DLL WUDFx.dll

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

IWDFUnifiedPropertyStore

IWDFUnifiedPropertyStoreFactory