Fungsi WdfFdoInitOpenRegistryKey (wdffdo.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfFdoInitOpenRegistryKey membuka kunci perangkat keras perangkat atau kunci perangkat lunak driver di registri dan membuat objek kunci registri kerangka kerja yang mewakili kunci registri.
Sintaks
NTSTATUS WdfFdoInitOpenRegistryKey(
[in] PWDFDEVICE_INIT DeviceInit,
[in] ULONG DeviceInstanceKeyType,
[in] ACCESS_MASK DesiredAccess,
[in, optional] PWDF_OBJECT_ATTRIBUTES KeyAttributes,
[out] WDFKEY *Key
);
Parameter
[in] DeviceInit
Penunjuk ke struktur WDFDEVICE_INIT yang diperoleh driver dari fungsi panggilan balik EvtDriverDeviceAdd .
[in] DeviceInstanceKeyType
Menentukan kunci atau subkunjuk mana yang akan dibuka.
Catatan
UMDF tidak mendukung pembuatan subkunci.
Ini adalah bitwise ATAU dari bendera berikut (yang didefinisikan dalam Wdm.h).
Bendera DeviceInstanceKeyType | Makna | Kerangka Kerja |
---|---|---|
PLUGPLAY_REGKEY_DEVICE | Membuka kunci perangkat keras perangkat. | KMDF/UMDF |
PLUGPLAY_REGKEY_DRIVER | Membuka kunci perangkat lunak driver. Driver UMDF yang mengatur bendera ini juga harus mengatur DesiredAccess ke KEY_READ. Jika tidak, metode ini mengembalikan STATUS_ACCESS_DENIED. | KMDF/UMDF |
PLUGPLAY_REGKEY_CURRENT_HWPROFILE | Driver KMDF menggunakan bendera ini untuk membuka salinan kunci perangkat keras atau perangkat lunak yang ada di profil perangkat keras saat ini. | KMDF |
PLUGPLAY_REGKEY_DRIVER | WDF_REGKEY_DRIVER_SUBKEY | Driver UMDF menggunakan bendera ini bersama-sama untuk membuka subkunji ServiceName dari kunci perangkat lunak driver untuk akses baca/tulis. | UMDF |
PLUGPLAY_REGKEY_DEVICE | WDF_REGKEY_DEVICE_SUBKEY | Demikian pula, driver UMDF menggunakan bendera ini untuk membuka subkunci ServiceName dari kunci perangkat keras perangkat untuk akses baca/tulis. | UMDF |
[in] DesiredAccess
Nilai jenis ACCESS_MASK yang menentukan hak akses yang diminta driver untuk kunci registri yang ditentukan.
Driver KMDF biasanya meminta KEY_READ, KEY_WRITE, atau KEY_READ | KEY_WRITE.
Jika Anda menulis driver UMDF, gunakan tabel berikut.
DeviceInstanceKeyType | DesiredAccess |
---|---|
PLUGPLAY_REGKEY_DEVICE | KEY_READ |
PLUGPLAY_REGKEY_DEVICE | WDF_REGKEY_DEVICE_SUBKEY | KEY_READ atau KEY_READ | KEY_SET_VALUE |
PLUGPLAY_REGKEY_DRIVER | KEY_READ |
PLUGPLAY_REGKEY_DRIVER | WDF_REGKEY_DRIVER_SUBKEY | KEY_READ atau KEY_READ | KEY_SET_VALUE |
Sebagai praktik terbaik, mintalah hanya jenis akses yang dibutuhkan driver Anda.
[in, optional] KeyAttributes
Penunjuk ke struktur WDF_OBJECT_ATTRIBUTES yang berisi atribut yang disediakan driver untuk objek kunci registri baru. Parameter ini bersifat opsional dan dapat WDF_NO_OBJECT_ATTRIBUTES.
[out] Key
Penunjuk ke lokasi yang menerima handel ke objek kunci registri baru.
Mengembalikan nilai
WdfFdoInitOpenRegistryKey mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode mungkin mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
WdfFdoInitOpenRegistryKey tidak dipanggil di IRQL = PASSIVE_LEVEL. |
|
Parameter yang tidak valid ditentukan, atau driver tidak mendapatkan struktur WDFDEVICE_INIT dari fungsi panggilan balik EvtDriverDeviceAdd-nya . Untuk UMDF, nilai pengembalian ini dapat menunjukkan hak akses yang tidak memadai. |
|
Objek kunci registri tidak dapat dialokasikan. |
|
Kunci registri yang ditentukan tidak ada. |
Untuk daftar nilai pengembalian lain yang mungkin dikembalikan oleh metode WdfFdoInitOpenRegistryKey , lihat Kesalahan Pembuatan Objek Kerangka Kerja.
Metode ini mungkin juga mengembalikan nilai NTSTATUS lainnya.
Keterangan
Driver harus memanggil WdfFdoInitOpenRegistryKey sebelum memanggil WdfDeviceCreate. Untuk informasi selengkapnya tentang memanggil WdfDeviceCreate, lihat Membuat Objek Perangkat Kerangka Kerja.
Untuk informasi selengkapnya tentang metode WdfFdoInitOpenRegistryKey , lihat Membuat Objek Perangkat di Driver Fungsi.
atau informasi selengkapnya tentang registri, kunci perangkat keras dan perangkat lunak, dan objek registri, lihat Menggunakan Registri di driver Framework-Based.
Contoh
Contoh kode berikut membuka kunci perangkat keras perangkat, dengan akses baca.
WDFKEY key;
NTSTATUS status;
status = WdfFdoInitOpenRegistryKey(
DeviceInit,
PLUGPLAY_REGKEY_DEVICE,
GENERIC_READ,
WDF_NO_OBJECT_ATTRIBUTES,
&key
);
if (!NT_SUCCESS(status)) {
return status;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdffdo.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
Aturan kepatuhan DDI | DeviceInitAPI(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |