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