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_OBJECT、 DRIVER_OBJECT或 FILE_OBJECT 結構。 I/O 對象在註冊的存留期內必須保持有效。 刪除已註冊的裝置物件、卸除已註冊的驅動程式或關閉已註冊的檔案物件之前,請先呼叫 IoUnregisterContainerNotification 例程以取消註冊。 驅動程式可以維護多個 I/O 物件的同時註冊,但無法為相同的 I/O 物件建立一個以上的使用中註冊。
EventMask
會話事件的遮罩位。 這些遮罩位表示驅動程式要求通知的事件。
若要註冊以接收會話事件的通知,內核模式驅動程式會呼叫 IoRegisterContainerNotification 例程。 若要指定驅動程式想要接收通知的會話事件,驅動程式會將此結構的 EventMask 成員設定為一個或多個 IO_SESSION_STATE_XXX 常數位 OR。
將此成員設定為下列一或多個 IO_SESSION_STATE_XXX 常數的位 OR:
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) |