Método IWDFPropertyStoreFactory::RetrieveDevicePropertyStore (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 RetrieveDevicePropertyStore recupera uma interface de repositório de propriedades que os drivers podem usar para acessar o registro.
Sintaxe
HRESULT RetrieveDevicePropertyStore(
[in] PWDF_PROPERTY_STORE_ROOT RootSpecifier,
[in] WDF_PROPERTY_STORE_RETRIEVE_FLAGS Flags,
[in] REGSAM DesiredAccess,
[in] PCWSTR SubkeyPath,
[out] IWDFNamedPropertyStore2 **PropertyStore,
[out] WDF_PROPERTY_STORE_DISPOSITION *Disposition
);
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 recuperado por RetrieveDevicePropertyStore .
[in] Flags
Um sinalizador do tipo WDF_PROPERTY_STORE_RETRIEVE_FLAGS que especifica se o UMDF deve criar uma entrada de registro especificada se ela não existir e se a nova entrada deve ser excluída quando o Windows for reiniciado.
[in] DesiredAccess
Uma máscara de bits do tipo REGSAM que especifica os tipos de acesso ao registro que você deseja que o driver tenha. O tipo REGSAM é definido em Winreg.h e é descrito no SDK do Windows em REGSAM. A máscara de bits não deve especificar GENERIC_WRITE, KEY_CREATE_SUB_KEY ou acesso WRITE_DAC. (Embora o driver não possa especificar KEY_CREATE_SUB_KEY, sua chamada para RetrieveDevicePropertyStore pode criar uma subchave.)
[in] SubkeyPath
Um ponteiro para uma cadeia de caracteres fornecida pelo chamador que representa o nome de uma subchave localizada sob a chave do Registro especificada pelo parâmetro RootSpecifier . Esse parâmetro é opcional e pode ser NULL. Confira mais informações em Comentários.
[out] PropertyStore
O endereço de um local que recebe um ponteiro para uma interface IWDFNamedPropertyStore2 . O driver usa essa interface para acessar valores no Registro.
[out] Disposition
O endereço de um local que recebe um valor de tipo WDF_PROPERTY_STORE_DISPOSITION.
Retornar valor
RetrieveDevicePropertyStore retornará S_OK se a operação for bem-sucedida. Caso contrário, o método poderá retornar um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
O chamador forneceu um argumento de entrada inválido. |
|
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 RetrieveDevicePropertyStore para obter acesso à chave de software do driver, a chave de hardware do dispositivo atual, chaves para as interfaces de dispositivo compatíveis com o dispositivo atual ou a chave DEVICEMAP .
Se você fornecer o parâmetro SubkeyPath , deverá usar um nome exclusivo, como o nome de serviço do driver. Um driver pode usar uma subchave para armazenar informações específicas do dispositivo.
Para obter mais informações sobre como usar RetrieveDevicePropertyStore para acessar o registro, consulte Usando o Registro em Drivers baseados em UMDF.
Exemplos
O exemplo de código a seguir recupera o valor atribuído à entrada PortName sob a chave de hardware de um dispositivo.
IWDFPropertyStoreFactory *pPropertyStoreFactory = NULL;
WDF_PROPERTY_STORE_ROOT RootSpecifier;
IWDFNamedPropertyStore2 * pHardwarePropertyStore2 = NULL;
PROPVARIANT comPortPV;
WCHAR portName[] = L"PortName";
HRESULT hr;
...
//
// Get the property store factory interface.
//
hr = m_FxDevice->QueryInterface(IID_PPV_ARGS(&pPropertyStoreFactory));
if (FAILED(hr))
{
goto Exit;
}
//
//Initialize the WDF_PROPERTY_STORE_ROOT structure. We want to open the
// \Device Parameters subkey under the device's hardware key.
//
RtlZeroMemory(&RootSpecifier,
sizeof(WDF_PROPERTY_STORE_ROOT));
RootSpecifier.LengthCb = sizeof(WDF_PROPERTY_STORE_ROOT);
RootSpecifier.RootClass = WdfPropertyStoreRootClassHardwareKey;
RootSpecifier.Qualifier.HardwareKey.ServiceName = WDF_PROPERTY_STORE_HARDWARE_KEY_ROOT;
//
// Get the property store interface for the hardware key of the
// device that m_FxDevice represents.
//
hr = pPropertyStoreFactory->RetrieveDevicePropertyStore(
&RootSpecifier,
WdfPropertyStoreNormal,
KEY_QUERY_VALUE,
NULL,
&pHardwarePropertyStore2,
NULL
);
if (FAILED(hr))
{
goto Exit;
}
//
// Get the value of the "PortName" entry, which is stored under
// the device's \Device Parameters subkey.
//
PropVariantInit(&comPortPV);
hr = pHardwarePropertyStore2->GetNamedValue(portName,
&comPortPV);
if (FAILED(hr))
{
goto Exit;
}
...
Exit:
SAFE_RELEASE(pHardwarePropertyStore2);
SAFE_RELEASE(pPropertyStoreFactory);
...
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,9 |
Cabeçalho | wudfddi.h (inclua Wudfddi.h) |
DLL | WUDFx.dll |
Confira também
IWDFDevice::RetrieveDevicePropertyStore