#ifndef _NTMISC_H
typedef enum _IO_SESSION_STATE
{
IoSessionStateCreated = 1,
IoSessionStateInitialized = 2,
IoSessionStateConnected = 3,
IoSessionStateDisconnected = 4,
IoSessionStateDisconnectedLoggedOn = 5,
IoSessionStateLoggedOn = 6,
IoSessionStateLoggedOff = 7,
IoSessionStateTerminated = 8,
IoSessionStateMax
} IO_SESSION_STATE;
View code on GitHub// wdm.h
typedef enum _IO_SESSION_STATE {
IoSessionStateCreated,
IoSessionStateInitialized,
IoSessionStateConnected,
IoSessionStateDisconnected,
IoSessionStateDisconnectedLoggedOn,
IoSessionStateLoggedOn,
IoSessionStateLoggedOff,
IoSessionStateTerminated,
IoSessionStateMax
} IO_SESSION_STATE, *PIO_SESSION_STATE;
View the official Windows Driver Kit DDI referenceThis enumeration is documented in Windows Driver Kit.
The IO_SESSION_STATE enumeration contains constants that indicate the current state of a user session.
IoSessionStateCreatedThe session has been created.
IoSessionStateInitializedThe session has been initialized but has not yet been created.
IoSessionStateConnectedThe session is connected but the user has not yet logged on.
IoSessionStateDisconnectedThe session has been disconnected.
IoSessionStateDisconnectedLoggedOnThe session was disconnected while the user was logged on.
IoSessionStateLoggedOnThe user is logged on to the session.
IoSessionStateLoggedOffThe user has logged off of the session.
IoSessionStateTerminatedThe session has been terminated.
IoSessionStateMaxSpecifies the maximum value in this enumeration type.
When a driver calls the IoGetContainerInformation routine to obtain information about a user session (InformationClass = IoSessionStateInformation), the I/O manager writes an IO_SESSION_STATE_INFORMATION structure to the buffer pointed to by the routine's Buffer parameter. The I/O manager sets the SessionState member of this structure to an IO_SESSION_STATE enumeration constant (other than IoSessionStateMax).
The following table shows the session state transitions. For each state transition, the table shows the following:
A blank white box indicates that no transition can occur directly from the associated from state to the corresponding to state.
In the preceding table, the from and to states are represented by IO_SESSION_STATE enumeration constants, and the events are represented by IO_SESSION_EVENT enumeration constants. For example, if the session state is IoSessionStateConnected (abbreviated as "Connected" in the table), an IoSessionEventLogon event (abbreviated as "Logon") causes a transition to the IoSessionStateLoggedOn state (abbreviated as "LoggedOn"). The starting state for a new session is IoSessionStateInitialized (abbreviated as "Initialized").