структура 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 этой структуры в побитовое ИЛИ одной или нескольких констант IO_SESSION_STATE_XXX .
Задайте для этого элемента побитовое ИЛИ одной или нескольких из следующих констант IO_SESSION_STATE_XXX :
Context
Указатель на буфер контекста, в котором драйвер может хранить свои личные данные для регистрации уведомления определенного сеанса. Диспетчер ввода-вывода передает этот указатель в подпрограмму обратного вызова уведомлений драйвера (задается параметром CallbackFunction процедуры IoRegisterContainerNotification). Диспетчер ввода-вывода не пытается проверить указатель контекста или получить доступ к буферу, на который он указывает. Этот элемент может иметь значение 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) |