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