Partager via


Fonction IoRegisterContainerNotification (wdm.h)

La routine IoRegisterContainerNotification inscrit un pilote en mode noyau pour recevoir des notifications sur une classe d’événements spécifiée.

Syntaxe

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

Paramètres

[in] NotificationClass

Spécifie la classe d’événements pour laquelle l’appelant (pilote) demande des notifications. Définissez ce paramètre sur la valeur d’énumération IO_CONTAINER_NOTIFICATION_CLASS suivante :

  • IoSessionStateNotification

Pour plus d’informations, consultez la section Remarques suivante.

[in] CallbackFunction

Pointeur vers une fonction de rappel implémentée par l’appelant (pilote). Le gestionnaire d’E/S appelle cette fonction pour notifier l’appelant lorsqu’un événement de la classe indiquée par NotificationClass se produit. Pour NotificationClass = IoSessionStateNotification, ce paramètre est un pointeur vers une fonction IO_SESSION_NOTIFICATION_FUNCTION fournie par l’appelant. Toutefois, l’appelant doit convertir ce pointeur de fonction en type PIO_CONTAINER_NOTIFICATION_FUNCTION pour qu’il corresponde au type de paramètre. Pour plus d’informations, consultez la section Remarques suivante.

[in, optional] NotificationInformation

Pointeur vers une mémoire tampon allouée par l’appelant qui contient la structure des informations de notification pour un événement de la classe spécifiée par NotificationClass. Pour NotificationClass = IoSessionStateNotification, NotificationInformation pointe vers une structure IO_SESSION_STATE_NOTIFICATION. L’appelant doit remplir cette structure avant d’appeler IoRegisterContainerNotification. Pendant cet appel, IoRegisterContainerNotification copie les données de cette structure, et le gestionnaire d’E/S n’accède pas à la copie du pilote de la structure après le retour de l’appel.

[in] NotificationInformationLength

Taille, en octets, de la structure d’informations de notification contenue dans la mémoire tampon pointée par NotificationInformation. Pour NotificationClass = IoSessionStateNotification, définissez ce paramètre sur taille de(IO_SESSION_STATE_NOTIFICATION).

[out] CallbackRegistration

Pointeur vers un emplacement dans lequel cette routine écrit l’adresse d’un objet d’inscription de notification de conteneur. Cet objet est un objet système opaque dans lequel le gestionnaire d’E/S stocke des informations sur l’inscription de notification de conteneur de l’appelant. Lorsque les notifications ne sont plus requises, l’appelant annule l’inscription en passant ce pointeur d’objet à la routine IoUnregisterContainerNotification.

Valeur de retour

IoRegisterContainerNotification retourne STATUS_SUCCESS si l’appel réussit. Les valeurs de retour d’erreur possibles sont les suivantes :

Retourner le code Description
STATUS_INVALID_PARAMETER_1 Le paramètre notificationClass n’est pas une constante d’énumération IO_CONTAINER_NOTIFICATION_CLASS valide.
STATUS_INVALID_PARAMETER_3 Les informations de la structure pointées par NotificationInformation sont incorrectes.
STATUS_INVALID_PARAMETER_4 Le paramètre NotificationInformationLength n’est pas égal à la taille de la structure d’informations de notification requise pour une utilisation avec la valeur de paramètre NotificationClass spécifiée.
STATUS_ALREADY_COMMITTED Le pilote est déjà inscrit pour recevoir NotificationClass notifications d’événements associés à l’objet d’E/S spécifié.
STATUS_INSUFFICIENT_RESOURCES Le système d’exploitation a des ressources insuffisantes pour créer l’inscription demandée.

Remarques

Cette routine peut potentiellement prendre en charge les notifications d’événements dans diverses classes d’événements. Dans Windows 7, cette routine prend uniquement en charge Notifications IoSessionStateNotification, qui informent un pilote en mode noyau des modifications apportées à l’état des sessions utilisateur qui intéressent le pilote. Pour les applications en mode utilisateur, la fonction WTSRegisterSessionNotification remplit un rôle similaire.

Le type de pointeur de fonction pour le paramètre CallbackFunction est défini comme suit :

typedef NTSTATUS
  (*PIO_CONTAINER_NOTIFICATION_FUNCTION)(
    );

L’appelant doit convertir le pointeur de fonction de rappel vers ce type pour correspondre au type de paramètre CallbackFunction. IoRegisterContainerNotification détermine le type réel du pointeur de fonction de rappel à partir du paramètre NotificationClass. Pour NotificationClass = IoSessionStateNotification, CallbackFunction pointe vers une fonction IO_SESSION_NOTIFICATION_FUNCTION.

Exigences

Exigence Valeur
client minimum pris en charge Disponible dans Windows 7 et versions ultérieures du système d’exploitation Windows.
plateforme cible Universel
d’en-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Voir aussi

IO_CONTAINER_NOTIFICATION_CLASS

IO_SESSION_NOTIFICATION_FUNCTION

IO_SESSION_STATE_NOTIFICATION

IoUnregisterContainerNotification

WTSRegisterSessionNotification