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


Метод 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

Адрес расположения, получающего указатель на интерфейс IWDFUnifiedProperty Store.

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

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

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

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

Замечания

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

Элемент корневого класса 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 (include Wudfddi.h)
DLL WUDFx.dll

См. также

IWDFUnifiedPropertyStore

IWDFUnifiedPropertyStoreFactory