Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dimulai dengan Windows 8.1, rutinitas ExDeleteTimer menghapus objek timer yang dibuat oleh rutinitas ExAllocateTimer. Objek timer ini adalah struktur EX_TIMER, di mana anggotanya tidak terlihat jelas bagi driver, yang dialokasikan oleh sistem. Sebelum objek timer dihapus, ExDeleteTimer menonaktifkan operasi timer lebih lanjut pada objek, dan membatalkan atau menyelesaikan operasi yang tertunda pada objek yang mungkin sedang berlangsung.
Setelah driver memanggil ExDeleteTimer, rutinitas ini mengambil beberapa langkah untuk memastikan bahwa ia dapat menghapus objek timer dengan aman. Pertama, ExDeleteTimer menandai objek timer sebagai dinonaktifkan untuk mencegah driver memulai operasi timer baru yang menggunakan objek . Setelah objek timer dinonaktifkan, panggilan ke ExSetTimer atau ExCancelTimer rutin segera mengembalikan FALSE dan tidak melakukan operasi. Selain itu, panggilan kedua untuk ExDeleteTimer mengembalikan FALSE dan tidak melakukan operasi apa pun.
Selanjutnya, ExDeleteTimer memeriksa apakah timer masih tertunda dari pemanggilan sebelumnya ke ExDeleteTimer. Menonaktifkan objek pengatur waktu tidak membatalkan timer yang diatur sebelum objek dinonaktifkan. Dalam salah satu dari dua kasus berikut, timer yang sebelumnya diatur mungkin kedaluwarsa setelah objek timer dinonaktifkan:
- Pengatur waktu ini bersifat periodik.
- Timer ini adalah sekali pakai (atau nonperiodic) dan belum kedaluwarsa.
Timer berkala tidak pernah dapat kedaluwarsa lebih dari sekali setelah objek timer dinonaktifkan.
Jika driver Anda menerapkan rutinitas panggilan balikExTimerCallback, parameter Timer ke rutinitas ini dijamin selalu menjadi penunjuk yang valid ke objek timer (struktur EX_TIMER), bahkan jika timer kedaluwarsa setelah objek timer dinonaktifkan.
Jika tidak ada timer yang tertunda, ExDeleteTimer menghapus objek timer dan mengembalikan tanpa menunggu.
Jika timer tertunda saat ExDeleteTimer dipanggil, nilai parameter Batalkan dan Tunggu yang disediakan oleh driver Anda untuk rutinitas ini mengendalikan perilaku rutinitas ini. Parameter Cancel memberi tahu ExDeleteTimer apakah mencoba membatalkan timer yang tertunda. Parameter Wait memberi tahu ExDeleteTimer apakah akan menunggu untuk kembali hingga objek timer dihapus.
Jika BatalkanFALSE (dalam hal ini, Tunggu harus FALSE) dan timer tertunda, ExDeleteTimer memungkinkan timer kedaluwarsa sebelum objek timer dihapus. Dalam hal ini, ExDeleteTimer menandai objek timer untuk menunjukkan bahwa objek tersebut akan dihapus setelah timer yang tertunda berakhir (dan setiap panggilan balik terakhir ke rutinitas ExTimerCallback selesai dijalankan). Kemudian ExDeleteTimer kembali tanpa menunggu timer selesai kedaluwarsa atau agar objek dihapus.
Jika Batalkan adalah TRUE, ExDeleteTimer mencoba membatalkan timer yang tertunda sebelum habis masa berlakunya. ExDeleteTimer mengembalikan TRUE jika berhasil membatalkan timer. ExDeleteTimer mengembalikan FALSE jika tidak dapat membatalkan timer, yang terjadi untuk timer sekali tembak yang telah kedaluwarsa atau sedang mendekati kedaluwarsa. ExDeleteTimer juga mengembalikan FALSE jika timer (sekali jalan atau periodik) dibatalkan sebelum panggilan ExDeleteTimer atau jika timer tidak pernah diatur.
Jika Batal adalah TRUE dan Tunggu adalah FALSE, ExDeleteTimer tidak pernah memblokir utas pemanggil. Jika objek timer tidak dapat segera dihapus, ExDeleteTimer menandai objek timer untuk menunjukkan bahwa objek tersebut akan dihapus setelah timer yang tertunda selesai kedaluwarsa, dan segera kembali tanpa menunggu timer kedaluwarsa atau agar objek dihapus.
Jika Batalkan dan Tunggu keduanya TRUE, ExDeleteTimer memblokir utas panggilan jika objek timer tidak dapat segera dihapus. ExDeleteTimer menunggu, jika perlu, hingga timer selesai kedaluwarsa dan semua panggilan balik ke rutinitas ExTimerCallback yang diimplementasikan oleh driver juga selesai. Selanjutnya, ExDeleteTimer menghapus objek timer dan memanggil rutinitasExTimerDeleteCallback, jika driver menerapkan rutinitas ini. Terakhir, ExDeleteTimer kembali.
Driver dapat memanggil ExDeleteTimer dari rutinitas ExTimerCallback driver, yang dieksekusi pada IRQL = DISPATCH_LEVEL, tetapi driver harus mengatur parameter Tunggu dalam panggilan ini ke FALSE.
Sebagai opsi, driver dapat menerapkan rutinitas panggilan balik ExTimerDeleteCallback yang berjalan setelah objek timer dihapus. Biasanya, ExTimerDeleteCallback rutin membebaskan sumber daya sistem apa pun yang dialokasikan driver untuk digunakan dengan objek timer.
ExDeleteTimer menjadwalkan rutinitas ExTimerDeleteCallback yang diimplementasikan driver untuk dijalankan setelah objek timer dihapus, pada saat itu penunjuk ke objek ini tidak lagi valid. Jika parameter Tunggu adalah TRUE dalam panggilan ExDeleteTimer, callback ke rutinitas ExTimerDeleteCallback selesai sebelum ExDeleteTimer mengembalikan. Jika Wait adalah FALSE, maka rutinitas ExTimerDeleteCallback mungkin berjalan sebelum atau sesudah ExDeleteTimer mengembalikan.
Untuk informasi selengkapnya, lihat ExXxxTimer Routines dan EX_TIMER Objects.