Compartir a través de


estructura IO_SESSION_STATE_NOTIFICATION (wdm.h)

La estructura IO_SESSION_STATE_NOTIFICATION contiene información que un controlador en modo kernel proporciona al ioRegisterContainerNotification rutina 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. Establézcalo en cero.

IoObject

Puntero a un objeto de E/S propiedad del controlador. Este miembro puede apuntar a una estructura de DEVICE_OBJECT, DRIVER_OBJECTo 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

Enmascara 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 quiere recibir notificaciones, el controlador establece la eventMask de esta estructura miembro 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
Envíe una notificación cuando se cree la sesión del usuario.
IO_SESSION_STATE_TERMINATION_EVENT
0x00000002
Envíe 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íe una notificación cuando el usuario cierre sesión en 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 IoRegisterContainerNotification rutina CallbackFunction). 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.

Observaciones

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 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 al IoGetDevicePropertyData rutina para consultar la clave de propiedad DEVPKEY_Device_SessionId en el almacén de propiedades del objeto de dispositivo. Si existe la propiedad DEVPKEY_Device_SessionId y el valor de la propiedad se establece en un de Terminal Services identificador de sesión distinto de cero, el objeto de dispositivo es un objeto de dispositivo por sesión. Para obtener más información, vea DEVPKEY_Device_SessionId.

Requisitos

Requisito Valor
cliente mínimo admitido Compatible con Windows 7 y versiones posteriores del sistema operativo Windows.
encabezado de 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