Fungsi ZwEnumerateKey (wdm.h)

Rutinitas ZwEnumerateKey mengembalikan informasi tentang subkunci kunci registri terbuka.

Sintaks

NTSYSAPI NTSTATUS ZwEnumerateKey(
  [in]            HANDLE                KeyHandle,
  [in]            ULONG                 Index,
  [in]            KEY_INFORMATION_CLASS KeyInformationClass,
  [out, optional] PVOID                 KeyInformation,
  [in]            ULONG                 Length,
  [out]           PULONG                ResultLength
);

Parameter

[in] KeyHandle

Tangani ke kunci registri yang berisi subkunci yang akan dijumlahkan. Handel dibuat oleh panggilan yang berhasil ke ZwCreateKey atau ZwOpenKey.

[in] Index

Indeks sub-kunci yang ingin Anda informasikan. Jika kunci memiliki n subkey, subkunjuk diberi nomor dari 0 hingga n-1.

[in] KeyInformationClass

Menentukan nilai enumerasi KEY_INFORMATION_CLASS yang menentukan jenis informasi yang akan diterima oleh buffer KeyInformation . Atur KeyInformationClass ke salah satu nilai berikut:

  • KeyBasicInformation

  • KeyFullInformation

  • KeyNodeInformation

Jika ada nilai yang tidak ada dalam daftar ini yang ditentukan, rutinitas mengembalikan kode kesalahan STATUS_INVALID_PARAMETER.

[out, optional] KeyInformation

Arahkan ke buffer yang dialokasikan penelepon yang menerima informasi yang diminta. Parameter KeyInformationClass menentukan jenis informasi yang disediakan.

[in] Length

Menentukan ukuran, dalam byte, dari buffer KeyInformation .

[out] ResultLength

Arahkan ke variabel yang menerima ukuran, dalam byte, dari informasi kunci registri. Jika ZwEnumerateKey mengembalikan STATUS_SUCCESS, Anda dapat menggunakan nilai variabel ini untuk menentukan jumlah data yang dikembalikan. Jika rutinitas mengembalikan STATUS_BUFFER_OVERFLOW atau STATUS_BUFFER_TOO_SMALL, Anda dapat menggunakan nilai variabel ini untuk menentukan ukuran buffer yang diperlukan untuk menyimpan informasi utama.

Nilai kembali

ZwEnumerateKey mengembalikan STATUS_SUCCESS pada keberhasilan, atau kode kesalahan NTSTATUS yang sesuai pada kegagalan. Kemungkinan nilai kode kesalahan meliputi:

Menampilkan kode Deskripsi
STATUS_BUFFER_OVERFLOW Buffer yang disediakan terlalu kecil, dan hanya sebagian data yang telah ditulis ke buffer. *ResultLength diatur ke ukuran minimum yang diperlukan untuk menyimpan informasi yang diminta.
STATUS_BUFFER_TOO_SMALL Buffer yang disediakan terlalu kecil, dan tidak ada data yang ditulis ke buffer. *ResultLength diatur ke ukuran minimum yang diperlukan untuk menyimpan informasi yang diminta.
STATUS_INVALID_PARAMETER Parameter KeyInformationClass bukan nilai KEY_INFORMATION_CLASS yang valid.
STATUS_NO_MORE_ENTRIES Nilai Indeks di luar rentang untuk kunci registri yang ditentukan oleh KeyHandle. Misalnya, jika kunci memiliki n subkunci, maka untuk nilai apa pun yang lebih besar dari n-1 rutin mengembalikan STATUS_NO_MORE_ENTRIES.

Keterangan

Handel harus dibuka dengan akses KEY_ENUMERATE_SUB_KEYS. Ini dicapai dengan meneruskan KEY_ENUMERATE_SUB_KEYS, KEY_READ, atau KEY_ALL_ACCESS sebagai parameter DesiredAccess ke ZwCreateKey atau ZwOpenKey.

Parameter Indeks hanyalah cara untuk memilih di antara subkunci kunci yang disebutkan oleh KeyHandle. Dua panggilan ke ZwEnumerateKey dengan Indeks yang sama tidak dijamin untuk mengembalikan hasil yang sama.

Untuk informasi selengkapnya tentang bekerja dengan kunci registri, lihat Menggunakan Registri di Driver.

Jika panggilan ke fungsi ini terjadi dalam mode pengguna, Anda harus menggunakan nama "NtEnumerateKey" alih-alih "ZwEnumerateKey".

Untuk panggilan dari driver mode kernel, versi NtXxx dan ZwXxx dari rutinItas Windows Native System Services dapat berperilaku berbeda dalam cara mereka menangani dan menginterpretasikan parameter input. Untuk informasi selengkapnya tentang hubungan antara versi NtXxx dan ZwXxx dari rutinitas, lihat Menggunakan Versi Nt dan Zw dari Rutinitas Layanan Sistem Asli.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport), IrqlZwPassive(wdm), PowerIrpDDis(wdm), ZwRegistryCreate(storport), ZwRegistryCreate(storport), ZwRegistryCreate(wdm), ZwRegistryOpen(storport), ZwRegistryOpen(storport), ZwRegistryOpen(wdm)

Lihat juga

KEY_BASIC_INFORMATION

KEY_FULL_INFORMATION

KEY_INFORMATION_CLASS

KEY_NODE_INFORMATION

RtlCheckRegistryKey

RtlCreateRegistryKey

RtlDeleteRegistryValue

RtlQueryRegistryValues

RtlWriteRegistryValue

ZwCreateKey

ZwEnumerateValueKey

ZwOpenKey