estructura IO_SESSION_STATE_NOTIFICATION (wdm.h)

La estructura de IO_SESSION_STATE_NOTIFICATION contiene información que un controlador en modo kernel proporciona a la rutina IoRegisterContainerNotification cuando el controlador se registra para recibir notificaciones de eventos de sesión.

Sintaxis

typedef struct _IO_SESSION_STATE_NOTIFICATION {
  ULONG Size;
  ULONG Flags;
  PVOID IoObject;
  ULONG EventMask;
  PVOID Context;
} IO_SESSION_STATE_NOTIFICATION, *PIO_SESSION_STATE_NOTIFICATION;

Miembros

Size

Tamaño, en bytes, de la estructura IO_SESSION_STATE_NOTIFICATION .

Flags

Actualmente no hay marcas definidas para este miembro. Establecer en cero.

IoObject

Puntero a un objeto de E/S propiedad del controlador. Este miembro puede apuntar a una estructura de DEVICE_OBJECT, DRIVER_OBJECT o FILE_OBJECT . El objeto de E/S debe permanecer válido durante la vigencia del registro. Antes de eliminar un objeto de dispositivo registrado, descargar un controlador registrado o cerrar un objeto de archivo registrado, llame a la rutina IoUnregisterContainerNotification para cancelar el registro. Un controlador puede mantener registros simultáneos para más de un objeto de E/S, pero no puede crear más de un registro activo para el mismo objeto de E/S.

EventMask

Enmascarar bits para eventos de sesión. Estos bits de máscara indican los eventos para los que el controlador solicita notificaciones.

Para registrarse para recibir notificaciones de eventos de sesión, un controlador en modo kernel llama a la rutina IoRegisterContainerNotification . Para especificar los eventos de sesión para los que el controlador desea recibir notificaciones, el controlador establece el miembro EventMask de esta estructura en el or bit a bit de una o varias constantes IO_SESSION_STATE_XXX .

Establezca este miembro en el or bit a bit de una o varias de las siguientes constantes IO_SESSION_STATE_XXX :

Valor Significado
IO_SESSION_STATE_ALL_EVENTS
0xffffffff
Enviar notificaciones de todos los eventos de sesión.
IO_SESSION_STATE_CREATION_EVENT
0x00000001
Enviar una notificación cuando se crea la sesión de usuario.
IO_SESSION_STATE_TERMINATION_EVENT
0x00000002
Enviar una notificación cuando finalice la sesión del usuario.
IO_SESSION_STATE_CONNECT_EVENT
0x00000004
Envíe una notificación cuando la sesión del usuario esté conectada.
IO_SESSION_STATE_DISCONNECT_EVENT
0x00000008
Envíe una notificación cuando se desconecte la sesión del usuario.
IO_SESSION_STATE_LOGON_EVENT
0x00000010
Envíe una notificación cuando el usuario inicie sesión en la sesión.
IO_SESSION_STATE_LOGOFF_EVENT
0x00000020
Envía una notificación cuando el usuario cierra sesión de la sesión.
IO_SESSION_STATE_VALID_EVENT_MASK
0x0000003f
Envíe una notificación cuando se produzca cualquier tipo de evento de sesión.

Context

Puntero a un búfer de contexto en el que el controlador puede almacenar sus datos privados para un registro de notificación de sesión determinado. El administrador de E/S pasa este puntero a la rutina de devolución de llamada de notificación del controlador (especificada por el parámetro CallbackFunction de la rutina IoRegisterContainerNotification). El administrador de E/S no intenta validar el puntero de contexto ni acceder al búfer al que apunta. Este miembro puede ser NULL si el controlador no requiere un búfer de contexto.

Comentarios

La rutina IoRegisterContainerNotification usa esta estructura. Un controlador que llama a IoRegisterContainerNotification usa esta estructura para especificar las notificaciones de eventos de sesión para las que se registra.

Un objeto de dispositivo por sesión representa un dispositivo al que solo puede acceder una sesión de usuario determinada. Si un controlador establece el miembro IoObject para que apunte a un objeto de dispositivo que es un objeto de dispositivo por sesión, IoRegisterContainerNotification registra el controlador para recibir solo notificaciones de eventos que se producen en la sesión representada por el objeto de dispositivo. Si IoObject apunta a un objeto de dispositivo que no es un objeto de dispositivo por sesión, o si IoObject apunta a un objeto que no es un objeto de dispositivo, IoRegisterContainerNotification registra el controlador para recibir notificaciones de eventos que se producen en todas las sesiones del equipo.

Para determinar si un objeto de dispositivo es un objeto de dispositivo por sesión, un controlador puede llamar a la rutina IoGetDevicePropertyData para consultar la clave de propiedad DEVPKEY_Device_SessionId en el almacén de propiedades del objeto de dispositivo. Si la propiedad DEVPKEY_Device_SessionId existe y el valor de la propiedad se establece en un identificador de sesión de Terminal Services distinto de cero, el objeto de dispositivo es un objeto de dispositivo por sesión. Para obtener más información, consulte DEVPKEY_Device_SessionId.

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con Windows 7 y versiones posteriores del sistema operativo Windows.
Encabezado wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h)

Consulte también

DEVICE_OBJECT

DEVPKEY_Device_SessionId

DRIVER_OBJECT

FILE_OBJECT

IoGetDevicePropertyData

IoRegisterContainerNotification