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

Lihat juga

ExNotifyCallback

ExRegisterCallback

InitializeObjectAttributes

ObDereferenceObject