Fungsi ExCreateCallback (wdm.h)
Rutinitas ExCreateCallback membuat objek panggilan balik baru atau membuka objek panggilan balik yang ada atas nama pemanggil.
Sintaks
NTSTATUS ExCreateCallback(
[out] PCALLBACK_OBJECT *CallbackObject,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[in] BOOLEAN Create,
[in] BOOLEAN AllowMultipleCallbacks
);
Parameter
[out] CallbackObject
Penunjuk ke lokasi yang menerima penunjuk ke objek panggilan balik, yang merupakan struktur sistem buram. Jika panggilan ExCreateCallback berhasil, rutin menulis alamat objek panggilan balik yang baru dibuat atau dibuka ke lokasi ini. Penunjuk objek panggilan balik yang diperoleh dari rutinitas ini dapat disediakan sebagai parameter untuk rutinitas ExRegisterCallback atau ExNotifyCallback .
[in] ObjectAttributes
Penunjuk ke struktur OBJECT_ATTRIBUTES yang berisi atribut objek panggilan balik. Struktur ini sebelumnya diinisialisasi oleh rutinitas InitializeObjectAttributes .
[in] Create
Apakah akan membuat objek panggilan balik. Atur ke TRUE untuk membuat objek panggilan balik baru jika objek yang diminta tidak dapat dibuka. Jika tidak, atur ke FALSE.
[in] AllowMultipleCallbacks
Apakah objek panggilan balik yang baru dibuat harus memungkinkan beberapa rutinitas panggilan balik terdaftar. Atur ke TRUE untuk mengizinkan beberapa rutinitas panggilan balik terdaftar. Jika tidak, atur ke FALSE. Parameter ini diabaikan ketika BuatADALAH FALSE atau saat membuka objek yang ada.
Nilai kembali
ExCreateCallback mengembalikan STATUS_SUCCESS jika objek panggilan balik dibuka atau dibuat. Jika tidak, ia mengembalikan kode kesalahan NTSTATUS untuk menunjukkan sifat kegagalan.
Keterangan
Driver memanggil ExCreateCallback untuk membuat objek panggilan balik baru atau untuk membuka objek panggilan balik yang ada. Setelah objek dibuat atau dibuka, komponen lain dapat memanggil rutinitas ExRegisterCallback untuk mendaftarkan rutinitas panggilan balik dengan objek panggilan balik.
Sebelum memanggil ExCreateCallback, driver harus memanggil InitializeObjectAttributes untuk menginisialisasi struktur OBJECT_ATTRIBUTES untuk objek panggilan balik. Objek panggilan balik yang tidak disebutkan namanya tidak diizinkan. Pemanggil harus menentukan nama untuk objek; jika tidak, panggilan gagal dengan STATUS_UNSUCCESSFUL. Pemanggil harus menentukan atribut OBJ_PERMANENT di objek panggilan balik untuk mencegah objek dihapus sebelum dapat didaftarkan ke manajer objek. Pemanggil juga harus menentukan atribut lain, seperti OBJ_CASE_INSENSITIVE, yang mungkin diperlukan.
Ketika semua operasi telah selesai dengan objek panggilan balik, driver harus menghapus objek untuk mencegah kebocoran memori. Untuk informasi tentang menghapus objek yang dibuat dengan atribut objek OBJ_PERMANENT, lihat ObDereferenceObject.
Tabel berikut menunjukkan objek panggilan balik yang dibuat sistem operasi untuk digunakan oleh driver.
Nama objek panggilan balik | Penggunaan |
---|---|
\Callback\SetSystemTime | Sistem operasi memanggil rutinitas panggilan balik apa pun yang terdaftar untuk objek ini setiap kali waktu sistem berubah. |
\Callback\PowerState | Sistem operasi memanggil rutinitas panggilan balik apa pun yang terdaftar untuk objek ini setiap kali karakteristik daya sistem tertentu berubah. Ketika driver mendaftar untuk pemberitahuan panggilan balik (dengan memanggil ExRegisterCallback), driver dapat menentukan perubahan yang harus diberi tahu. |
Untuk informasi selengkapnya tentang objek panggilan balik, lihat Objek Panggilan Balik.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia dimulai dengan Windows 2000. |
Target Platform | Universal |
Header | wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Aturan kepatuhan DDI | HwStorPortProhibitedDDIs(storport), IrqlExApcLte2(wdm), IrqlExPassive |