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 |
---|---|
|
Pemanggil menyediakan argumen input yang tidak valid. |
|
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