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 Notes qui suit.

[in] CallbackFunction

Pointeur vers une fonction de rappel implémentée par l’appelant (pilote). Le gestionnaire d’E/S appelle cette fonction pour avertir 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 Notes qui suit.

[in, optional] NotificationInformation

Pointeur vers une mémoire tampon allouée à l’appelant qui contient la structure d’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 sizeof(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 des notifications 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 retournée

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

Code de retour 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 des notifications NotificationClass des événements associés à l’objet d’E/S spécifié.
STATUS_INSUFFICIENT_RESOURCES Le système d’exploitation ne dispose pas de ressources suffisantes 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 les notifications IoSessionStateNotification, qui informent un pilote en mode noyau des modifications apportées au status 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 la fonction de rappel vers ce type pour qu’il corresponde au type de paramètre CallbackFunction . IoRegisterContainerNotification détermine le type réel du pointeur de la fonction de rappel à partir du paramètre NotificationClass . Pour NotificationClass = IoSessionStateNotification, CallbackFunction pointe vers une fonction IO_SESSION_NOTIFICATION_FUNCTION .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows 7 et versions ultérieures du système d’exploitation Windows.
Plateforme cible Universal
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