Поделиться через


структура 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

Указатель на объект ввода-вывода, принадлежащий драйверу. Этот элемент может указывать на структуру DEVICE_OBJECT, DRIVER_OBJECTили FILE_OBJECT. Объект ввода-вывода должен оставаться действительным в течение всего времени существования регистрации. Перед удалением зарегистрированного объекта устройства выгрузите зарегистрированный драйвер или закройте зарегистрированный файловый объект, вызовите процедуру IoUnregisterContainerNotification, чтобы отменить регистрацию. Драйвер может поддерживать одновременные регистрации для нескольких объектов ввода-вывода, но он не может создать несколько активных регистраций для одного объекта ввода-вывода.

EventMask

Маскирование битов для событий сеанса. Эти биты маски указывают события, для которых драйвер запрашивает уведомления.

Чтобы зарегистрировать уведомления о событиях сеанса, драйвер режима ядра вызывает подпрограмму IoRegisterContainerNotification. Чтобы указать события сеанса, для которых драйвер хочет получать уведомления, драйвер задает элемент EventMask этой структуры битовой или одной или нескольких констант xxx IO_SESSION_STATE_.

Задайте для этого элемента побитовую или одну или несколько следующих констант IO_SESSION_STATE_XXX:

Ценность Значение
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

Указатель на буфер контекста, в котором драйвер может хранить свои частные данные для определенной регистрации уведомлений сеанса. Диспетчер ввода-вывода передает этот указатель на подпрограмму обратного вызова уведомлений драйвера (указанную параметром IoRegisterContainerNotification подпрограммы callbackFunction). Диспетчер ввода-вывода не пытается проверить указатель контекста или получить доступ к буферу, на который он указывает. Этот элемент может быть NULL если драйверу не требуется буфер контекста.

Замечания

Эта структура используется подпрограммой ioRegisterContainerNotification. Драйвер, вызывающий IoRegisterContainerNotification использует эту структуру для указания уведомлений о событиях сеанса, для регистрации для него.

Объект устройства для каждого сеанса представляет устройство, к которому можно получить доступ только через определенный сеанс пользователя. Если драйвер задает элемент IoObject указывать на объект устройства, который является объектом устройства для сеанса, IoRegisterContainerNotification регистрирует драйвер только уведомления о событиях, происходящих в сеансе, представленном объектом устройства. Если IoObject указывает на объект устройства, который не является объектом устройства для сеанса, или если IoObject указывает на объект, который не является объектом устройства, IoRegisterContainerNotification регистрирует драйвер для получения уведомлений о событиях, происходящих во всех сеансах на компьютере.

Чтобы определить, является ли объект устройства объектом для каждого сеанса, драйвер может вызвать подпрограмму IoGetDevicePropertyData для запроса ключа свойства DEVPKEY_Device_SessionId в хранилище свойств объекта устройства. Если свойство DEVPKEY_Device_SessionId существует, а значение свойства имеет значение ненулевого службы терминалов идентификатор сеанса, объект устройства — это объект устройства для каждого сеанса. Дополнительные сведения см. в DEVPKEY_Device_SessionId.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается в Windows 7 и более поздних версиях операционной системы Windows.
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h)

См. также

DEVICE_OBJECT

DEVPKEY_Device_SessionId

DRIVER_OBJECT

FILE_OBJECT

IoGetDevicePropertyData

IoRegisterContainerNotification