Bagikan melalui


Fungsi RegEnumValueW (winreg.h)

Menghitung nilai untuk kunci registri terbuka yang ditentukan. Fungsi menyalin satu nama nilai terindeks dan blok data untuk kunci setiap kali dipanggil.

Sintaksis

LSTATUS RegEnumValueW(
  [in]                HKEY    hKey,
  [in]                DWORD   dwIndex,
  [out]               LPWSTR  lpValueName,
  [in, out]           LPDWORD lpcchValueName,
                      LPDWORD lpReserved,
  [out, optional]     LPDWORD lpType,
  [out, optional]     LPBYTE  lpData,
  [in, out, optional] LPDWORD lpcbData
);

Parameter

[in] hKey

Handel ke kunci registri terbuka. Kunci harus dibuka dengan hak akses KEY_QUERY_VALUE. Untuk informasi selengkapnya, lihat Keamanan Kunci Registri dan Hak Akses.

Handel ini dikembalikan oleh RegCreateKeyEx, RegCreateKeyTransacted, RegOpenKeyEx, atau fungsi RegOpenKeyTransacted. Ini juga bisa menjadi salah satu kunci berikut yang telah ditentukan sebelumnya:

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_PERFORMANCE_DATA
HKEY_USERS

[in] dwIndex

Indeks nilai yang akan diambil. Parameter ini harus nol untuk panggilan pertama ke fungsi RegEnumValue lalu ditingkatkan untuk panggilan berikutnya.

Karena nilai tidak diurutkan, nilai baru apa pun akan memiliki indeks arbitrer. Ini berarti bahwa fungsi dapat mengembalikan nilai dalam urutan apa pun.

[out] lpValueName

Penunjuk ke buffer yang menerima nama nilai sebagai string nulldihentikan.

Buffer ini harus cukup besar untuk menyertakan karakter null yang dihentikan.

Untuk informasi selengkapnya, lihat Batas Ukuran Elemen Registri.

[in, out] lpcchValueName

Penunjuk ke variabel yang menentukan ukuran buffer yang diacu oleh parameter lpValueName, dalam karakter. Ketika fungsi kembali, variabel menerima jumlah karakter yang disimpan dalam buffer, tidak termasuk karakter null dihentikan.

Nama nilai registri dibatasi hingga 32.767 byte. Versi ANSI dari fungsi ini memperlakukan parameter ini sebagai nilai SHORT . Oleh karena itu, jika Anda menentukan nilai yang lebih besar dari 32.767 byte, ada luapan dan fungsi dapat mengembalikan ERROR_MORE_DATA.

lpReserved

Parameter ini dicadangkan dan harus NULL.

[out, optional] lpType

Penunjuk ke variabel yang menerima kode yang menunjukkan jenis data yang disimpan dalam nilai yang ditentukan. Untuk daftar kode jenis yang mungkin, lihat Jenis Nilai Registri . Parameter lpType dapat null jika kode jenis tidak diperlukan.

[out, optional] lpData

Penunjuk ke buffer yang menerima data untuk entri nilai. Parameter ini dapat NULL jika data tidak diperlukan.

Jika lpData NULL dan lpcbData non-NULL, fungsi menyimpan ukuran data, dalam byte, dalam variabel yang ditunjukkan oleh lpcbData. Ini memungkinkan aplikasi untuk menentukan cara terbaik untuk mengalokasikan buffer untuk data.

[in, out, optional] lpcbData

Penunjuk ke variabel yang menentukan ukuran buffer yang diacu oleh parameter lpData , dalam byte. Ketika fungsi kembali, variabel menerima jumlah byte yang disimpan dalam buffer.

Parameter ini dapat NULL hanya jika lpData NULL.

Jika data memiliki jenis REG_SZ, REG_MULTI_SZ, atau REG_EXPAND_SZ, ukuran ini mencakup karakter atau karakter null yang dihentikan. Untuk informasi selengkapnya, lihat Keterangan.

Jika buffer yang ditentukan oleh lpData tidak cukup besar untuk menyimpan data, fungsi mengembalikan ERROR_MORE_DATA dan menyimpan ukuran buffer yang diperlukan dalam variabel yang ditunjukkan oleh lpcbData. Dalam hal ini, konten lpData tidak terdefinisi.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan adalah ERROR_SUCCESS.

Jika fungsi gagal, nilai yang dikembalikan adalah kode kesalahan sistem . Jika tidak ada nilai lagi yang tersedia, fungsi akan mengembalikan ERROR_NO_MORE_ITEMS.

Jika buffer lpData terlalu kecil untuk menerima nilai, fungsi akan mengembalikan ERROR_MORE_DATA.

Komentar

Untuk menghitung nilai, aplikasi awalnya harus memanggil fungsi RegEnumValue dengan parameter dwIndex diatur ke nol. Aplikasi kemudian harus menaikkan dwIndex dan memanggil fungsi RegEnumValue sampai tidak ada nilai lagi (sampai fungsi mengembalikan ERROR_NO_MORE_ITEMS).

Aplikasi juga dapat mengatur dwIndex ke indeks nilai terakhir pada panggilan pertama ke fungsi dan mengurangi indeks hingga nilai dengan indeks 0 dijumlahkan. Untuk mengambil indeks nilai terakhir, gunakan fungsi RegQueryInfoKey.

Saat menggunakan RegEnumValue, aplikasi tidak boleh memanggil fungsi registri apa pun yang mungkin mengubah kunci yang dikueri.

Jika data memiliki jenis REG_SZ, REG_MULTI_SZ, atau REG_EXPAND_SZ, string mungkin belum disimpan dengan karakternull yang tepat. Oleh karena itu, bahkan jika fungsi mengembalikan ERROR_SUCCESS, aplikasi harus memastikan bahwa string dihentikan dengan benar sebelum menggunakannya; jika tidak, itu dapat menimpa buffer. (Perhatikan bahwa string REG_MULTI_SZ harus memiliki dua karakter null-mengakhiri.)

Untuk menentukan ukuran maksimum nama dan buffer data, gunakan fungsi RegQueryInfoKey.

Contoh

Misalnya, lihat Menghitung Subkunci Registri.

Nota

Header winreg.h mendefinisikan RegEnumValue sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosem UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

Syarat Nilai
klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Platform Target Windows
Header winreg.h (termasuk Windows.h)
Pustaka Advapi32.lib
DLL Advapi32.dll

Lihat juga

RegCreateKeyEx

RegEnumKeyEx

RegOpenKeyEx

RegQueryInfoKey

Fungsi Registri

Gambaran Umum Registri