Метод 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, если операция завершится успешно. В противном случае метод может вернуть одно из следующих значений.
Возвращаемый код | Описание |
---|---|
|
Вызывающий объект предоставил недопустимый входной аргумент. |
|
Не удалось выделить память. |
Этот метод может возвращать одно из других значений, содержащих 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 |