Fungsi KePulseEvent (ntddk.h)

KePulseEvent secara atomik mengatur objek peristiwa ke keadaan bersinyali, mencoba untuk memenuhi sebanyak mungkin menunggu, dan kemudian mengatur ulang objek peristiwa ke keadaan yang tidak diberi sinyal.

Sintaks

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

Parameter

[in, out] Event

Penunjuk ke objek dispatcher jenis KEVENT.

[in] Increment

Menentukan dorongan untuk diterapkan pada prioritas utas yang disiapan sebagai akibat dari pulsing peristiwa. Biasanya diatur ke nol tetapi dapat diatur ke satu.

[in] Wait

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

Nilai kembali

Status sinyal sebelumnya dari objek peristiwa.

Keterangan

Untuk informasi selengkapnya tentang objek peristiwa, lihat Objek Peristiwa.

Rutinitas KePulseEvent 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 KePulseEvent harus segera diikuti oleh panggilan KeWaitXxx . Dengan mengatur Wait = TRUE, penelepon dapat mencegah peralihan konteks yang tidak perlu terjadi antara panggilan KePulseEvent dan panggilan KeWaitXxx . Rutinitas KeWaitXxx , sebelum kembali, memulihkan IRQL ke nilai aslinya di awal panggilan KePulseEvent . 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.

Jika pemanggil menjalankan di IRQL = DISPATCH_LEVEL atau dalam konteks utas arbitrer, parameter Batas waktu ke KeWaitXxx harus nol.

Peringatan

Jika utas yang menunggu Event saat ini menjalankan APC kernel, maka, ketika KePulseEvent dipanggil, penantian utas ini tidak terpenuhi. Setelah APC kernel selesai, utas tetap dalam status tunggu.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 2000.
Target Platform Universal
Header ntddk.h (termasuk Ntddk.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport), IrqlKeDispatchLte(wdm)

Lihat juga

KeInitializeEvent

KeReadStateEvent

KeResetEvent

KeSetEvent

KeWaitForMultipleObjects

KeWaitForsingleObject