Fungsi ExSetTimer (wdm.h)

Rutinitas ExSetTimer memulai operasi timer dan mengatur timer kedaluwarsa pada waktu jatuh tempo yang ditentukan.

Sintaks

BOOLEAN ExSetTimer(
  [in]           PEX_TIMER           Timer,
  [in]           LONGLONG            DueTime,
  [in]           LONGLONG            Period,
  [in, optional] PEXT_SET_PARAMETERS Parameters
);

Parameter

[in] Timer

Penunjuk ke struktur EX_TIMER . Struktur ini adalah objek timer yang sebelumnya dialokasikan oleh rutinitas ExAllocateTimer .

[in] DueTime

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. Waktu absolut dinyatakan sebagai jumlah waktu yang berlalu, dalam unit waktu sistem, sejak awal tahun 1601.

Parameter DueTime untuk timer resolusi tinggi harus merupakan waktu relatif (nilai negatif), atau pemeriksaan bug rutin.

[in] Period

Periode opsional untuk timer dalam unit waktu sistem (interval 100 nanodetik). Harus kurang dari atau sama dengan MAXLONG. Untuk timer yang satu bidikan alih-alih berkala, atur Periode ke nol.

[in, optional] Parameters

Penunjuk ke struktur EXT_SET_PARAMETERS . Driver panggilan sebelumnya disebut rutinitas ExInitializeSetTimerParameters untuk menginisialisasi struktur ini.

Mengembalikan nilai

Rutinitas ini mengembalikan TRUE jika membatalkan timer yang tertunda pada saat rutinitas dipanggil. Jika tidak, rutinitas mengembalikan FALSE. Untuk informasi selengkapnya, lihat Keterangan.

Keterangan

Driver Anda dapat memanggil rutinitas ini untuk mengatur timer kedaluwarsa di waktu mendatang. Driver kemudian dapat menunggu timer kedaluwarsa. Atau, driver dapat menerapkan rutinitas panggilan balik yang dipanggil ketika timer kedaluwarsa.

Setelah driver memanggil ExSetTimer, driver dapat memanggil rutinitas seperti KeWaitForSingleObject atau KeWaitForMultipleObjects untuk menunggu timer kedaluwarsa. Ketika timer kedaluwarsa, sistem operasi memberi sinyal objek timer.

Sebagai opsi, driver dapat menerapkan rutinitas panggilan balik ExTimerCallback , dan menyediakan pointer ke rutinitas ini sebagai parameter input ke rutinitas ExAllocateTimer . Ketika timer kedaluwarsa, sistem operasi memanggil rutinitas ExTimerCallback .

Panggilan ExSetTimer secara implisit membatalkan operasi set-timer yang dimulai sebelumnya pada objek timer yang ditentukan oleh Timer. Jika driver Anda sebelumnya disebut ExSetTimer untuk mengatur timer yang menggunakan Timer, dan timer ini belum kedaluwarsa saat ExSetTimer dipanggil untuk kedua kalinya, panggilan kedua membatalkan timer dari panggilan pertama lalu memulai timer baru. Dalam hal ini, panggilan kedua mengembalikan TRUE. Namun, jika timer yang dimulai oleh panggilan pertama kedaluwarsa sebelum panggilan kedua dapat membatalkan timer ini, panggilan kedua memulai timer baru dan mengembalikan FALSE.

Jika parameter Periode bukan nol, timer berkala. Untuk timer berkala, parameter DueTime menentukan waktu kedaluwarsa timer awal, dan Periode menentukan interval antara kedaluwarsa berikutnya.

Timer perangkat keras yang digunakan untuk jam sistem menandakan permintaan interupsi pada interval yang seragam, tetapi penanganan gangguan ini mungkin tertunda oleh pemrosesan interupsi untuk perangkat lain. Dengan demikian, untuk timer berkala, penundaan dari waktu kedaluwarsa berkala ke waktu di mana objek timer diberi sinyal atau rutinitas ExTimerCallback dapat bervariasi dari satu periode ke periode berikutnya. Untuk informasi selengkapnya, lihat Akurasi Timer.

Timer berkala dapat kedaluwarsa tidak lebih dari sekali per jam sistem. Mengatur periode timer ke nilai yang lebih kecil dari interval antara tanda centang jam sistem tidak menyebabkan timer kedaluwarsa lebih dari sekali per jam sistem, tetapi dapat menyebabkan interval antara kedaluwarsa berturut-turut bervariasi jika laju jam sistem berubah. Misalnya, sistem operasi mungkin untuk sementara meningkatkan laju jam sistem untuk memenuhi persyaratan waktu timer resolusi tinggi. Untuk informasi selengkapnya, lihat Timer Resolusi Tinggi.

Untuk timer berkala yang bukan timer resolusi tinggi, driver dapat mencapai kedaluwarsa berkala yang relatif seragam dengan mengatur Periode ke kelipatan bilangan bulat interval default antara tanda centang jam sistem.

Untuk menghindari konsumsi daya yang berlebihan, driver tidak boleh mengatur periode timer resolusi tinggi yang berjalan lama ke nilai yang kurang dari interval default antara jam sistem. Jika tidak, timer jam sistem akan terus menghasilkan gangguan pada kecepatan jam sistem maksimum yang diizinkan.

Untuk informasi selengkapnya, lihat Rutinitas ExXxxTimer dan Objek EX_TIMER.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 8.1.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka Ntoskrnl.lib
IRQL <= DISPATCH_LEVEL

Lihat juga

EXT_SET_PARAMETERS

EX_TIMER

ExAllocateTimer

ExInitializeSetTimerParameters

ExTimerCallback

KeWaitForMultipleObjects

KeWaitForsingleObject