Metodo IWDFPropertyStoreFactory::RetrieveDevicePropertyStore (wudfddi.h)

[Avviso: UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre info, vedi Introduzione con UMDF.]

Il metodo RetrieveDevicePropertyStore recupera un'interfaccia dell'archivio delle proprietà che i driver possono usare per accedere al Registro di sistema.

Sintassi

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

Parametri

[in] RootSpecifier

Indirizzo di una struttura WDF_PROPERTY_STORE_ROOT allocata dal driver. Il driver compila questa struttura per identificare l'archivio delle proprietà recuperato da RetrieveDevicePropertyStore .

[in] Flags

Flag tipizzato WDF_PROPERTY_STORE_RETRIEVE_FLAGS che specifica se UMDF deve creare una voce del Registro di sistema specificata se non esiste e se la nuova voce deve essere eliminata al riavvio di Windows.

[in] DesiredAccess

Maschera di bit tipizzata REGSAM che specifica i tipi di accesso al Registro di sistema che si desidera che il driver abbia. Il tipo REGSAM è definito in Winreg.h ed è descritto nella Windows SDK in REGSAM. La maschera di bit non deve specificare GENERIC_WRITE, KEY_CREATE_SUB_KEY o WRITE_DAC l'accesso. Anche se il driver non può specificare KEY_CREATE_SUB_KEY, la chiamata a RetrieveDevicePropertyStore può creare una sottochiave.

[in] SubkeyPath

Puntatore a una stringa di caratteri fornita dal chiamante che rappresenta il nome di una sottochiave che si trova nella chiave del Registro di sistema specificata dal parametro RootSpecifier . Questo parametro è facoltativo e può essere NULL. Per altre informazioni, vedere la sezione Osservazioni.

[out] PropertyStore

Indirizzo di una posizione che riceve un puntatore a un'interfaccia IWDFNamedPropertyStore2 . Il driver usa questa interfaccia per accedere ai valori nel Registro di sistema.

[out] Disposition

Indirizzo di una posizione che riceve un valore tipizzato WDF_PROPERTY_STORE_DISPOSITION.

Valore restituito

RetrieveDevicePropertyStore restituisce S_OK se l'operazione ha esito positivo. In caso contrario, il metodo potrebbe restituire uno dei valori seguenti:

Codice restituito Descrizione
E_INVALIDARG
Il chiamante ha fornito un argomento di input non valido.
E_OUTOFMEMORY
Tentativo di allocazione della memoria non riuscito.
 

Questo metodo potrebbe restituire uno degli altri valori che Winerror.h contiene

Commenti

Il driver può chiamare RetrieveDevicePropertyStore per ottenere l'accesso alla chiave software del driver, alla chiave hardware del dispositivo corrente, alle chiavi per le interfacce del dispositivo supportate dal dispositivo corrente o alla chiave DEVICEMAP .

Se si specifica il parametro SubkeyPath , è necessario usare un nome univoco, ad esempio il nome del servizio del driver. Un driver può usare una sottochiave per archiviare informazioni specifiche del dispositivo.

Per altre informazioni sull'uso di RetrieveDevicePropertyStore per accedere al Registro di sistema, vedere Uso del Registro di sistema nei driver basati su UMDF.

Esempio

Nell'esempio di codice seguente viene recuperato il valore assegnato alla voce PortName nella chiave hardware di 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);
...

Requisiti

Requisito Valore
Fine del supporto Non disponibile in UMDF 2.0 e versioni successive.
Piattaforma di destinazione Desktop
Versione UMDF minima 1,9
Intestazione wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Vedi anche

IWDFDevice::RetrieveDevicePropertyStore

IWDFDeviceInitialize::RetrieveDevicePropertyStore

IWDFPropertyStoreFactory