4 #pragma GCC system_header
11 #if (_WIN32_WINNT >= 0x0501)
12 // session notification message
13 #define WM_WTSSESSION_CHANGE 0x02B1
15 typedef enum _WTS_INFO_CLASS {
16 WTSInitialProgram = 0,
17 WTSApplicationName = 1,
18 WTSWorkingDirectory = 2,
22 WTSWinStationName = 6,
25 WTSClientBuildNumber = 9,
27 WTSClientDirectory = 11,
28 WTSClientProductId = 12,
29 WTSClientHardwareId = 13,
30 WTSClientAddress = 14,
31 WTSClientDisplay = 15,
32 WTSClientProtocolType = 16,
35 WTSIncomingBytes = 19,
36 WTSOutgoingBytes = 20,
37 WTSIncomingFrames = 21,
38 WTSOutgoingFrames = 22,
43 typedef enum _WTS_CONNECTSTATE_CLASS {
54 } WTS_CONNECTSTATE_CLASS;
56 // session notification message flags
57 #define WTS_CONSOLE_CONNECT 0x1
58 #define WTS_CONSOLE_DISCONNECT 0x2
59 #define WTS_REMOTE_CONNECT 0x3
60 #define WTS_REMOTE_DISCONNECT 0x4
61 #define WTS_SESSION_LOGON 0x5
62 #define WTS_SESSION_LOGOFF 0x6
63 #define WTS_SESSION_LOCK 0x7
64 #define WTS_SESSION_UNLOCK 0x8
65 #define WTS_SESSION_REMOTE_CONTROL 0x9
67 // WTSRegisterSessionNotifiction flags
68 #define NOTIFY_FOR_THIS_SESSION 0
69 #define NOTIFY_FOR_ALL_SESSIONS 1
71 BOOL WINAPI WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags);
72 BOOL WINAPI WTSUnRegisterSessionNotification(HWND hWnd);
73 BOOL WINAPI WTSQueryUserToken(ULONG SessionId, PHANDLE pToken);
75 #endif /* _WIN32_WINNT >= 0x0501 */
77 #if (_WIN32_WINNT >= 0x0500)
79 typedef struct _WTS_SESSION_INFOW {
81 LPWSTR pWinStationName;
82 WTS_CONNECTSTATE_CLASS State;
83 } WTS_SESSION_INFOW, *PWTS_SESSION_INFOW;
85 typedef struct _WTS_SESSION_INFOA {
87 LPSTR pWinStationName;
88 WTS_CONNECTSTATE_CLASS State;
89 } WTS_SESSION_INFOA, *PWTS_SESSION_INFOA;
92 #define WTS_SESSION_INFO WTS_SESSION_INFOW
93 #define PWTS_SESSION_INFO PWTS_SESSION_INFOW
95 #define WTS_SESSION_INFO WTS_SESSION_INFOA
96 #define PWTS_SESSION_INFO PWTS_SESSION_INFOA
99 // WTSWaitSystemEvent local server handle
100 #define WTS_CURRENT_SERVER_HANDLE 0
101 #define WTS_CURRENT_SESSION ((DWORD)-1)
103 // WTSWaitSystemEvent flags
104 #define WTS_EVENT_NONE 0x00000000
105 #define WTS_EVENT_CREATE 0x00000001
106 #define WTS_EVENT_DELETE 0x00000002
107 #define WTS_EVENT_RENAME 0x00000004
108 #define WTS_EVENT_CONNECT 0x00000008
109 #define WTS_EVENT_DISCONNECT 0x00000010
110 #define WTS_EVENT_LOGON 0x00000020
111 #define WTS_EVENT_LOGOFF 0x00000040
112 #define WTS_EVENT_STATECHANGE 0x00000080
113 #define WTS_EVENT_LICENSE 0x00000100
114 #define WTS_EVENT_ALL 0x7FFFFFFF
115 #define WTS_EVENT_FLUSH 0x80000000
117 BOOL WINAPI WTSQuerySessionInformationA(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass,
118 LPSTR *ppBuffer, DWORD *pBytesReturned);
119 BOOL WINAPI WTSQuerySessionInformationW(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass,
120 LPTSTR *ppBuffer, DWORD *pBytesReturned);
121 BOOL WINAPI WTSWaitSystemEvent(HANDLE hServer, DWORD EventMask, DWORD* pEventFlags);
122 BOOL WINAPI WTSDisconnectSession(HANDLE hServer, DWORD SessionId, BOOL bWait);
123 BOOL WINAPI WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version,
124 PWTS_SESSION_INFOW *ppSessionInfo,
126 BOOL WINAPI WTSEnumerateSessionsA(HANDLE hServer, DWORD Reserved, DWORD Version,
127 PWTS_SESSION_INFOA *ppSessionInfo,
129 void WINAPI WTSFreeMemory(PVOID pMemory);
132 #define WTSEnumerateSessions WTSEnumerateSessionsW
133 #define WTSQuerySessionInformation WTSQuerySessionInformationW
135 #define WTSEnumerateSessions WTSEnumerateSessionsA
136 #define WTSQuerySessionInformation WTSQuerySessionInformationA
139 BOOL WTSSendMessageA(
152 BOOL WTSSendMessageW(
166 #define WTSSendMessage WTSSendMessageW
168 #define WTSSendMessage WTSSendMessageA
171 BOOL WTSVirtualChannelClose(
172 HANDLE hChannelHandle
175 HANDLE WTSVirtualChannelOpen(
181 #if (_WIN32_WINNT >= 0x600)
182 HANDLE WTSVirtualChannelOpenEx(
189 BOOL WTSVirtualChannelPurgeInput(
190 HANDLE hChannelHandle
193 BOOL WTSVirtualChannelPurgeOutput(
194 HANDLE hChannelHandle
197 #if (_WIN32_WINNT >= 0x501)
198 BOOL WTSVirtualChannelQuery(
199 HANDLE hChannelHandle,
200 WTS_VIRTUAL_CLASS WtsVirtualClass,
202 DWORD *pBytesReturned
206 BOOL WTSVirtualChannelRead(
207 HANDLE hChannelHandle,
214 BOOL WTSVirtualChannelWrite(
215 HANDLE hChannelHandle,
221 #endif /* _WIN32_WINNT >= 0x0500 */
227 #endif /* _WTSAPI32_H */