Compartilhar via


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

[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso 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 com UMDF.]

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

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 recuperado por RetrieveUnifiedDevicePropertyStore .

[out] PropertyStore

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

Retornar valor

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 ao tentar alocar memória.
 

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

Comentários

Seu 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 RootClass da estrutura WDF_PROPERTY_STORE_ROOT apontada por RootSpecifier deve ser definido como WdfPropertyStoreRootClassHardwareKey ou WdfPropertyStoreRootClassDeviceInterfaceKey.

Além disso, se RootClass estiver definido como WdfPropertyStoreRootClassHardwareKey, o membro Qualifier.HardwareKey.ServiceName 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 unificada do repositório de propriedades.

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.
Plataforma de Destino Área de Trabalho
Versão mínima do UMDF 1.11
Cabeçalho wudfddi.h (inclua Wudfddi.h)
DLL WUDFx.dll

Confira também

IWDFUnifiedPropertyStore

IWDFUnifiedPropertyStoreFactory