Partager via


structure IO_SESSION_STATE_NOTIFICATION (wdm.h)

La structure IO_SESSION_STATE_NOTIFICATION contient des informations qu’un pilote en mode noyau fournit à la routine IoRegisterContainerNotification lorsque le pilote s’inscrit pour recevoir des notifications d’événements de session.

Syntaxe

typedef struct _IO_SESSION_STATE_NOTIFICATION {
  ULONG Size;
  ULONG Flags;
  PVOID IoObject;
  ULONG EventMask;
  PVOID Context;
} IO_SESSION_STATE_NOTIFICATION, *PIO_SESSION_STATE_NOTIFICATION;

Membres

Size

Taille, en octets, de la structure IO_SESSION_STATE_NOTIFICATION .

Flags

Aucun indicateur n’est actuellement défini pour ce membre. Définit la valeur zéro.

IoObject

Pointeur vers un objet d’E/S appartenant au pilote. Ce membre peut pointer vers une structure DEVICE_OBJECT, DRIVER_OBJECT ou FILE_OBJECT . L’objet E/S doit rester valide pendant toute la durée de l’inscription. Avant de supprimer un objet d’appareil inscrit, de décharger un pilote inscrit ou de fermer un objet de fichier inscrit, appelez la routine IoUnregisterContainerNotification pour annuler l’inscription. Un pilote peut gérer des inscriptions simultanées pour plusieurs objets d’E/S, mais il ne peut pas créer plusieurs inscriptions actives pour le même objet d’E/S.

EventMask

Masquer les bits pour les événements de session. Ces bits de masque indiquent les événements pour lesquels le pilote demande des notifications.

Pour s’inscrire afin de recevoir des notifications d’événements de session, un pilote en mode noyau appelle la routine IoRegisterContainerNotification . Pour spécifier les événements de session pour lesquels le pilote souhaite recevoir des notifications, le pilote définit le membre EventMask de cette structure sur le OR au niveau du bit d’une ou plusieurs constantes IO_SESSION_STATE_XXX .

Affectez à ce membre la valeur OR au niveau du bit d’une ou plusieurs des constantes IO_SESSION_STATE_XXX suivantes :

Valeur Signification
IO_SESSION_STATE_ALL_EVENTS
0xffffffff
Envoyer des notifications de tous les événements de session.
IO_SESSION_STATE_CREATION_EVENT
0x00000001
Envoyez une notification lors de la création de la session utilisateur.
IO_SESSION_STATE_TERMINATION_EVENT
0x00000002
Envoyez une notification à la fin de la session utilisateur.
IO_SESSION_STATE_CONNECT_EVENT
0x00000004
Envoyez une notification lorsque la session utilisateur est connectée.
IO_SESSION_STATE_DISCONNECT_EVENT
0x00000008
Envoyez une notification lorsque la session utilisateur est déconnectée.
IO_SESSION_STATE_LOGON_EVENT
0x00000010
Envoyez une notification lorsque l’utilisateur se connecte à la session.
IO_SESSION_STATE_LOGOFF_EVENT
0x00000020
Envoyez une notification lorsque l’utilisateur se déconnecte de la session.
IO_SESSION_STATE_VALID_EVENT_MASK
0x0000003f
Envoyez une notification lorsque n’importe quel type d’événement de session se produit.

Context

Pointeur vers une mémoire tampon de contexte dans laquelle le pilote peut stocker ses données privées pour une inscription de notification de session particulière. Le gestionnaire d’E/S transmet ce pointeur à la routine de rappel de notification du pilote (spécifiée par le paramètre CallbackFunction de la routine IoRegisterContainerNotification). Le gestionnaire d’E/S n’essaie pas de valider le pointeur de contexte ou d’accéder à la mémoire tampon vers laquelle il pointe. Ce membre peut avoir la valeur NULL si le pilote ne nécessite pas de mémoire tampon de contexte.

Remarques

Cette structure est utilisée par la routine IoRegisterContainerNotification . Un pilote qui appelle IoRegisterContainerNotification utilise cette structure pour spécifier les notifications d’événements de session auxquelles il s’inscrit.

Un objet d’appareil par session représente un appareil accessible uniquement à une session utilisateur particulière. Si un pilote définit le membre IoObject pour qu’il pointe vers un objet d’appareil qui est un objet d’appareil par session, IoRegisterContainerNotification inscrit le pilote pour recevoir uniquement des notifications des événements qui se produisent dans la session représentée par l’objet d’appareil. Si IoObject pointe vers un objet d’appareil qui n’est pas un objet d’appareil par session, ou si IoObject pointe vers un objet qui n’est pas un objet d’appareil, IoRegisterContainerNotification inscrit le pilote pour recevoir des notifications d’événements qui se produisent dans toutes les sessions de l’ordinateur.

Pour déterminer si un objet d’appareil est un objet d’appareil par session, un pilote peut appeler la routine IoGetDevicePropertyData pour interroger la clé de propriété DEVPKEY_Device_SessionId dans le magasin de propriétés de l’objet d’appareil. Si la propriété DEVPKEY_Device_SessionId existe et que la valeur de la propriété est définie sur un identificateur de session des services Terminal Server différent de zéro, l’objet d’appareil est un objet d’appareil par session. Pour plus d’informations, consultez DEVPKEY_Device_SessionId.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans Windows 7 et les versions ultérieures du système d’exploitation Windows.
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h)

Voir aussi

DEVICE_OBJECT

DEVPKEY_Device_SessionId

DRIVER_OBJECT

FILE_OBJECT

IoGetDevicePropertyData

IoRegisterContainerNotification