Fungsi ZwNotifyChangeKey (ntifs.h)

Rutinitas ZwNotifyChangeKey memungkinkan driver untuk meminta pemberitahuan ketika kunci registri berubah.

Sintaks

NTSYSAPI NTSTATUS ZwNotifyChangeKey(
  [in]            HANDLE           KeyHandle,
  [in, optional]  HANDLE           Event,
  [in, optional]  PIO_APC_ROUTINE  ApcRoutine,
  [in, optional]  PVOID            ApcContext,
  [out]           PIO_STATUS_BLOCK IoStatusBlock,
  [in]            ULONG            CompletionFilter,
  [in]            BOOLEAN          WatchTree,
  [out, optional] PVOID            Buffer,
  [in]            ULONG            BufferSize,
  [in]            BOOLEAN          Asynchronous
);

Parameter

[in] KeyHandle

Tangani ke kunci untuk mendaftarkan rutinitas pemberitahuan. Handel ini dibuat oleh panggilan yang berhasil ke ZwCreateKey atau ZwOpenKey. Pemanggil harus memiliki akses KEY_NOTIFY yang ditentukan.

[in, optional] Event

Handel opsional ke peristiwa yang dibuat penelepon untuk diatur ke status Sinyal saat operasi selesai. Jika bukan NULL, penelepon ditempatkan ke dalam status tunggu hingga operasi berhasil, pada saat itu peristiwa diatur ke status Sinyal.

[in, optional] ApcRoutine

Penunjuk ke rutinitas APC yang disediakan penelepon untuk dijalankan setelah operasi selesai. Parameter ini bersifat opsional dan dapat berupa NULL.

[in, optional] ApcContext

Pointer untuk diteruskan sebagai argumen ke rutinitas APC yang ditunjuk apcRoutine . Argumen ini diperlukan jika ApcRoutine bukan NULL, dan harus dilemparkan untuk mengetik PVOID. Jika tidak, jika ApcRoutine adalah NULL, atur parameter ini ke NULL juga.

Arti parameter ini tergantung pada apakah rutinitas dipanggil dari mode kernel atau dari mode pengguna:

  • Untuk panggilan mode kernel, atur parameter ini ke salah satu nilai enumerasi WORK_QUEUE_TYPE berikut:

    • CriticalWorkQueue
    • DelayedWorkQueue
  • Untuk panggilan mode pengguna, parameter ini menunjuk ke konteks yang ditentukan pemanggil untuk rutinitas APC.

[out] IoStatusBlock

Arahkan ke struktur IO_STATUS_BLOCK yang berisi status akhir dan informasi tentang operasi. Untuk panggilan berhasil yang mengembalikan data, jumlah byte yang ditulis ke Buffer disediakan dalam IoStatusBlock-Information>.

[in] CompletionFilter

Bitmask operasi yang menyebabkan driver diberi tahu. Tentukan satu atau beberapa bendera berikut:

Nilai Makna
REG_NOTIFY_CHANGE_NAME Beri tahu pemanggil jika subkunci ditambahkan atau dihapus.
REG_NOTIFY_CHANGE_ATTRIBUTES Beri tahu pemanggil perubahan pada atribut kunci, seperti informasi deskriptor keamanan.
REG_NOTIFY_CHANGE_LAST_SET Beri tahu pemanggil perubahan pada nilai kunci. Ini dapat mencakup penambahan atau penghapusan nilai, atau mengubah nilai yang sudah ada. (Pemanggil tidak menerima pemberitahuan jika nilai baru yang ditulis ke kunci cocok dengan nilai kunci sebelumnya.)
REG_NOTIFY_CHANGE_SECURITY Beri tahu pemanggil perubahan pada pendeskripsi keamanan kunci.

[in] WatchTree

Jika TRUE, driver akan diberi tahu tentang perubahan pada semua subkuncar kunci yang ditentukan. Jika FALSE, driver hanya diberi tahu untuk perubahan pada kunci yang ditentukan.

[out, optional] Buffer

Dicadangkan. Tentukan NULL.

[in] BufferSize

Dicadangkan. Tentukan nol.

[in] Asynchronous

Jika FALSE, rutinitas tidak kembali sampai peristiwa yang ditentukan terjadi. Jika TRUE, rutinitas akan segera ditampilkan.

Nilai kembali

Rutinitas ZwNotifyChangeKey mengembalikan STATUS_SUCCESS pada keberhasilan, atau nilai NTSTATUS yang sesuai sebaliknya. Jika pemanggil menentukan TRUE untuk parameter Asinkron , dan peristiwa belum terjadi, rutin mengembalikan STATUS_PENDING.

Keterangan

Jika panggilan ke fungsi ZwNotifyChangeKey terjadi dalam mode pengguna, Anda harus menggunakan nama "NtNotifyChangeKey" alih-alih "ZwNotifyChangeKey".

Untuk panggilan dari driver mode kernel, versi NtXxx dan ZwXxx dari rutinitas Windows Native System Services dapat berperilaku berbeda dalam cara mereka menangani dan menafsirkan 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
Klien minimum yang didukung Windows 2000
Target Platform Universal
Header ntifs.h (termasuk Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Lihat juga

IO_STATUS_BLOCK

WORK_QUEUE_ITEM

WORK_QUEUE_TYPE

ZwCreateKey

ZwOpenKey