Función IoRegisterContainerNotification (wdm.h)
El IoRegisterContainerNotification rutina registra un controlador en modo kernel para recibir notificaciones sobre una clase de eventos especificada.
Sintaxis
NTSTATUS
IoRegisterContainerNotification(
_In_ IO_CONTAINER_NOTIFICATION_CLASS NotificationClass,
_In_ PIO_CONTAINER_NOTIFICATION_FUNCTION CallbackFunction,
_In_reads_bytes_opt_(NotificationInformationLength) PVOID NotificationInformation,
_In_ ULONG NotificationInformationLength,
_Out_ PVOID * CallbackRegistration
);
Parámetros
[in] NotificationClass
Especifica la clase de eventos para los que el autor de la llamada (controlador) solicita notificaciones. Establezca este parámetro en el siguiente valor de enumeración IO_CONTAINER_NOTIFICATION_CLASS:
- IoSessionStateNotification
Para obtener más información, vea la siguiente sección Comentarios.
[in] CallbackFunction
Puntero a una función de devolución de llamada implementada por el autor de la llamada (controlador). El administrador de E/S llama a esta función para notificar al autor de la llamada cuando se produce un evento de la clase indicada por NotificationClass. Para NotificationClass = ioSessionStateNotification, este parámetro es un puntero a una función de IO_SESSION_NOTIFICATION_FUNCTION proporcionada por el autor de la llamada. Sin embargo, el autor de la llamada debe convertir este puntero de función al tipo PIO_CONTAINER_NOTIFICATION_FUNCTION para que coincida con el tipo de parámetro. Para obtener más información, vea la siguiente sección Comentarios.
[in, optional] NotificationInformation
Puntero a un búfer asignado por el autor de la llamada que contiene la estructura de información de notificación para un evento de la clase especificada por NotificationClass. Para NotificationClass = IoSessionStateNotification, NotificationInformation apunta a una estructura de IO_SESSION_STATE_NOTIFICATION. El autor de la llamada debe rellenar esta estructura antes de llamar a ioRegisterContainerNotification. Durante esta llamada, ioRegisterContainerNotification copia los datos de esta estructura y el administrador de E/S no tiene acceso a la copia del controlador de la estructura después de que se devuelva la llamada.
[in] NotificationInformationLength
Tamaño, en bytes, de la estructura de información de notificación contenida en el búfer al que apunta NotificationInformation. Para NotificationClass = ioSessionStateNotification, establezca este parámetro en sizeof(IO_SESSION_STATE_NOTIFICATION).
[out] CallbackRegistration
Puntero a una ubicación en la que esta rutina escribe la dirección de un objeto de registro de notificaciones de contenedor. Este objeto es un objeto de sistema opaco en el que el administrador de E/S almacena información sobre el registro de notificaciones de contenedor del autor de la llamada. Cuando las notificaciones ya no son necesarias, el autor de la llamada cancela el registro pasando este puntero de objeto a la rutina IoUnregisterContainerNotification.
Valor devuelto
ioRegisterContainerNotification devuelve STATUS_SUCCESS si la llamada se realiza correctamente. Entre los valores devueltos de error posibles se incluyen los siguientes:
Código devuelto | Descripción |
---|---|
STATUS_INVALID_PARAMETER_1 | El parámetro NotificationClass no es una constante de enumeración IO_CONTAINER_NOTIFICATION_CLASS válida. |
STATUS_INVALID_PARAMETER_3 | La información de la estructura a la que apunta NotificationInformation es incorrecta. |
STATUS_INVALID_PARAMETER_4 | El parámetro NotificationInformationLength no es igual al tamaño de la estructura de información de notificación necesaria para su uso con el valor de parámetro NotificationClass especificado. |
STATUS_ALREADY_COMMITTED | El controlador ya está registrado para recibir NotificationClass notificaciones de eventos asociados al objeto de E/S especificado. |
STATUS_INSUFFICIENT_RESOURCES | El sistema operativo no tiene recursos suficientes para crear el registro solicitado. |
Observaciones
Esta rutina puede admitir notificaciones de eventos en una variedad de clases de eventos. En Windows 7, esta rutina solo admite ioSessionStateNotification notificaciones, que notifican a un controlador en modo kernel los cambios en el estado de las sesiones de usuario que el controlador está interesado. Para las aplicaciones en modo de usuario, la función WTSRegisterSessionNotification rellena un rol similar.
El tipo de puntero de función para el parámetro callbackFunction se define de la siguiente manera:
typedef NTSTATUS
(*PIO_CONTAINER_NOTIFICATION_FUNCTION)(
);
El llamador debe convertir el puntero de función de devolución de llamada a este tipo para que coincida con el tipo de parámetro CallbackFunction callbackFunction. ioRegisterContainerNotification determina el tipo real del puntero de función de devolución de llamada del parámetro notificationClass. Para NotificationClass = IoSessionStateNotification, callbackFunction apunta a una función de IO_SESSION_NOTIFICATION_FUNCTION.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible en Windows 7 y versiones posteriores del sistema operativo Windows. |
de la plataforma de destino de | Universal |
encabezado de | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h) |
biblioteca de | NtosKrnl.lib |
DLL de | NtosKrnl.exe |
irQL | <= APC_LEVEL |
Consulte también
IO_CONTAINER_NOTIFICATION_CLASS
IO_SESSION_NOTIFICATION_FUNCTION