Fungsi IoRegisterContainerNotification (wdm.h)

Rutinitas IoRegisterContainerNotification mendaftarkan driver mode kernel untuk menerima pemberitahuan tentang kelas peristiwa tertentu.

Sintaks

NTSTATUS
IoRegisterContainerNotification(
    _In_ IO_CONTAINER_NOTIFICATION_CLASS NotificationClass,
    _In_ PIO_CONTAINER_NOTIFICATION_FUNCTION CallbackFunction,
    _In_reads_bytes_opt_(NotificationInformationLength) PVOID NotificationInformation,
    _In_ ULONG NotificationInformationLength,
    _Out_ PVOID * CallbackRegistration
    );

Parameter

[in] NotificationClass

Menentukan kelas peristiwa di mana pemanggil (driver) meminta pemberitahuan. Atur parameter ini ke nilai enumerasi IO_CONTAINER_NOTIFICATION_CLASS berikut:

  • IoSessionStateNotification

Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.

[in] CallbackFunction

Penunjuk ke fungsi panggilan balik yang diimplementasikan oleh pemanggil (driver). Manajer I/O memanggil fungsi ini untuk memberi tahu pemanggil ketika peristiwa kelas yang ditunjukkan oleh NotificationClass terjadi. Untuk NotificationClass = IoSessionStateNotification, parameter ini adalah penunjuk ke fungsi IO_SESSION_NOTIFICATION_FUNCTION yang disediakan pemanggil. Namun, pemanggil harus mentransmisikan penunjuk fungsi ini untuk mengetik PIO_CONTAINER_NOTIFICATION_FUNCTION agar sesuai dengan jenis parameter. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.

[in, optional] NotificationInformation

Penunjuk ke buffer yang dialokasikan pemanggil yang berisi struktur informasi pemberitahuan untuk peristiwa kelas yang ditentukan oleh NotificationClass. Untuk NotificationClass = IoSessionStateNotification, NotificationInformation menunjuk ke struktur IO_SESSION_STATE_NOTIFICATION . Pemanggil harus mengisi struktur ini sebelum memanggil IoRegisterContainerNotification. Selama panggilan ini, IoRegisterContainerNotification menyalin data dari struktur ini, dan manajer I/O tidak mengakses salinan struktur driver setelah panggilan kembali.

[in] NotificationInformationLength

Ukuran, dalam byte, dari struktur informasi pemberitahuan yang terkandung dalam buffer yang diacu oleh NotificationInformation. Untuk NotificationClass = IoSessionStateNotification, atur parameter ini ke sizeof(IO_SESSION_STATE_NOTIFICATION).

[out] CallbackRegistration

Pointer ke lokasi tempat rutinitas ini menulis alamat objek pendaftaran pemberitahuan kontainer. Objek ini adalah objek sistem buram tempat manajer I/O menyimpan informasi tentang pendaftaran pemberitahuan kontainer penelepon. Ketika pemberitahuan tidak lagi diperlukan, pemanggil membatalkan pendaftaran dengan meneruskan penunjuk objek ini ke rutinitas IoUnregisterContainerNotification .

Nilai kembali

IoRegisterContainerNotification mengembalikan STATUS_SUCCESS jika panggilan berhasil. Kemungkinan nilai pengembalian kesalahan meliputi yang berikut ini:

Menampilkan kode Deskripsi
STATUS_INVALID_PARAMETER_1 Parameter NotificationClass bukan konstanta enumerasi IO_CONTAINER_NOTIFICATION_CLASS yang valid.
STATUS_INVALID_PARAMETER_3 Informasi dalam struktur yang ditujukkan oleh NotificationInformation salah.
STATUS_INVALID_PARAMETER_4 Parameter NotificationInformationLength tidak sama dengan ukuran struktur informasi pemberitahuan yang diperlukan untuk digunakan dengan nilai parameter NotificationClass yang ditentukan.
STATUS_ALREADY_COMMITTED Driver sudah terdaftar untuk menerima pemberitahuan NotificationClass tentang peristiwa yang terkait dengan objek I/O yang ditentukan.
STATUS_INSUFFICIENT_RESOURCES Sistem operasi tidak memiliki sumber daya yang cukup untuk membuat pendaftaran yang diminta.

Keterangan

Rutinitas ini berpotensi mendukung pemberitahuan peristiwa di berbagai kelas peristiwa. Di Windows 7, rutinitas ini hanya mendukung pemberitahuan IoSessionStateNotification , yang memberi tahu driver mode kernel tentang perubahan status sesi pengguna yang diminati driver. Untuk aplikasi mode pengguna, fungsi WTSRegisterSessionNotification mengisi peran serupa.

Jenis penunjuk fungsi untuk parameter CallbackFunction didefinisikan sebagai berikut:

typedef NTSTATUS
  (*PIO_CONTAINER_NOTIFICATION_FUNCTION)(
    );

Pemanggil harus mentransmisikan penunjuk fungsi panggilan balik ke jenis ini agar sesuai dengan jenis parameter CallbackFunction . IoRegisterContainerNotification menentukan jenis aktual penunjuk fungsi panggilan balik dari parameter NotificationClass . Untuk NotificationClass = IoSessionStateNotification, CallbackFunction menunjuk ke fungsi IO_SESSION_NOTIFICATION_FUNCTION .

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows 7 dan versi yang lebih baru dari sistem operasi Windows.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Lihat juga

IO_CONTAINER_NOTIFICATION_CLASS

IO_SESSION_NOTIFICATION_FUNCTION

IO_SESSION_STATE_NOTIFICATION

IoUnregisterContainerNotification

WTSRegisterSessionNotification