IWDFUnifiedPropertyStoreFactory::RetrieveUnifiedDevicePropertyStore 方法 (wudfddi.h)

[警告: UMDF 2 是最新版本的 UMDF,并取代 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 不会向 UMDF 1 添加任何新功能,并且较新版本的 Windows 10 上对 UMDF 1 的支持有限。 通用 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 来获取对当前设备硬件密钥或设备支持的设备接口密钥的访问权限。

RootSpecifier 指向的 WDF_PROPERTY_STORE_ROOT 结构的 RootClass 成员必须设置为 WdfPropertyStoreRootClassHardwareKeyWdfPropertyStoreRootClassDeviceInterfaceKey

此外,如果 RootClass 设置为 WdfPropertyStoreRootClassHardwareKey,则 RootSpecifierQualifier.HardwareKey.ServiceName 成员必须为 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