Fungsi PsSetCreateProcessNotifyRoutineEx2 (ntddk.h)

Rutinitas PsSetCreateProcessNotifyRoutineEx2 mendaftar atau menghapus rutinitas panggilan balik yang memberi tahu pemanggil saat proses dibuat atau dihapus.

Sintaks

NTSTATUS PsSetCreateProcessNotifyRoutineEx2(
  [in] PSCREATEPROCESSNOTIFYTYPE NotifyType,
  [in] PVOID                     NotifyInformation,
  [in] BOOLEAN                   Remove
);

Parameter

[in] NotifyType

Nilai jenis PSCREATEPROCESSNOTIFYTYPE yang menunjukkan jenis pemberitahuan proses.

[in] NotifyInformation

Alamat informasi pemberitahuan untuk jenis pemberitahuan proses yang ditentukan. Jika NotifyType adalah PsCreateProcessNotifySubsystems, NotifyInformation adalah PCREATE_PROCESS_NOTIFY_ROUTINE_EX yang menentukan titik masuk panggilan balik pembuatan proses yang disediakan pemanggil.

[in] Remove

Nilai Boolean yang menentukan apakah PsSetCreateProcessNotifyRoutineEx2 akan menambahkan atau menghapus rutinitas tertentu dari daftar rutinitas panggilan balik. Jika parameter ini TRUE, rutinitas yang ditentukan dihapus dari daftar rutinitas panggilan balik. Jika parameter ini FALSE, rutinitas yang ditentukan ditambahkan ke daftar rutinitas panggilan balik. Jika HapusTRUE, sistem juga menunggu semua rutinitas panggilan balik dalam penerbangan selesai sebelum kembali.

Nilai kembali

PsSetCreateProcessNotifyRoutineEx2 mengembalikan salah satu nilai NTSTATUS berikut:

Menampilkan kode Deskripsi
STATUS_SUCCESS
Rutinitas yang ditentukan sekarang terdaftar dengan sistem operasi. Sistem operasi memanggil rutinitas ini setiap kali proses baru dibuat.
STATUS_INVALID_PARAMETER
Rutinitas yang ditentukan sudah terdaftar, atau sistem operasi telah mencapai batasnya untuk mendaftarkan rutinitas panggilan balik pembuatan proses.

NotifyType bukan PsCreateProcessNotifySubsystems.

STATUS_ACCESS_DENIED
Gambar yang berisi penunjuk rutin panggilan balik tidak memiliki IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY diatur di header gambarnya.

Keterangan

Driver dapat memanggil PsSetCreateProcessNotifyRoutineEx2 untuk mendaftarkan pembuatan proses mereka memberi tahu rutinitas.

Setelah rutinitas yang disediakan driver terdaftar, itu dipanggil dengan ID unik (ditunjukkan oleh ProcessId) dari proses yang dibuat atau dihapus. ParentId mengidentifikasi proses induk dari proses baru (ini adalah induk yang digunakan untuk prioritas, afinitas, kuota, token, dan menangani pewarisan, antara lain) jika dibuat dengan opsi handel warisan. Jika dibuat tanpa opsi handel pewaris, maka ID proses induk adalah NULL.

Jika nilai Buat TRUE, proses subsistem dibuat; FALSE menunjukkan proses telah dihapus.

Ketika proses dibuat, fungsi panggilan balik dipanggil tepat setelah utas pertama dalam proses dibuat. Sebaliknya, untuk penghapusan, fungsi dipanggil setelah utas terakhir dalam proses telah dihentikan dan ruang alamat akan dihapus. Ada kemungkinan bahwa panggilan balik hanya dipanggil untuk penghapusan tanpa mendapatkan panggilan pembuatan dalam kasus di mana proses dibuat dan dihapus tanpa utas yang pernah dibuat.

Driver harus menghapus fungsi panggilan balik apa pun yang didaftarkannya sebelum dibongkar. Anda dapat menghapus panggilan balik dengan memanggil PsSetCreateProcessNotifyRoutineEx2 dengan Hapus = TRUE.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10, versi 1703
Server minimum yang didukung Server Windows 2016
Target Platform Universal
Header ntddk.h (termasuk Ntddk.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Aturan kepatuhan DDI HwStorPortProhibitedDDIs, PowerIrpDDis

Lihat juga

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PsSetCreateProcessNotifyRoutine

PsSetCreateProcessNotifyRoutineEx