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