IO_SESSION_STATE_NOTIFICATION 結構 (wdm.h)

IO_SESSION_STATE_NOTIFICATION 結構包含當驅動程式註冊以接收會話事件的通知時,內核模式驅動程式提供給 IoRegisterContainerNotification 例程的資訊。

語法

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

成員

Size

IO_SESSION_STATE_NOTIFICATION 結構的大小,以位元組為單位。

Flags

此成員目前未定義任何旗標。 設定為零。

IoObject

驅動程式擁有之 I/O 物件的指標。 這個成員可以指向 DEVICE_OBJECTDRIVER_OBJECTFILE_OBJECT 結構。 I/O 對象在註冊的存留期內必須保持有效。 刪除已註冊的裝置物件、卸除已註冊的驅動程式或關閉已註冊的檔案物件之前,請先呼叫 IoUnregisterContainerNotification 例程以取消註冊。 驅動程式可以維護多個 I/O 物件的同時註冊,但無法為相同的 I/O 物件建立一個以上的使用中註冊。

EventMask

會話事件的遮罩位。 這些遮罩位表示驅動程式要求通知的事件。

若要註冊以接收會話事件的通知,內核模式驅動程式會呼叫 IoRegisterContainerNotification 例程。 若要指定驅動程式想要接收通知的會話事件,驅動程式會將此結構的 EventMask 成員設定為一個或多個 IO_SESSION_STATE_XXX 常數位 OR。

將此成員設定為下列一或多個 IO_SESSION_STATE_XXX 常數的位 OR:

意義
IO_SESSION_STATE_ALL_EVENTS
0xffffffff
傳送所有工作階段事件的通知。
IO_SESSION_STATE_CREATION_EVENT
0x00000001
建立用戶會話時傳送通知。
IO_SESSION_STATE_TERMINATION_EVENT
0x00000002
當使用者會話結束時傳送通知。
IO_SESSION_STATE_CONNECT_EVENT
0x00000004
在用戶會話連線時傳送通知。
IO_SESSION_STATE_DISCONNECT_EVENT
0x00000008
當使用者會話中斷連線時傳送通知。
IO_SESSION_STATE_LOGON_EVENT
0x00000010
當使用者登入會話時傳送通知。
IO_SESSION_STATE_LOGOFF_EVENT
0x00000020
當使用者註銷會話時傳送通知。
IO_SESSION_STATE_VALID_EVENT_MASK
0x0000003f
發生任何類型的會話事件時傳送通知。

Context

內容緩衝區的指標,驅動程式可以在其中儲存其特定會話通知註冊的私人數據。 I/O 管理員會將這個指標傳遞給驅動程式的通知回呼例程, (由 IoRegisterContainerNotification 例程的 CallbackFunction 參數所指定) 。 I/O 管理員不會嘗試驗證 內容 指標,或存取它所指向的緩衝區。 如果驅動程式不需要內容緩衝區,這個成員可以是 NULL

備註

IoRegisterContainerNotification 例程會使用此結構。 呼叫 IoRegisterContainerNotification 的驅動程式會使用此結構來指定要註冊的會話事件通知。

每個會話裝置物件代表只能由特定用戶會話存取的裝置。 如果驅動程式將 IoObject 成員設定為指向屬於個別會話裝置對象的裝置物件, IoRegisterContainerNotification 會註冊驅動程式,只接收裝置物件所代表之會話中發生的事件通知。 如果 IoObject 指向不是個別會話裝置對象的裝置物件,或如果 IoObject 指向不是裝置物件的物件, IoRegisterContainerNotification 會註冊驅動程式,以接收計算機上所有會話中發生的事件通知。

若要判斷裝置物件是否為個別會話裝置對象,驅動程式可以呼叫 IoGetDevicePropertyData 例程,以查詢裝置物件屬性存放區中的 DEVPKEY_Device_SessionId 屬性索引鍵。 如果 DEVPKEY_Device_SessionId 屬性存在,而且屬性的值設定為非零 的終端機服務 會話標識符,則裝置對像是每一會話裝置物件。 如需詳細資訊,請參閱 DEVPKEY_Device_SessionId

規格需求

需求
最低支援的用戶端 Windows 7 和更新版本的 Windows 作業系統支援。
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h、Fltkernel.h)

另請參閱

DEVICE_OBJECT

DEVPKEY_Device_SessionId

DRIVER_OBJECT

FILE_OBJECT

IoGetDevicePropertyData

IoRegisterContainerNotification