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
STATUS_INVALID_DEVICE_REQUEST

WdfFdoInitOpenRegistryKey tidak dipanggil di IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
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.
STATUS_INSUFFICIENT_RESOURCES
Objek kunci registri tidak dapat dialokasikan.
STATUS_OBJECT_NAME_NOT_FOUND
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)

Lihat juga

WdfDeviceOpenRegistryKey

WdfDriverOpenParametersRegistryKey