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