Menggunakan Objek Panggilan Balik System-Defined
Sistem mendefinisikan tiga objek panggilan balik untuk penggunaan driver:
\Callback\SetSystemTime
\Callback\PowerState
\Callback\ProcessorAdd
Driver yang menggunakan waktu sistem (misalnya, driver sistem file) mungkin mendaftar untuk objek panggilan balik \Callback\SetSystemTime . Panggilan balik ini menyediakan pemberitahuan ketika waktu sistem berubah.
Objek panggilan balik \Callback\PowerState menyediakan pemberitahuan ketika salah satu hal berikut ini terjadi:
Sistem beralih dari daya AC ke DC atau sebaliknya.
Kebijakan daya sistem berubah sebagai akibat dari permintaan pengguna atau aplikasi.
Transisi ke sistem tidur atau status matikan akan segera terjadi. Driver dapat meminta pemberitahuan sehingga dapat mengunci kode ke dalam memori untuk mengantisipasi pematian. Rutinitas panggilan balik akan diberi tahu sebelum manajer daya mengirim IRP set-power sistem.
Panggilan balik \Callback\ProcessorAdd memberikan pemberitahuan saat prosesor baru ditambahkan ke sistem.
Untuk menggunakan panggilan balik yang ditentukan sistem, driver menginisialisasi blok atribut dengan memanggil InitializeObjectAttributes dengan nama panggilan balik, lalu membuka objek panggilan balik (ExCreateCallback), sama seperti untuk panggilan balik yang ditentukan driver. Driver tidak boleh meminta agar objek panggilan balik dibuat.
Dengan handel yang dikembalikan oleh ExCreateCallback, driver memanggil ExRegisterCallback untuk mendaftarkan rutinitas pemberitahuan, meneruskan pointer ke konteks arbitrer dan pointer ke rutinitasnya. Driver dapat mendaftarkan rutinitas panggilan baliknya kapan saja. Ketika kondisi yang ditentukan terjadi, sistem memanggil rutinitas panggilan balik terdaftar di IRQL<=DISPATCH_LEVEL.
Ketika driver tidak lagi memerlukan pemberitahuan, driver harus memanggil ExUnregisterCallback untuk menghapus rutinitas panggilan baliknya dari daftar panggilan balik terdaftar dan untuk menghapus referensinya ke objek panggilan balik.