106 lines
3.4 KiB
C
106 lines
3.4 KiB
C
|
|
||
|
/*******************************************************************************
|
||
|
*
|
||
|
* CTXDEF.H
|
||
|
*
|
||
|
* TerminalServer API support (typedefs).
|
||
|
*
|
||
|
* copyright notice: Microsoft Corporation 1998
|
||
|
*
|
||
|
*
|
||
|
*******************************************************************************/
|
||
|
|
||
|
|
||
|
/***********
|
||
|
* Defines
|
||
|
***********/
|
||
|
#define WINSTATIONNAME_LENGTH 32
|
||
|
|
||
|
/*
|
||
|
* Event flags for CtxWinStationWaitEvent
|
||
|
*/
|
||
|
#define WEVENT_NONE 0x00000000
|
||
|
#define WEVENT_CREATE 0x00000001 // new WinStation created
|
||
|
#define WEVENT_DELETE 0x00000002 // existing WinStation deleted
|
||
|
#define WEVENT_RENAME 0x00000004 // existing WinStation renamed
|
||
|
#define WEVENT_CONNECT 0x00000008 // WinStation connect to client
|
||
|
#define WEVENT_DISCONNECT 0x00000010 // WinStation logged on without client
|
||
|
#define WEVENT_LOGON 0x00000020 // user logon to existing WinStation
|
||
|
#define WEVENT_LOGOFF 0x00000040 // user logoff from existing WinStation
|
||
|
#define WEVENT_STATECHANGE 0x00000080 // WinStation state change
|
||
|
#define WEVENT_LICENSE 0x00000100 // License state change
|
||
|
#define WEVENT_ALL 0x7fffffff // wait for all event types
|
||
|
#define WEVENT_FLUSH 0x80000000 // unblock all waiters
|
||
|
|
||
|
|
||
|
/************
|
||
|
* Typedefs
|
||
|
************/
|
||
|
typedef WCHAR WINSTATIONNAMEW[ WINSTATIONNAME_LENGTH + 1 ];
|
||
|
typedef WCHAR * PWINSTATIONNAMEW;
|
||
|
|
||
|
typedef CHAR WINSTATIONNAMEA[ WINSTATIONNAME_LENGTH + 1 ];
|
||
|
typedef CHAR * PWINSTATIONNAMEA;
|
||
|
|
||
|
#ifdef UNICODE
|
||
|
#define WINSTATIONNAME WINSTATIONNAMEW
|
||
|
#define PWINSTATIONNAME PWINSTATIONNAMEW
|
||
|
#else
|
||
|
#define WINSTATIONNAME WINSTATIONNAMEA
|
||
|
#define PWINSTATIONNAME PWINSTATIONNAMEA
|
||
|
#endif /* UNICODE */
|
||
|
|
||
|
/*
|
||
|
* WinStation connect states
|
||
|
*/
|
||
|
typedef enum _WINSTATIONSTATECLASS {
|
||
|
State_Active, // user logged on to WinStation
|
||
|
State_Connected, // WinStation connected to client
|
||
|
State_ConnectQuery, // in the process of connecting to client
|
||
|
State_Shadow, // shadowing another WinStation
|
||
|
State_Disconnected, // WinStation logged on without client
|
||
|
State_Idle, // waiting for client to connect
|
||
|
State_Listen, // WinStation is listening for connection
|
||
|
State_Reset, // WinStation is being reset
|
||
|
State_Down, // WinStation is down due to error
|
||
|
State_Init, // WinStation in initialization
|
||
|
} WINSTATIONSTATECLASS;
|
||
|
|
||
|
typedef struct _SESSIONIDW {
|
||
|
union {
|
||
|
ULONG SessionId;
|
||
|
ULONG LogonId; // internal use only
|
||
|
};
|
||
|
WINSTATIONNAMEW WinStationName;
|
||
|
WINSTATIONSTATECLASS State;
|
||
|
} SESSIONIDW, * PSESSIONIDW;
|
||
|
|
||
|
typedef struct _SESSIONIDA {
|
||
|
union {
|
||
|
ULONG SessionId;
|
||
|
ULONG LogonId; // internal use only
|
||
|
};
|
||
|
WINSTATIONNAMEA WinStationName;
|
||
|
WINSTATIONSTATECLASS State;
|
||
|
} SESSIONIDA, * PSESSIONIDA;
|
||
|
|
||
|
#ifdef UNICODE
|
||
|
#define SESSIONID SESSIONIDW
|
||
|
#define PSESSIONID PSESSIONIDW
|
||
|
#else
|
||
|
#define SESSIONID SESSIONIDA
|
||
|
#define PSESSIONID PSESSIONIDA
|
||
|
#endif /* UNICODE */
|
||
|
|
||
|
/*
|
||
|
* NtUserCtxConnectState() values
|
||
|
* Used by routines that can't use WinStation API calls
|
||
|
* like DLL init routines.
|
||
|
*/
|
||
|
#define CTX_W32_CONNECT_STATE_CONSOLE 0
|
||
|
#define CTX_W32_CONNECT_STATE_IDLE 1
|
||
|
#define CTX_W32_CONNECT_STATE_EXIT_IN_PROGRESS 2
|
||
|
#define CTX_W32_CONNECT_STATE_CONNECTED 3
|
||
|
#define CTX_W32_CONNECT_STATE_DISCONNECTED 4
|
||
|
|