Bagikan melalui


Metode IWDFPropertyStoreFactory::RetrieveDevicePropertyStore (wudfddi.h)

[Peringatan: UMDF 2 adalah versi terbaru UMDF dan pengganti UMDF 1. Semua driver UMDF baru harus ditulis menggunakan UMDF 2. Tidak ada fitur baru yang ditambahkan ke UMDF 1 dan ada dukungan terbatas untuk UMDF 1 pada versi Windows 10 yang lebih baru. Driver Universal Windows harus menggunakan UMDF 2. Untuk informasi selengkapnya, lihat Mulai menggunakan UMDF.]

Metode RetrieveDevicePropertyStore mengambil antarmuka penyimpanan properti yang dapat digunakan driver untuk mengakses registri.

Sintaks

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

Parameter

[in] RootSpecifier

Alamat struktur WDF_PROPERTY_STORE_ROOT yang dialokasikan driver. Driver mengisi struktur ini untuk mengidentifikasi penyimpanan properti yang diambil RetrieveDevicePropertyStore .

[in] Flags

Bendera berjenis WDF_PROPERTY_STORE_RETRIEVE_FLAGS yang menentukan apakah UMDF harus membuat entri registri tertentu jika tidak ada, dan apakah entri baru harus dihapus saat Windows dimulai ulang.

[in] DesiredAccess

Masker bit jenis REGSAM yang menentukan jenis akses ke registri yang Anda inginkan untuk dimiliki driver Anda. Jenis REGSAM didefinisikan dalam Winreg.h, dan dijelaskan dalam Windows SDK di REGSAM. Masker bit tidak boleh menentukan akses GENERIC_WRITE, KEY_CREATE_SUB_KEY, atau WRITE_DAC. (Meskipun driver tidak dapat menentukan KEY_CREATE_SUB_KEY, panggilannya ke RetrieveDevicePropertyStore dapat membuat subkunci.)

[in] SubkeyPath

Penunjuk ke string karakter yang disediakan penelepon yang mewakili nama subkunci yang terletak di bawah kunci registri yang ditentukan parameter RootSpecifier . Parameter ini bersifat opsional dan dapat berupa NULL. Lihat informasi selengkapnya di Keterangan.

[out] PropertyStore

Alamat lokasi yang menerima pointer ke antarmuka IWDFNamedPropertyStore2 . Driver menggunakan antarmuka ini untuk mengakses nilai dalam registri.

[out] Disposition

Alamat lokasi yang menerima nilai WDF_PROPERTY_STORE_DISPOSITION-ketik.

Nilai kembali

RetrieveDevicePropertyStore mengembalikan S_OK jika operasi berhasil. Jika tidak, metode mungkin mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
E_INVALIDARG
Pemanggil menyediakan argumen input yang tidak valid.
E_OUTOFMEMORY
Upaya untuk mengalokasikan memori gagal.
 

Metode ini mungkin mengembalikan salah satu nilai lain yang dikandung Winerror.h

Keterangan

Driver Anda dapat memanggil RetrieveDevicePropertyStore untuk mendapatkan akses ke kunci perangkat lunak driver, kunci perangkat keras perangkat saat ini, kunci untuk antarmuka perangkat yang didukung perangkat saat ini, atau kunci DEVICEMAP .

Jika Anda menyediakan parameter SubkeyPath , Anda harus menggunakan nama unik, seperti nama layanan driver. Driver mungkin menggunakan kunci sekunder untuk menyimpan informasi khusus perangkat.

Untuk informasi selengkapnya tentang menggunakan RetrieveDevicePropertyStore untuk mengakses registri, lihat Menggunakan Registri di Driver berbasis UMDF.

Contoh

Contoh kode berikut mengambil nilai yang ditetapkan ke entri PortName di bawah kunci perangkat keras perangkat.

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

Persyaratan

Persyaratan Nilai
Akhir dukungan Tidak tersedia di UMDF 2.0 dan yang lebih baru.
Target Platform Desktop
Versi UMDF minimum 1.9
Header wudfddi.h (termasuk Wudfddi.h)
DLL WUDFx.dll

Lihat juga

IWDFDevice::RetrieveDevicePropertyStore

IWDFDeviceInitialize::RetrieveDevicePropertyStore

IWDFPropertyStoreFactory