Fungsi KeInitializeEvent (wdm.h)
KeInitializeEvent rutin menginisialisasi objek peristiwa sebagai sinkronisasi (pelayan tunggal) atau peristiwa jenis pemberitahuan dan mengaturnya ke status bersinyalitik atau tidak diberi sinyal.
Sintaks
void KeInitializeEvent(
[out] PRKEVENT Event,
[in] EVENT_TYPE Type,
[in] BOOLEAN State
);
Parameter
[out] Event
Arahkan ke objek peristiwa, tempat pemanggil menyediakan penyimpanan.
[in] Type
Menentukan jenis peristiwa, baik NotificationEvent atau SynchronizationEvent.
[in] State
Menentukan status awal peristiwa. TRUE menunjukkan status yang disinyalkan.
Nilai kembali
Tidak ada
Keterangan
Penyimpanan untuk objek peristiwa harus residen: dalam ekstensi perangkat objek perangkat yang dibuat driver, di ekstensi pengontrol objek pengontrol yang dibuat driver, atau di kumpulan yang tidak disebarkan yang dialokasikan oleh pemanggil. Jika Anda mengalokasikan peristiwa pada tumpukan, Anda harus menentukan KernelMode tunggu saat memanggil KeWaitForSingleObject, KeWaitForMutexObject, atau KeWaitForMultipleObjects. Selama KernelMode menunggu, tumpukan yang berisi peristiwa tidak akan di-page out.
Driver biasanya menggunakan NotificationEvent untuk menunggu operasi I/O selesai. Saat peristiwa pemberitahuan diatur ke status disinyalkan, semua utas yang menunggu peristiwa diatur ke status yang disinyalkan memenuhi syarat untuk dieksekusi. Peristiwa tetap dalam status sinyal sampai utas memanggil KeResetEvent atau KeClearEvent untuk mengatur peristiwa dalam keadaan tidak diberi sinyal.
SynchronizationEvent juga disebut peristiwa autoreset atau autoclearing. Ketika peristiwa seperti itu diatur, satu utas tunggu menjadi memenuhi syarat untuk dieksekusi. Kernel secara otomatis mengatur ulang peristiwa ke status tidak diberi sinyal setiap kali penantian terpenuhi. Driver mungkin menggunakan peristiwa sinkronisasi untuk melindungi sumber daya bersama yang digunakan dalam menyinkronkan operasi beberapa utas.
Untuk informasi selengkapnya tentang objek peristiwa, lihat Objek Peristiwa.