Condividi tramite


IO_SESSION_STATE_NOTIFICATION struttura (wdm.h)

La struttura IO_SESSION_STATE_NOTIFICATION contiene informazioni fornite da un driver in modalità kernel alla routine IoRegisterContainerNotification quando il driver registra per ricevere notifiche degli eventi di sessione.

Sintassi

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

Members

Size

Dimensioni, in byte, della struttura IO_SESSION_STATE_NOTIFICATION .

Flags

Non sono attualmente definiti flag per questo membro. Imposta su zero.

IoObject

Puntatore a un oggetto I/O di proprietà del driver. Questo membro può puntare a una struttura DEVICE_OBJECT, DRIVER_OBJECT o FILE_OBJECT . L'oggetto I/O deve rimanere valido per la durata della registrazione. Prima di eliminare un oggetto dispositivo registrato, scaricare un driver registrato o chiudere un oggetto file registrato, chiamare la routine IoUnregisterContainerNotification per annullare la registrazione. Un driver può gestire registrazioni simultanee per più di un oggetto I/O, ma non può creare più di una registrazione attiva per lo stesso oggetto I/O.

EventMask

Maschera bit per gli eventi di sessione. Questi bit maschera indicano gli eventi per i quali il driver richiede notifiche.

Per registrare per ricevere notifiche degli eventi di sessione, un driver in modalità kernel chiama la routine IoRegisterContainerNotification . Per specificare gli eventi di sessione per i quali il driver vuole ricevere notifiche, il driver imposta il membro EventMask della struttura su or bit per bit di una o più costanti IO_SESSION_STATE_XXX.

Impostare questo membro sull'OR bit per bit di una o più delle costanti IO_SESSION_STATE_XXX seguenti:

Valore Significato
IO_SESSION_STATE_ALL_EVENTS
0xffffffff
Inviare notifiche di tutti gli eventi di sessione.
IO_SESSION_STATE_CREATION_EVENT
0x00000001
Inviare una notifica quando viene creata la sessione utente.
IO_SESSION_STATE_TERMINATION_EVENT
0x00000002
Inviare una notifica al termine della sessione utente.
IO_SESSION_STATE_CONNECT_EVENT
0x00000004
Inviare una notifica quando la sessione utente è connessa.
IO_SESSION_STATE_DISCONNECT_EVENT
0x00000008
Inviare una notifica quando la sessione utente viene disconnessa.
IO_SESSION_STATE_LOGON_EVENT
0x00000010
Inviare una notifica quando l'utente accede alla sessione.
IO_SESSION_STATE_LOGOFF_EVENT
0x00000020
Inviare una notifica quando l'utente si disconnette dalla sessione.
IO_SESSION_STATE_VALID_EVENT_MASK
0x0000003f
Inviare una notifica quando si verifica qualsiasi tipo di evento di sessione.

Context

Puntatore a un buffer di contesto in cui il driver può archiviare i dati privati per una determinata registrazione della notifica di sessione. Il gestore I/O passa questo puntatore alla routine di callback di notifica del driver (specificata dal parametro CallbackFunction della routine IoRegisterContainerNotification). Gestione I/O non tenta di convalidare il puntatore contesto o di accedere al buffer a cui punta. Questo membro può essere NULL se il driver non richiede un buffer di contesto.

Commenti

Questa struttura viene usata dalla routine IoRegisterContainerNotification . Un driver che chiama IoRegisterContainerNotification usa questa struttura per specificare le notifiche degli eventi di sessione per cui viene eseguita la registrazione.

Un oggetto dispositivo per sessione rappresenta un dispositivo accessibile solo da una determinata sessione utente. Se un driver imposta il membro IoObject su un oggetto dispositivo che è un oggetto dispositivo per sessione, IoRegisterContainerNotification registra il driver per ricevere solo notifiche di eventi che si verificano nella sessione rappresentata dall'oggetto dispositivo. Se IoObject punta a un oggetto dispositivo che non è un oggetto dispositivo per sessione o se IoObject punta a un oggetto che non è un oggetto dispositivo, IoRegisterContainerNotification registra il driver per ricevere notifiche di eventi che si verificano in tutte le sessioni nel computer.

Per determinare se un oggetto dispositivo è un oggetto dispositivo per sessione, un driver può chiamare la routine IoGetDevicePropertyData per eseguire query sulla chiave della proprietà DEVPKEY_Device_SessionId nell'archivio delle proprietà dell'oggetto dispositivo. Se la proprietà DEVPKEY_Device_SessionId esiste e il valore della proprietà è impostato su un identificatore di sessione di Servizi terminal non zero, l'oggetto dispositivo è un oggetto dispositivo per sessione. Per altre informazioni, vedere DEVPKEY_Device_SessionId.

Requisiti

Requisito Valore
Client minimo supportato Supportato in Windows 7 e versioni successive del sistema operativo Windows.
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h)

Vedi anche

DEVICE_OBJECT

DEVPKEY_Device_SessionId

DRIVER_OBJECT

FILE_OBJECT

IoGetDevicePropertyData

IoRegisterContainerNotification