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 :
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) |