Compartilhar via


Método IWDFUnifiedPropertyStoreFactory::RetrieveUnifiedDevicePropertyStore (wudfddi.h)

[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum recurso novo está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar o UMDF 2. Para obter mais informações, consulte Introdução aoda UMDF .]

O método RetrieveUnifiedDevicePropertyStore recupera uma interface de repositório de propriedades unificada.

Sintaxe

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

Parâmetros

[in] RootSpecifier

O endereço de uma estrutura de WDF_PROPERTY_STORE_ROOT alocada pelo driver. O driver preenche essa estrutura para identificar o repositório de propriedades unificado que recupera RetrieveUnifiedDevicePropertyStore.

[out] PropertyStore

O endereço de um local que recebe um ponteiro para uma interface IWDFUnifiedPropertyStore.

Valor de retorno

RetrieveUnifiedDevicePropertyStore retornará S_OK se a operação for bem-sucedida. Caso contrário, o método poderá retornar um dos valores a seguir.

Código de retorno Descrição
E_INVALIDARG
O chamador forneceu um argumento de entrada inválido.
E_OUTOFMEMORY
Falha na tentativa de alocar memória.
 

Esse método pode retornar um dos outros valores que winerror.h contém.

Observações

O driver pode chamar RetrieveUnifiedDevicePropertyStore para obter acesso à chave de hardware de um dispositivo atual ou a uma chave de interface do dispositivo compatível com o dispositivo.

O membro do RootClass da estrutura WDF_PROPERTY_STORE_ROOT apontada pelo RootSpecifier deve ser definido como WdfPropertyStoreRootClassHardwareKey ou WdfPropertyStoreRootClassDeviceInterfaceKey.

Além disso, se RootClass estiver definido como WdfPropertyStoreRootClassHardwareKey, o Qualifier.HardwareKey.ServiceName membro do RootSpecifier deverá ser NULL.

Para obter mais informações sobre como acessar o registro, consulte Usando o Registro em drivers baseados em UMDF.

Exemplos

O exemplo de código a seguir recupera uma interface de repositório de propriedades unificada.

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;
}

Requisitos

Requisito Valor
fim do suporte Indisponível no UMDF 2.0 e posterior.
da Plataforma de Destino Área de trabalho
versão mínima do UMDF 1.11
cabeçalho wudfddi.h (inclua Wudfddi.h)
de DLL WUDFx.dll

Consulte também

IWDFUnifiedPropertyStore

IWDFUnifiedPropertyStoreFactory