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