OSDN Git Service

Update registry management API, per issue [#2262].
[mingw/mingw-org-wsl.git] / w32api / include / wtsapi32.h
1 #ifndef _WTSAPI32_H
2 #define _WTSAPI32_H
3 #if __GNUC__ >= 3
4 #pragma GCC system_header
5 #endif
6
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10
11 #if (_WIN32_WINNT >= 0x0501)
12   // session notification message
13 #define WM_WTSSESSION_CHANGE            0x02B1
14
15 typedef enum _WTS_INFO_CLASS {
16   WTSInitialProgram       = 0,
17   WTSApplicationName      = 1,
18   WTSWorkingDirectory     = 2,
19   WTSOEMId                = 3,
20   WTSSessionId            = 4,
21   WTSUserName             = 5,
22   WTSWinStationName       = 6,
23   WTSDomainName           = 7,
24   WTSConnectState         = 8,
25   WTSClientBuildNumber    = 9,
26   WTSClientName           = 10,
27   WTSClientDirectory      = 11,
28   WTSClientProductId      = 12,
29   WTSClientHardwareId     = 13,
30   WTSClientAddress        = 14,
31   WTSClientDisplay        = 15,
32   WTSClientProtocolType   = 16,
33   WTSIdleTime             = 17,
34   WTSLogonTime            = 18,
35   WTSIncomingBytes        = 19,
36   WTSOutgoingBytes        = 20,
37   WTSIncomingFrames       = 21,
38   WTSOutgoingFrames       = 22,
39   WTSClientInfo           = 23,
40   WTSSessionInfo          = 24
41 } WTS_INFO_CLASS;
42
43 typedef enum _WTS_CONNECTSTATE_CLASS {
44   WTSActive,
45   WTSConnected,
46   WTSConnectQuery,
47   WTSShadow,
48   WTSDisconnected,
49   WTSIdle,
50   WTSListen,
51   WTSReset,
52   WTSDown,
53   WTSInit
54 } WTS_CONNECTSTATE_CLASS;
55
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
66
67   // WTSRegisterSessionNotifiction flags
68 #define NOTIFY_FOR_THIS_SESSION         0
69 #define NOTIFY_FOR_ALL_SESSIONS         1
70
71 BOOL WINAPI WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags);
72 BOOL WINAPI WTSUnRegisterSessionNotification(HWND hWnd);
73 BOOL WINAPI WTSQueryUserToken(ULONG SessionId, PHANDLE pToken);
74
75 #endif /* _WIN32_WINNT >= 0x0501 */
76
77 #if (_WIN32_WINNT >= 0x0500)
78
79 typedef struct _WTS_SESSION_INFOW {
80   DWORD SessionId;
81   LPWSTR pWinStationName;
82   WTS_CONNECTSTATE_CLASS State;
83 } WTS_SESSION_INFOW, *PWTS_SESSION_INFOW;
84
85 typedef struct _WTS_SESSION_INFOA {
86   DWORD SessionId;
87   LPSTR pWinStationName;
88   WTS_CONNECTSTATE_CLASS State;
89 } WTS_SESSION_INFOA, *PWTS_SESSION_INFOA;
90
91 #ifdef UNICODE
92 #define WTS_SESSION_INFO        WTS_SESSION_INFOW
93 #define PWTS_SESSION_INFO       PWTS_SESSION_INFOW
94 #else
95 #define WTS_SESSION_INFO        WTS_SESSION_INFOA
96 #define PWTS_SESSION_INFO       PWTS_SESSION_INFOA
97 #endif
98
99   // WTSWaitSystemEvent local server handle
100 #define WTS_CURRENT_SERVER_HANDLE 0
101 #define WTS_CURRENT_SESSION       ((DWORD)-1)
102
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
116
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,
125                                   PDWORD pCount);
126 BOOL WINAPI WTSEnumerateSessionsA(HANDLE hServer, DWORD Reserved, DWORD Version,
127                                   PWTS_SESSION_INFOA *ppSessionInfo,
128                                   PDWORD pCount);
129 void WINAPI WTSFreeMemory(PVOID pMemory);
130
131 #ifdef UNICODE
132 #define WTSEnumerateSessions WTSEnumerateSessionsW
133 #define WTSQuerySessionInformation WTSQuerySessionInformationW
134 #else
135 #define WTSEnumerateSessions WTSEnumerateSessionsA
136 #define WTSQuerySessionInformation WTSQuerySessionInformationA
137 #endif
138
139 BOOL WTSSendMessageA(
140   HANDLE hServer,
141   DWORD SessionId,
142   LPSTR pTitle,
143   DWORD TitleLength,
144   LPSTR pMessage,
145   DWORD MessageLength,
146   DWORD Style,
147   DWORD Timeout,
148   DWORD *pResponse,
149   BOOL bWait
150 );
151
152 BOOL WTSSendMessageW(
153   HANDLE hServer,
154   DWORD SessionId,
155   LPWSTR pTitle,
156   DWORD TitleLength,
157   LPWSTR pMessage,
158   DWORD MessageLength,
159   DWORD Style,
160   DWORD Timeout,
161   DWORD *pResponse,
162   BOOL bWait
163 );
164
165 #ifdef UNICODE
166 #define WTSSendMessage WTSSendMessageW
167 #else
168 #define WTSSendMessage WTSSendMessageA
169 #endif
170
171 BOOL WTSVirtualChannelClose(
172   HANDLE hChannelHandle
173 );
174
175 HANDLE WTSVirtualChannelOpen(
176   HANDLE hServer,
177   DWORD SessionId,
178   LPSTR pVirtualName
179 );
180
181 #if (_WIN32_WINNT >= 0x600)
182 HANDLE WTSVirtualChannelOpenEx(
183   DWORD SessionId,
184   LPSTR pVirtualName,
185   DWORD flags
186 );
187 #endif
188
189 BOOL WTSVirtualChannelPurgeInput(
190   HANDLE hChannelHandle
191 );
192
193 BOOL WTSVirtualChannelPurgeOutput(
194   HANDLE hChannelHandle
195 );
196
197 #if (_WIN32_WINNT >= 0x501)
198 BOOL WTSVirtualChannelQuery(
199   HANDLE hChannelHandle,
200   WTS_VIRTUAL_CLASS WtsVirtualClass,
201   PVOID *ppBuffer,
202   DWORD *pBytesReturned
203 );
204 #endif
205
206 BOOL WTSVirtualChannelRead(
207   HANDLE hChannelHandle,
208   ULONG TimeOut,
209   PCHAR Buffer,
210   ULONG BufferSize,
211   PULONG pBytesRead
212 );
213
214 BOOL WTSVirtualChannelWrite(
215   HANDLE hChannelHandle,
216   PCHAR Buffer,
217   ULONG Length,
218   PULONG pBytesWritten
219 );
220
221 #endif /* _WIN32_WINNT >= 0x0500 */
222
223 #ifdef __cplusplus
224 }
225 #endif
226
227 #endif /* _WTSAPI32_H */