Fungsi KeSetTimerEx (wdm.h)

Rutinitas KeSetTimerEx mengatur interval absolut atau relatif di mana objek timer akan diatur ke status yang disinyalkan, secara opsional memasok rutinitas CustomTimerDpc untuk dijalankan ketika interval tersebut kedaluwarsa, dan secara opsional memasok interval berulang untuk timer.

Sintaks

BOOLEAN KeSetTimerEx(
  [in, out]      PKTIMER       Timer,
  [in]           LARGE_INTEGER DueTime,
  [in]           LONG          Period,
  [in, optional] PKDPC         Dpc
);

Parameter

[in, out] Timer

Penunjuk ke objek timer yang diinisialisasi dengan KeInitializeTimer atau KeInitializeTimerEx.

[in] DueTime

Menentukan waktu absolut atau relatif di mana timer akan kedaluwarsa. Jika nilai parameter DueTime negatif, waktu kedaluwarsa relatif terhadap waktu sistem saat ini. Jika tidak, waktu kedaluwarsa adalah absolut. Waktu kedaluwarsa dinyatakan dalam unit waktu sistem (interval 100 nanodetik). Waktu kedaluwarsa absolut melacak perubahan apa pun dalam waktu sistem; waktu kedaluwarsa relatif tidak terpengaruh oleh perubahan waktu sistem.

[in] Period

Menentukan interval berulang opsional untuk timer dalam milidetik. Harus berupa nilai yang lebih besar dari atau sama dengan nol. Jika nilai parameter ini nol, timer adalah timer nonperiodic yang tidak secara otomatis mengantre ulang sendiri.

[in, optional] Dpc

Penunjuk ke objek DPC yang diinisialisasi oleh KeInitializeDpc. Parameter ini bersifat opsional.

Nilai kembali

Jika objek timer sudah berada dalam antrean timer sistem, KeSetTimerEx mengembalikan TRUE.

Keterangan

Rutinitas KeSetTimerEx melakukan hal berikut:

  • Menghitung waktu kedaluwarsa.

  • Mengatur timer ke status tidak diberi sinyal.

  • Mengatur interval berulang untuk timer, jika ditentukan.

  • Menyisipkan objek timer dalam antrean timer sistem.

Jika objek timer sudah berada dalam antrean timer, objek tersebut dibatalkan secara implisit sebelum diatur ke waktu kedaluwarsa baru. Panggilan ke KeSetTimerEx sebelum DueTime yang ditentukan sebelumnya telah kedaluwarsa membatalkan timer dan panggilan ke Dpc, jika ada, yang terkait dengan panggilan sebelumnya.

Waktu kedaluwarsa diukur relatif terhadap jam sistem, dan akurasi yang dapat dideteksi oleh sistem operasi ketika timer kedaluwarsa dibatasi oleh granularitas jam sistem. Untuk informasi selengkapnya, lihat Akurasi Timer.

Jika parameter Dpc ditentukan, objek DPC dikaitkan dengan objek timer. Ketika timer kedaluwarsa, objek timer dihapus dari antrean timer sistem dan diatur ke status yang disinyalir. Jika objek DPC dikaitkan dengan timer ketika diatur, objek DPC dimasukkan dalam antrean DPC sistem untuk dijalankan segera setelah kondisi mengizinkan setelah interval timer berakhir.

Rutinitas DPC tidak dapat membatalkan alokasi timer berkala. Rutinitas DPC dapat membatalkan alokasi timer nonperiodik.

Perhatikan bahwa timer berkala secara otomatis dimulai ulang segera setelah kedaluwarsa. Dengan demikian, pada mesin multiprosesor, DPC untuk timer berkala dapat berjalan pada dua prosesor secara bersamaan.

Hanya satu instansiasi objek DPC tertentu yang dapat diantrekan pada saat tertentu. Untuk menghindari potensi kondisi balapan, DPC yang diteruskan ke KeSetTimerEx tidak boleh diteruskan ke KeInsertQueueDpc.

Driver harus membatalkan timer aktif apa pun dalam rutinitas Bongkar. Gunakan KeCancelTimer untuk membatalkan timer apa pun.

Untuk informasi selengkapnya tentang objek timer, lihat Objek Timer dan DPC.

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 <= DISPATCH_LEVEL
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport), IrqlKeDispatchLte(wdm)

Lihat juga

KeCancelTimer

KeInitializeDpc

KeInitializeTimer

KeInitializeTimerEx

KeReadStateTimer

KeWaitForMultipleObjects

KeWaitForsingleObject