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 管理員不會嘗試驗證 Context 指標,或存取其指向的緩衝區。 如果驅動程式不需要內容緩衝區,此成員可以 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) |