Bagikan melalui


Fungsi ZwSetValueKey (wdm.h)

Rutinitas ZwSetValueKey membuat atau mengganti entri nilai kunci registri.

Sintaks

NTSYSAPI NTSTATUS ZwSetValueKey(
  [in]           HANDLE          KeyHandle,
  [in]           PUNICODE_STRING ValueName,
  [in, optional] ULONG           TitleIndex,
  [in]           ULONG           Type,
  [in, optional] PVOID           Data,
  [in]           ULONG           DataSize
);

Parameter

[in] KeyHandle

Tangani ke kunci registri untuk menulis entri nilai. Handel ini dibuat oleh panggilan yang berhasil ke ZwCreateKey atau ZwOpenKey.

[in] ValueName

Arahkan ke nama entri nilai tempat data akan ditulis. Parameter ini bisa menjadi penunjuk NULL jika entri nilai tidak memiliki nama. Jika string nama ditentukan dan nama yang diberikan tidak unik relatif terhadap kunci yang berisi, data untuk entri nilai yang ada diganti.

[in, optional] TitleIndex

Parameter ini dicadangkan. Perangkat dan driver perantara harus mengatur parameter ini ke nol.

[in] Type

Salah satu jenis data yang ditentukan sistem berikut untuk ditulis:

Ketik nilai Makna
REG_BINARY Data biner dalam bentuk apa pun.
REG_DWORD Nilai numerik 4 byte.
REG_DWORD_LITTLE_ENDIAN Nilai numerik 4 byte dengan byte yang paling tidak signifikan pada alamat terendah. Identik dengan REG_DWORD.
REG_DWORD_BIG_ENDIAN Nilai numerik 4 byte dengan byte paling tidak signifikan pada alamat tertinggi.
REG_EXPAND_SZ String Unicode yang dihentikan null yang berisi referensi yang tidak terlampir ke variabel lingkungan, seperti "%PATH%".
REG_LINK String Unicode yang menamai tautan simbolis. Jenis ini tidak relevan dengan perangkat dan driver perantara.
REG_MULTI_SZ Array string yang dihentikan null, dihentikan oleh nol lain.
REG_NONE Data tanpa jenis tertentu.
REG_SZ String Unicode yang dihentikan null.
REG_RESOURCE_LIST Daftar sumber daya perangkat keras driver perangkat, yang digunakan oleh driver atau salah satu perangkat fisik yang dikontrolnya, di pohon \ResourceMap
REG_RESOURCE_REQUIREMENTS_LIST Daftar kemungkinan sumber daya perangkat keras driver perangkat atau salah satu perangkat fisik yang dapat digunakannya, dari mana sistem menulis subset ke pohon \ResourceMap
REG_FULL_RESOURCE_DESCRIPTOR Daftar sumber daya perangkat keras yang digunakan perangkat fisik, terdeteksi, dan ditulis ke dalam pohon \HardwareDescription oleh sistem

Driver perangkat tidak boleh mencoba memanggil ZwSetValueKey untuk menulis entri nilai secara eksplisit dalam subkuntang dari kunci \Registri...\ResourceMap . Hanya sistem yang dapat menulis entri nilai ke pohon \Registry...\HardwareDescription .

[in, optional] Data

Penunjuk ke buffer yang dialokasikan pemanggil yang berisi data untuk entri nilai.

[in] DataSize

Menentukan ukuran, dalam byte, dari buffer Data . Jika Jenis REG_XXX_SZ, nilai ini harus menyertakan ruang untuk nol yang mengakhiri.

Nilai kembali

ZwSetValueKey mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, rutinitas ini mungkin mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
STATUS_ACCESS_DENIED Pemanggil tidak memiliki akses yang sesuai ke nilai registri.
STATUS_INVALID_HANDLE Handel tidak valid.

Keterangan

KeyHandle yang diteruskan ke ZwSetValueKey harus telah dibuka dengan bendera KEY_SET_VALUE DesiredAccess yang diatur agar panggilan ini berhasil. Untuk deskripsi nilai yang mungkin untuk DesiredAccess, lihat ZwCreateKey.

Jika kunci yang diberikan tidak memiliki entri nilai yang ada dengan nama yang cocok dengan ValueName yang diberikan, ZwSetValueKey membuat entri nilai baru dengan nama yang diberikan. Jika ada nama entri nilai yang cocok, rutinitas ini menimpa entri nilai asli untuk ValueName yang diberikan. Dengan demikian, ZwSetValueKey mempertahankan nama unik untuk setiap entri nilai dari kunci tertentu. Meskipun setiap nama entri nilai harus unik untuk kunci yang berisi, banyak kunci yang berbeda dalam registri dapat memiliki entri nilai dengan nama 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 "NtSetValueKey" alih-alih "ZwSetValueKey".

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

HalAssignSlotResources

IoAssignResources

IoQueryDeviceDescription

IoReportResourceUsage

Menggunakan Versi Nt dan Zw dari Rutinitas Layanan Sistem Asli

ZwClose

ZwCreateKey

ZwFlushKey

ZwOpenKey