Fungsi KeSetEvent (wdm.h)

Rutinitas KeSetEvent mengatur objek peristiwa ke status bersinyali jika peristiwa belum diberi sinyal, dan mengembalikan status objek peristiwa sebelumnya.

Sintaks

LONG KeSetEvent(
  [in, out] PRKEVENT  Event,
  [in]      KPRIORITY Increment,
  [in]      BOOLEAN   Wait
);

Parameter

[in, out] Event

Penunjuk ke objek peristiwa yang diinisialisasi yang pemanggilnya menyediakan penyimpanan.

[in] Increment

Menentukan kenaikan prioritas yang akan diterapkan jika mengatur peristiwa menyebabkan penantian terpenuhi.

[in] Wait

Menentukan apakah panggilan ke KeSetEvent akan segera diikuti dengan panggilan ke salah satu rutinitas KeWaitXxx . Jika TRUE, panggilan KeSetEvent harus diikuti dengan panggilan ke KeWaitForMultipleObjects, KeWaitForMutexObject, atau KeWaitForSingleObject. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.

Nilai kembali

Jika status objek peristiwa sebelumnya diberi sinyal, nilai bukan nol dikembalikan.

Keterangan

Memanggil KeSetEvent menyebabkan peristiwa mencapai status bersinyali. Jika peristiwa adalah peristiwa pemberitahuan, sistem mencoba untuk memenuhi sebanyak mungkin menunggu pada objek peristiwa. Peristiwa ini tetap disinyalir sampai panggilan ke KeClearEvent atau KeResetEvent menghapusnya. Jika peristiwa adalah peristiwa sinkronisasi, satu tunggu terpenuhi sebelum sistem secara otomatis menghapus peristiwa.

Rutinitas KeSetEvent mungkin untuk sementara meningkatkan IRQL. Jika parameter WaitFALSE, rutinitas, sebelum kembali, memulihkan IRQL ke nilai asli yang dimilikinya di awal panggilan.

Jika Wait = TRUE, rutinitas akan kembali tanpa menurunkan IRQL. Dalam hal ini, panggilan KeSetEvent harus segera diikuti oleh panggilan KeWaitXxx . Dengan mengatur Wait = TRUE, pemanggil dapat mencegah peralihan konteks yang tidak perlu terjadi antara panggilan KeSetEvent dan panggilan KeWaitXxx . Rutinitas KeWaitXxx , sebelum kembali, memulihkan IRQL ke nilai aslinya di awal panggilan KeSetEvent . Meskipun IRQL menonaktifkan peralihan konteks antara dua panggilan, panggilan ini tidak dapat digunakan dengan andal sebagai awal dan akhir operasi atomik. Misalnya, di antara kedua panggilan ini, utas yang berjalan pada saat yang sama pada prosesor lain mungkin mengubah status objek peristiwa atau target tunggu.

Utas yang dapat dipertanyakan atau rutinitas driver yang dapat dipertanyakan yang berjalan di IRQL = PASSIVE_LEVEL tidak boleh memanggil KeSetEvent dengan parameter Tunggu yang diatur ke TRUE. Panggilan seperti itu menyebabkan kesalahan halaman fatal jika pemanggil kebetulan di-page out antara panggilan ke KeSetEvent dan KeWaitXxx.

Untuk informasi selengkapnya tentang objek peristiwa, lihat Objek Peristiwa.

Jika Tunggu diatur ke FALSE, pemanggil dapat berjalan di IRQL <= DISPATCH_LEVEL. Jika tidak, penelepon KeSetEvent harus berjalan di IRQL <= APC_LEVEL dan dalam konteks utas nonarbitrer.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 2000.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Lihat bagian Keterangan.
Aturan kepatuhan DDI CompletionEventChecking(wdm), DoubleKeSetEvent(storport), HwStorPortProhibitedDIs(storport), IoAllocateIrpSignalEventInCompletion(wdm), IoBuildDeviceIoControlSetEvent(wdm), IoBuildFsdIrpSignalEventInCompletion(wdm), IrqlKeSetEvent(wdm), SignalEventInCompletion(wdm)

Lihat juga

KeClearEvent

KeInitializeEvent

KeReadStateEvent

KeResetEvent

KeWaitForMultipleObjects

KeWaitForsingleObject

Menentukan Peningkatan Prioritas Saat Menyelesaikan Permintaan I/O