Compartir a través de


Método IWDFPropertyStoreFactory::RetrieveDevicePropertyStore (wudfddi.h)

[Advertencia: UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los controladores UMDF nuevos deben escribirse con UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2. Para obtener más información, consulta Introducción con UMDF.

El método RetrieveDevicePropertyStore recupera una interfaz de almacén de propiedades que los controladores pueden usar para acceder al registro.

Sintaxis

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

Dirección de una estructura de WDF_PROPERTY_STORE_ROOT asignada por el controlador. El controlador rellena esta estructura para identificar el almacén de propiedades que retrieveDevicePropertyStore recupera.

[in] Flags

Marca con tipo WDF_PROPERTY_STORE_RETRIEVE_FLAGS que especifica si UMDF debe crear una entrada del Registro especificada si no existe y si la nueva entrada debe eliminarse cuando se reinicie Windows.

[in] DesiredAccess

Máscara de bits con tipo REGSAM que especifica los tipos de acceso al registro que desea que tenga el controlador. El tipo REGSAM se define en Winreg.h y se describe en el Windows SDK en REGSAM. La máscara de bits no debe especificar GENERIC_WRITE, KEY_CREATE_SUB_KEY ni acceso WRITE_DAC. (Aunque el controlador no puede especificar KEY_CREATE_SUB_KEY, su llamada a RetrieveDevicePropertyStore puede crear una subclave).

[in] SubkeyPath

Puntero a una cadena de caracteres proporcionada por el autor de la llamada que representa el nombre de una subclave ubicada bajo la clave del Registro que especifica el parámetro RootSpecifier . Este parámetro es opcional y puede ser NULL. Vea más información en Comentarios.

[out] PropertyStore

Dirección de una ubicación que recibe un puntero a una interfaz IWDFNamedPropertyStore2 . El controlador usa esta interfaz para acceder a los valores del Registro.

[out] Disposition

Dirección de una ubicación que recibe un valor con tipo WDF_PROPERTY_STORE_DISPOSITION.

Valor devuelto

RetrieveDevicePropertyStore devuelve S_OK si la operación se realiza correctamente. De lo contrario, el método podría devolver uno de los siguientes valores:

Código devuelto Descripción
E_INVALIDARG
El llamador proporcionó un argumento de entrada no válido.
E_OUTOFMEMORY
Error al tratar de asignar memoria.
 

Este método puede devolver uno de los otros valores que Winerror.h contiene.

Comentarios

El controlador puede llamar a RetrieveDevicePropertyStore para obtener acceso a la clave de software del controlador, la clave de hardware del dispositivo actual, las claves de las interfaces de dispositivo que admite el dispositivo actual o la clave DEVICEMAP .

Si proporciona el parámetro SubkeyPath , debe usar un nombre único, como el nombre del servicio del controlador. Un controlador puede usar una subclave para almacenar información específica del dispositivo.

Para obtener más información sobre el uso de RetrieveDevicePropertyStore para acceder al registro, consulte Uso del Registro en controladores basados en UMDF.

Ejemplos

En el ejemplo de código siguiente se recupera el valor que se asigna a la entrada PortName en la clave de hardware de un 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 Value
Finalización del soporte técnico No disponible en UMDF 2.0 y versiones posteriores.
Plataforma de destino Escritorio
Versión mínima de UMDF 1,9
Encabezado wudfddi.h (incluya Wudfddi.h)
Archivo DLL WUDFx.dll

Consulte también

IWDFDevice::RetrieveDevicePropertyStore

IWDFDeviceInitialize::RetrieveDevicePropertyStore

IWDFPropertyStoreFactory