Freigeben über


IO_SESSION_STATE_NOTIFICATION Struktur (wdm.h)

Die IO_SESSION_STATE_NOTIFICATION-Struktur enthält Informationen, die ein Kernelmodustreiber der IoRegisterContainerNotification Routine bereitstellt, wenn sich der Treiber registriert, um Benachrichtigungen über Sitzungsereignisse zu empfangen.

Syntax

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

Angehörige

Size

Die Größe der IO_SESSION_STATE_NOTIFICATION Struktur in Bytes.

Flags

Für dieses Element sind derzeit keine Flags definiert. Auf Null festgelegt.

IoObject

Ein Zeiger auf ein E/A-Objekt, das dem Treiber gehört. Dieses Element kann auf eine DEVICE_OBJECT, DRIVER_OBJECToder FILE_OBJECT Struktur verweisen. Das E/A-Objekt muss für die Lebensdauer der Registrierung gültig bleiben. Bevor Sie ein registriertes Geräteobjekt löschen, einen registrierten Treiber entladen oder ein registriertes Dateiobjekt schließen, rufen Sie die IoUnregisterContainerNotification Routine auf, um die Registrierung abzubrechen. Ein Treiber kann gleichzeitige Registrierungen für mehrere E/A-Objekte verwalten, aber es kann nicht mehr als eine aktive Registrierung für dasselbe E/A-Objekt erstellen.

EventMask

Maskiert Bits für Sitzungsereignisse. Diese Maskenbits geben die Ereignisse an, für die der Treiber Benachrichtigungen anfordert.

Um sich für den Empfang von Sitzungsereignissen zu registrieren, ruft ein Kernelmodustreiber die IoRegisterContainerNotification Routine auf. Um die Sitzungsereignisse anzugeben, für die der Treiber Benachrichtigungen empfangen möchte, legt der Treiber die EventMask- Member dieser Struktur auf den bitweisen OR einer oder mehrerer IO_SESSION_STATE_XXX- Konstanten fest.

Legen Sie dieses Element auf die bitweise ODER einer oder mehrerer der folgenden IO_SESSION_STATE_XXX- Konstanten fest:

Wert Bedeutung
IO_SESSION_STATE_ALL_EVENTS
0xffffffff
Senden von Benachrichtigungen aller Sitzungsereignisse.
IO_SESSION_STATE_CREATION_EVENT
0x00000001
Senden Sie eine Benachrichtigung, wenn die Benutzersitzung erstellt wird.
IO_SESSION_STATE_TERMINATION_EVENT
0x00000002
Senden Sie eine Benachrichtigung, wenn die Benutzersitzung endet.
IO_SESSION_STATE_CONNECT_EVENT
0x00000004
Senden Sie eine Benachrichtigung, wenn die Benutzersitzung verbunden ist.
IO_SESSION_STATE_DISCONNECT_EVENT
0x00000008
Senden Sie eine Benachrichtigung, wenn die Benutzersitzung getrennt wird.
IO_SESSION_STATE_LOGON_EVENT
0x00000010
Senden Sie eine Benachrichtigung, wenn sich der Benutzer bei der Sitzung anmeldet.
IO_SESSION_STATE_LOGOFF_EVENT
0x00000020
Senden Sie eine Benachrichtigung, wenn sich der Benutzer bei der Sitzung abmeldet.
IO_SESSION_STATE_VALID_EVENT_MASK
0x0000003f
Senden Sie eine Benachrichtigung, wenn ein beliebiger Sitzungsereignistyp auftritt.

Context

Ein Zeiger auf einen Kontextpuffer, in dem der Treiber seine privaten Daten für eine bestimmte Sitzungsbenachrichtigungsregistrierung speichern kann. Der E/A-Manager übergibt diesen Zeiger an die Benachrichtigungsrückrufroutine des Treibers (angegeben durch den Parameter IoRegisterContainerNotification Routine CallbackFunction Parameter). Der E/A-Manager versucht nicht, den Context Zeiger zu überprüfen oder auf den Puffer zuzugreifen, auf den er verweist. Dieses Element kann NULL- werden, wenn der Treiber keinen Kontextpuffer erfordert.

Bemerkungen

Diese Struktur wird von der IoRegisterContainerNotification Routine verwendet. Ein Treiber, der IoRegisterContainerNotification aufruft verwendet diese Struktur, um die Sitzungsereignisbenachrichtigungen anzugeben, für die es registriert wird.

Ein Objekt pro Sitzungsgerät stellt ein Gerät dar, auf das nur von einer bestimmten Benutzersitzung zugegriffen werden kann. Wenn ein Treiber das IoObject Member so festlegt, dass es sich um ein Geräteobjekt pro Sitzung handelt, registriert IoRegisterContainerNotification den Treiber nur Benachrichtigungen über Ereignisse zu erhalten, die in der Sitzung auftreten, die durch das Geräteobjekt dargestellt wird. Wenn IoObject- auf ein Geräteobjekt verweist, das kein Objekt pro Sitzung ist, oder wenn IoObject- auf ein Objekt zeigt, das kein Geräteobjekt ist, IoRegisterContainerNotification registriert den Treiber, um Benachrichtigungen über Ereignisse zu empfangen, die in allen Sitzungen auf dem Computer auftreten.

Um festzustellen, ob ein Geräteobjekt ein Objekt pro Sitzung ist, kann ein Treiber die IoGetDevicePropertyData Routine aufrufen, um den DEVPKEY_Device_SessionId Eigenschaftsschlüssel im Eigenschaftenspeicher des Geräteobjekts abzufragen. Wenn die DEVPKEY_Device_SessionId-Eigenschaft vorhanden ist und der Wert der Eigenschaft auf ein nonzero Terminal Services Sitzungsbezeichner festgelegt ist, ist das Geräteobjekt ein Geräteobjekt pro Sitzung. Weitere Informationen finden Sie unter DEVPKEY_Device_SessionId.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt in Windows 7 und höheren Versionen des Windows-Betriebssystems.
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h)

Siehe auch

DEVICE_OBJECT

DEVPKEY_Device_SessionId

DRIVER_OBJECT

FILE_OBJECT

IoGetDevicePropertyData-

IoRegisterContainerNotification-