struktur IO_SESSION_STATE_NOTIFICATION (wdm.h)

Struktur IO_SESSION_STATE_NOTIFICATION berisi informasi yang disediakan driver mode kernel ke rutinitas IoRegisterContainerNotification ketika driver mendaftar untuk menerima pemberitahuan peristiwa sesi.

Sintaks

typedef struct _IO_SESSION_STATE_NOTIFICATION {
  ULONG Size;
  ULONG Flags;
  PVOID IoObject;
  ULONG EventMask;
  PVOID Context;
} IO_SESSION_STATE_NOTIFICATION, *PIO_SESSION_STATE_NOTIFICATION;

Anggota

Size

Ukuran, dalam byte, dari struktur IO_SESSION_STATE_NOTIFICATION .

Flags

Tidak ada bendera yang saat ini ditentukan untuk anggota ini. Atur ke nol.

IoObject

Penunjuk ke objek I/O yang dimiliki oleh driver. Anggota ini dapat menunjuk ke struktur DEVICE_OBJECT, DRIVER_OBJECT, atau FILE_OBJECT . Objek I/O harus tetap berlaku selama masa pendaftaran. Sebelum Anda menghapus objek perangkat terdaftar, membongkar driver terdaftar, atau menutup objek file terdaftar, panggil rutinitas IoUnregisterContainerNotification untuk membatalkan pendaftaran. Driver dapat mempertahankan pendaftaran simultan untuk lebih dari satu objek I/O, tetapi tidak dapat membuat lebih dari satu pendaftaran aktif untuk objek I/O yang sama.

EventMask

Menutupi bit untuk peristiwa sesi. Bit masker ini menunjukkan peristiwa di mana driver meminta pemberitahuan.

Untuk mendaftar untuk menerima pemberitahuan peristiwa sesi, driver mode kernel memanggil rutinitas IoRegisterContainerNotification . Untuk menentukan peristiwa sesi di mana driver ingin menerima pemberitahuan, driver mengatur anggota EventMask struktur ini ke bitwise ATAU dari satu atau beberapa konstanta IO_SESSION_STATE_XXX .

Atur anggota ini ke bitwise OR dari satu atau beberapa konstanta IO_SESSION_STATE_XXX berikut:

Nilai Makna
IO_SESSION_STATE_ALL_EVENTS
0xffffffff
Kirim pemberitahuan semua peristiwa sesi.
IO_SESSION_STATE_CREATION_EVENT
0x00000001
Kirim pemberitahuan saat sesi pengguna dibuat.
IO_SESSION_STATE_TERMINATION_EVENT
0x00000002
Kirim pemberitahuan saat sesi pengguna berakhir.
IO_SESSION_STATE_CONNECT_EVENT
0x00000004
Kirim pemberitahuan saat sesi pengguna tersambung.
IO_SESSION_STATE_DISCONNECT_EVENT
0x00000008
Kirim pemberitahuan saat sesi pengguna terputus.
IO_SESSION_STATE_LOGON_EVENT
0x00000010
Kirim pemberitahuan saat pengguna masuk ke sesi.
IO_SESSION_STATE_LOGOFF_EVENT
0x00000020
Kirim pemberitahuan saat pengguna keluar dari sesi.
IO_SESSION_STATE_VALID_EVENT_MASK
0x0000003f
Kirim pemberitahuan saat semua jenis peristiwa sesi terjadi.

Context

Penunjuk ke buffer konteks tempat driver dapat menyimpan data pribadinya untuk pendaftaran pemberitahuan sesi tertentu. Manajer I/O meneruskan pointer ini ke rutinitas panggilan balik pemberitahuan driver (ditentukan oleh parameter CallbackFunction rutin IoRegisterContainerNotification). Manajer I/O tidak mencoba memvalidasi penunjuk Konteks atau untuk mengakses buffer yang ditujukannya. Anggota ini bisa null jika driver tidak memerlukan buffer konteks.

Keterangan

Struktur ini digunakan oleh rutinitas IoRegisterContainerNotification . Driver yang memanggil IoRegisterContainerNotification menggunakan struktur ini untuk menentukan pemberitahuan peristiwa sesi yang didaftarkannya.

Objek perangkat per sesi mewakili perangkat yang hanya dapat diakses oleh sesi pengguna tertentu. Jika driver mengatur anggota IoObject untuk mengarahkan ke objek perangkat yang merupakan objek perangkat per sesi, IoRegisterContainerNotification mendaftarkan driver untuk hanya menerima pemberitahuan peristiwa yang terjadi dalam sesi yang diwakili oleh objek perangkat. Jika IoObject menunjuk ke objek perangkat yang bukan objek perangkat per sesi, atau jika IoObject menunjuk ke objek yang bukan objek perangkat, IoRegisterContainerNotification mendaftarkan driver untuk menerima pemberitahuan peristiwa yang terjadi di semua sesi di komputer.

Untuk menentukan apakah objek perangkat adalah objek perangkat per sesi, driver dapat memanggil rutinitas IoGetDevicePropertyData untuk mengkueri kunci properti DEVPKEY_Device_SessionId di penyimpanan properti objek perangkat. Jika properti DEVPKEY_Device_SessionId ada dan nilai properti diatur ke pengidentifikasi sesi Layanan Terminal bukan nol, objek perangkat adalah objek perangkat per sesi. Untuk informasi selengkapnya, lihat DEVPKEY_Device_SessionId.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung di Windows 7 dan versi yang lebih baru dari sistem operasi Windows.
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h)

Lihat juga

DEVICE_OBJECT

DEVPKEY_Device_SessionId

DRIVER_OBJECT

FILE_OBJECT

IoGetDevicePropertyData

IoRegisterContainerNotification