EXT_CALLBACK fungsi panggilan balik (wdm.h)

Rutinitas panggilan balik ExTimerCallback berjalan setelah interval waktu objek timer EX_TIMER kedaluwarsa.

Sintaks

EXT_CALLBACK ExtCallback;

void ExtCallback(
  [in] PEX_TIMER Timer,
  [in] PVOID Context
)
{...}

Parameter

[in] Timer

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

[in] Context

Nilai konteks yang sebelumnya disediakan driver Anda sebagai parameter CallbackContext dari rutinitas ExAllocateTimer .

Nilai kembali

Tidak ada

Keterangan

Sebagai opsi, driver Anda dapat menyediakan pointer ke rutinitas ExTimerCallback di parameter Callback yang diteruskan driver Anda ke rutinitas ExAllocateTimer . Setelah timer kedaluwarsa, sistem operasi memanggil rutinitas ExTimerCallback .

Untuk memulai operasi timer, driver meneruskan objek timer sebagai parameter input ke rutinitas ExSetTimer . Setelah timer kedaluwarsa, sistem operasi menjadwalkan rutinitas ExTimerCallback untuk dijalankan.

Objek timer adalah objek yang dapat ditunda. Utas driver dapat memanggil rutinitas seperti KeWaitForSingleObject atau KeWaitForMultipleObjects untuk menunggu timer kedaluwarsa. Ketika timer kedaluwarsa, sistem operasi memberi sinyal objek timer.

Timer mungkin dibatalkan sebelum kedaluwarsa. Driver dapat memanggil rutinitas ExCancelTimer untuk membatalkan timer secara eksplisit. Jika driver memanggil rutinitas ExSetTimer untuk memulai timer baru pada objek timer sebelum timer yang ditetapkan sebelumnya pada objek ini kedaluwarsa, panggilan ini secara implisit membatalkan timer sebelumnya dan kemudian memulai timer baru.

Rutinitas ExTimerCallback dapat memanggil rutinitas seperti ExSetTimer atau ExDeleteTimer. Jika rutinitas ExTimerCallback memanggil ExDeleteTimer, parameter Tunggu yang disediakan dalam panggilan ini harus FALSE. Untuk informasi selengkapnya, lihat Menghapus Objek Timer System-Allocated.

Dalam sistem multiprosesor, panggilan balik ExTimerCallback untuk dua kedaluwarsa berturut-turut dari timer berkala mungkin secara bersamaan berjalan pada dua prosesor yang berbeda.

Untuk informasi selengkapnya, lihat Rutinitas ExXxxTimer dan Objek EX_TIMER.

Contoh

Untuk menentukan rutinitas panggilan balik ExTimerCallback , Anda harus terlebih dahulu memberikan deklarasi fungsi yang mengidentifikasi jenis rutinitas panggilan balik yang Anda tentukan. Windows menyediakan sekumpulan tipe fungsi panggilan balik untuk driver. Mendeklarasikan fungsi menggunakan jenis fungsi panggilan balik membantu Analisis Kode untuk Driver, Pemverifikasi Driver Statis (SDV), dan alat verifikasi lainnya menemukan kesalahan, dan itu adalah persyaratan untuk menulis driver untuk sistem operasi Windows.

Misalnya, untuk menentukan rutinitas panggilan balik ExTimerCallback yang diberi nama MyExTimerCallback, gunakan jenis fungsi EXT_CALLBACK, seperti yang ditunjukkan dalam contoh kode ini:

EXT_CALLBACK  MyExTimerCallback;

Kemudian, terapkan rutinitas panggilan balik Anda sebagai berikut:

_Use_decl_annotations_
VOID
  MyExTimerCallback(
    PEX_TIMER  Timer,
    PVOID  Context
    )
  {...}

Jenis fungsi EXT_CALLBACK didefinisikan dalam file header Wdm.h. Untuk mengidentifikasi kesalahan secara lebih akurat saat Anda menjalankan alat analisis kode, pastikan untuk menambahkan _Use_decl_annotations_ anotasi ke definisi fungsi Anda. Anotasi _Use_decl_annotations_ memastikan bahwa anotasi yang diterapkan ke jenis fungsi EXT_CALLBACK dalam file header digunakan. Untuk informasi selengkapnya tentang persyaratan untuk deklarasi fungsi, lihat Mendeklarasikan Fungsi Menggunakan Jenis Peran Fungsi untuk Driver WDM. Untuk informasi selengkapnya tentang _Use_decl_annotations_, lihat Menganotasi Perilaku Fungsi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 8.1.
Target Platform Desktop
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
IRQL Dipanggil di DISPATCH_LEVEL.

Lihat juga

EX_TIMER

ExAllocateTimer

ExCancelTimer

ExSetTimer

KeWaitForMultipleObjects

KeWaitForsingleObject