Freigeben über


IO_SESSION_STATE_NOTIFICATION-Struktur (wdm.h)

Die IO_SESSION_STATE_NOTIFICATION-Struktur enthält Informationen, die ein Kernelmodustreiber für die IoRegisterContainerNotification-Routine bereitstellt, wenn sich der Treiber registriert, um Benachrichtigungen zu Sitzungsereignissen 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;

Member

Size

Die Größe der IO_SESSION_STATE_NOTIFICATION-Struktur in Bytes.

Flags

Für diesen Member sind derzeit keine Flags definiert. Auf NULL festlegen.

IoObject

Ein Zeiger auf ein E/A-Objekt im Besitz des Treibers. Dieser Member kann auf eine DEVICE_OBJECT-, DRIVER_OBJECT- oder 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 nicht mehr als eine aktive Registrierung für dasselbe E/A-Objekt erstellen.

EventMask

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

Um sich zu registrieren, um Benachrichtigungen über Sitzungsereignisse zu erhalten, ruft ein Kernelmodustreiber die IoRegisterContainerNotification-Routine auf. Um die Sitzungsereignisse anzugeben, für die der Treiber Benachrichtigungen empfangen möchte, legt der Treiber das EventMask-Element dieser Struktur auf das bitweise OR einer oder mehrerer IO_SESSION_STATE_XXX-Konstanten fest.

Legen Sie diesen Member auf das bitweise OR einer oder mehrerer der folgenden IO_SESSION_STATE_XXX-Konstanten fest:

Wert Bedeutung
IO_SESSION_STATE_ALL_EVENTS
0xffffffff
Senden von Benachrichtigungen zu allen Sitzungsereignissen.
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 von der Sitzung abmeldet.
IO_SESSION_STATE_VALID_EVENT_MASK
0x0000003f
Senden Sie eine Benachrichtigung, wenn ein Sitzungsereignis 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 CallbackFunction-Parameter der IoRegisterContainerNotification-Routine). Der E/A-Manager versucht nicht, den Kontextzeiger zu überprüfen oder auf den Puffer zuzugreifen, auf den er verweist. Dieser Member kann NULL sein, wenn der Treiber keinen Kontextpuffer benötigt.

Hinweise

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

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

Um zu bestimmen, ob es sich bei einem Geräteobjekt um ein Sitzungsobjekt handelt, kann ein Treiber die IoGetDevicePropertyData-Routine aufrufen, um den DEVPKEY_Device_SessionId Eigenschaftenschlüssel im Eigenschaftenspeicher des Geräteobjekts abzufragen. Wenn die DEVPKEY_Device_SessionId-Eigenschaft vorhanden ist und der Wert der Eigenschaft auf einen Terminal services-Sitzungsbezeichner ungleich null festgelegt ist, ist das Geräteobjekt ein Geräteobjekt pro Sitzung. Weitere Informationen finden Sie unter DEVPKEY_Device_SessionId.

Anforderungen

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

Weitere Informationen

DEVICE_OBJECT

DEVPKEY_Device_SessionId

DRIVER_OBJECT

FILE_OBJECT

IoGetDevicePropertyData

IoRegisterContainerNotification