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.
Driver dapat membuat objek panggilan balik, di mana driver lain dapat meminta pemberitahuan kondisi yang ditentukan oleh driver pembuatan. Gambar berikut menunjukkan langkah-langkah yang terlibat dalam menentukan objek panggilan balik.
Sebelum membuat objek, driver memanggil InitializeObjectAttributes untuk mengatur atributnya. Objek panggilan balik harus memiliki nama, yang tidak dapat cocok dengan nama panggilan balik yang ditentukan sistem; ini dapat memiliki atribut lain yang dianggap pembuatnya sesuai, biasanya OBJ_CASE_INSENSITIVE. Selanjutnya, driver memanggil ExCreateCallback, meneruskan pointer ke atribut yang diinisialisasi dan ke lokasi yang akan menerima handle dari objek callback. Ini juga melewati dua Boolean, menunjukkan apakah sistem harus membuat objek panggilan balik jika objek bernama seperti itu belum ada, dan apakah objek harus mengizinkan lebih dari satu rutinitas panggilan balik terdaftar.
Driver mendefinisikan kondisi yang akan memanggil rutinitas panggilan balik terdaftar. Kondisi berbentuk dua argumen, masing-masing menunjuk ke parameter yang ditentukan oleh driver yang membuat callback. Anda harus mencatat kondisi-kondisi ini, beserta nama objek callback dan IRQL yang digunakan saat meminta pemberitahuan, untuk klien dari driver tersebut.
Ketika kondisi panggilan balik terjadi, driver memanggil ExNotifyCallback, meneruskan handle-nya ke objek panggilan balik dan kedua argumen. Sistem kemudian memanggil semua rutinitas panggilan balik yang terdaftar untuk objek panggilan balik, dalam urutan terdaftar, meneruskan dua argumen dan pointer ke konteks yang disediakan ketika rutinitas terdaftar. Driver harus memanggil ExNotifyCallback di IRQL <= DISPATCH_LEVEL; sistem memanggil rutinitas panggilan balik pada IRQL yang sama di mana driver melakukan panggilan ini.
Setelah semua operasi selesai dengan objek panggilan balik, driver yang membuat panggilan balik harus memanggil ObDereferenceObject untuk mengurangi jumlah referensinya dan memastikan bahwa objek dihapus.