wtsapi32.h (22876B) - Raw
1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _INC_WTSAPI 7 #define _INC_WTSAPI 8 9 #include <_mingw_unicode.h> 10 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 #define WTS_CURRENT_SERVER ((HANDLE)NULL) 16 #define WTS_CURRENT_SERVER_HANDLE ((HANDLE)NULL) 17 #define WTS_CURRENT_SERVER_NAME (NULL) 18 19 #define WTS_CURRENT_SESSION ((DWORD)-1) 20 #define WTS_ANY_SESSION ((DWORD)-2) 21 22 #ifndef IDTIMEOUT 23 #define IDTIMEOUT 32000 24 #endif 25 #ifndef IDASYNC 26 #define IDASYNC 32001 27 #endif 28 29 #define USERNAME_LENGTH 20 30 #define CLIENTNAME_LENGTH 20 31 #define CLIENTADDRESS_LENGTH 30 32 #define WINSTATIONNAME_LENGTH 32 33 #define DOMAIN_LENGTH 17 34 35 #define WTS_WSD_LOGOFF 0x1 36 #define WTS_WSD_SHUTDOWN 0x2 37 #define WTS_WSD_REBOOT 0x4 38 #define WTS_WSD_POWEROFF 0x8 39 40 #define WTS_WSD_FASTREBOOT 0x10 41 42 #define MAX_ELAPSED_TIME_LENGTH 15 43 #define MAX_DATE_TIME_LENGTH 56 44 #define WINSTATIONNAME_LENGTH 32 45 #define DOMAIN_LENGTH 17 46 47 #define WTS_DRIVE_LENGTH 3 48 #define WTS_LISTENER_NAME_LENGTH 32 49 #define WTS_COMMENT_LENGTH 60 50 51 #define WTS_LISTENER_CREATE 0x00000001 52 #define WTS_LISTENER_UPDATE 0x00000010 53 54 #define WTS_SECURITY_QUERY_INFORMATION 0x00000001 55 #define WTS_SECURITY_SET_INFORMATION 0x00000002 56 #define WTS_SECURITY_RESET 0x00000004 57 #define WTS_SECURITY_VIRTUAL_CHANNELS 0x00000008 58 #define WTS_SECURITY_REMOTE_CONTROL 0x00000010 59 #define WTS_SECURITY_LOGON 0x00000020 60 #define WTS_SECURITY_LOGOFF 0x00000040 61 #define WTS_SECURITY_MESSAGE 0x00000080 62 #define WTS_SECURITY_CONNECT 0x00000100 63 #define WTS_SECURITY_DISCONNECT 0x00000200 64 65 #define WTS_SECURITY_GUEST_ACCESS (WTS_SECURITY_LOGON) 66 67 #define WTS_SECURITY_CURRENT_GUEST_ACCESS (WTS_SECURITY_VIRTUAL_CHANNELS | WTS_SECURITY_LOGOFF) 68 69 #define WTS_SECURITY_USER_ACCESS (WTS_SECURITY_CURRENT_GUEST_ACCESS | WTS_SECURITY_QUERY_INFORMATION | WTS_SECURITY_CONNECT) 70 71 #define WTS_SECURITY_CURRENT_USER_ACCESS (WTS_SECURITY_SET_INFORMATION | WTS_SECURITY_RESET | WTS_SECURITY_VIRTUAL_CHANNELS | WTS_SECURITY_LOGOFF | WTS_SECURITY_DISCONNECT) 72 73 #define WTS_SECURITY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | WTS_SECURITY_QUERY_INFORMATION | WTS_SECURITY_SET_INFORMATION | WTS_SECURITY_RESET | WTS_SECURITY_VIRTUAL_CHANNELS | WTS_SECURITY_REMOTE_CONTROL | WTS_SECURITY_LOGON | WTS_SECURITY_MESSAGE | WTS_SECURITY_CONNECT | WTS_SECURITY_DISCONNECT) 74 75 typedef enum _WTS_CONNECTSTATE_CLASS { 76 WTSActive,WTSConnected,WTSConnectQuery,WTSShadow,WTSDisconnected,WTSIdle,WTSListen,WTSReset,WTSDown,WTSInit 77 } WTS_CONNECTSTATE_CLASS; 78 79 typedef struct _WTS_SERVER_INFOW { 80 LPWSTR pServerName; 81 } WTS_SERVER_INFOW,*PWTS_SERVER_INFOW; 82 83 typedef struct _WTS_SERVER_INFOA { 84 LPSTR pServerName; 85 } WTS_SERVER_INFOA,*PWTS_SERVER_INFOA; 86 87 #define WTS_SERVER_INFO __MINGW_NAME_AW(WTS_SERVER_INFO) 88 #define PWTS_SERVER_INFO __MINGW_NAME_AW(PWTS_SERVER_INFO) 89 90 typedef struct _WTS_SESSION_INFOW { 91 DWORD SessionId; 92 LPWSTR pWinStationName; 93 WTS_CONNECTSTATE_CLASS State; 94 } WTS_SESSION_INFOW,*PWTS_SESSION_INFOW; 95 96 typedef struct _WTS_SESSION_INFOA { 97 DWORD SessionId; 98 LPSTR pWinStationName; 99 WTS_CONNECTSTATE_CLASS State; 100 } WTS_SESSION_INFOA,*PWTS_SESSION_INFOA; 101 102 #define WTS_SESSION_INFO __MINGW_NAME_AW(WTS_SESSION_INFO) 103 #define PWTS_SESSION_INFO __MINGW_NAME_AW(PWTS_SESSION_INFO) 104 105 typedef struct _WTS_PROCESS_INFOW { 106 DWORD SessionId; 107 DWORD ProcessId; 108 LPWSTR pProcessName; 109 PSID pUserSid; 110 } WTS_PROCESS_INFOW,*PWTS_PROCESS_INFOW; 111 112 typedef struct _WTS_PROCESS_INFOA { 113 DWORD SessionId; 114 DWORD ProcessId; 115 LPSTR pProcessName; 116 PSID pUserSid; 117 } WTS_PROCESS_INFOA,*PWTS_PROCESS_INFOA; 118 119 #define WTS_PROCESS_INFO __MINGW_NAME_AW(WTS_PROCESS_INFO) 120 #define PWTS_PROCESS_INFO __MINGW_NAME_AW(PWTS_PROCESS_INFO) 121 122 #define WTS_PROTOCOL_TYPE_CONSOLE 0 123 #define WTS_PROTOCOL_TYPE_ICA 1 124 #define WTS_PROTOCOL_TYPE_RDP 2 125 126 typedef enum _WTS_INFO_CLASS { 127 WTSInitialProgram = 0, 128 WTSApplicationName = 1, 129 WTSWorkingDirectory = 2, 130 WTSOEMId = 3, 131 WTSSessionId = 4, 132 WTSUserName = 5, 133 WTSWinStationName = 6, 134 WTSDomainName = 7, 135 WTSConnectState = 8, 136 WTSClientBuildNumber = 9, 137 WTSClientName = 10, 138 WTSClientDirectory = 11, 139 WTSClientProductId = 12, 140 WTSClientHardwareId = 13, 141 WTSClientAddress = 14, 142 WTSClientDisplay = 15, 143 WTSClientProtocolType = 16, 144 WTSIdleTime = 17, 145 WTSLogonTime = 18, 146 WTSIncomingBytes = 19, 147 WTSOutgoingBytes = 20, 148 WTSIncomingFrames = 21, 149 WTSOutgoingFrames = 22, 150 WTSClientInfo = 23, 151 WTSSessionInfo = 24, 152 WTSSessionInfoEx = 25, 153 WTSConfigInfo = 26, 154 WTSValidationInfo = 27, 155 WTSSessionAddressV4 = 28, 156 WTSIsRemoteSession = 29 157 } WTS_INFO_CLASS; 158 159 typedef struct _WTSCONFIGINFOW { 160 ULONG version; 161 ULONG fConnectClientDrivesAtLogon; 162 ULONG fConnectPrinterAtLogon; 163 ULONG fDisablePrinterRedirection; 164 ULONG fDisableDefaultMainClientPrinter; 165 ULONG ShadowSettings; 166 WCHAR LogonUserName[USERNAME_LENGTH + 1 ]; 167 WCHAR LogonDomain[DOMAIN_LENGTH + 1 ]; 168 WCHAR WorkDirectory[MAX_PATH + 1 ]; 169 WCHAR InitialProgram[MAX_PATH + 1 ]; 170 WCHAR ApplicationName[MAX_PATH + 1 ]; 171 } WTSCONFIGINFOW, *PWTSCONFIGINFOW; 172 173 typedef struct _WTSCONFIGINFOA { 174 ULONG version; 175 ULONG fConnectClientDrivesAtLogon; 176 ULONG fConnectPrinterAtLogon; 177 ULONG fDisablePrinterRedirection; 178 ULONG fDisableDefaultMainClientPrinter; 179 ULONG ShadowSettings; 180 CHAR LogonUserName[USERNAME_LENGTH + 1 ]; 181 CHAR LogonDomain[DOMAIN_LENGTH + 1 ]; 182 CHAR WorkDirectory[MAX_PATH + 1 ]; 183 CHAR InitialProgram[MAX_PATH + 1 ]; 184 CHAR ApplicationName[MAX_PATH + 1 ]; 185 } WTSCONFIGINFOA, *PWTSCONFIGINFOA; 186 187 __MINGW_TYPEDEF_AW(WTSCONFIGINFO) 188 __MINGW_TYPEDEF_AW(PWTSCONFIGINFO) 189 190 typedef struct _WTS_CLIENT_ADDRESS { 191 DWORD AddressFamily; 192 BYTE Address[20]; 193 } WTS_CLIENT_ADDRESS,*PWTS_CLIENT_ADDRESS; 194 195 typedef struct _WTS_CLIENT_DISPLAY { 196 DWORD HorizontalResolution; 197 DWORD VerticalResolution; 198 DWORD ColorDepth; 199 } WTS_CLIENT_DISPLAY,*PWTS_CLIENT_DISPLAY; 200 201 typedef enum _WTS_CONFIG_CLASS { 202 WTSUserConfigInitialProgram,WTSUserConfigWorkingDirectory,WTSUserConfigfInheritInitialProgram,WTSUserConfigfAllowLogonTerminalServer, 203 WTSUserConfigTimeoutSettingsConnections,WTSUserConfigTimeoutSettingsDisconnections,WTSUserConfigTimeoutSettingsIdle, 204 WTSUserConfigfDeviceClientDrives,WTSUserConfigfDeviceClientPrinters,WTSUserConfigfDeviceClientDefaultPrinter,WTSUserConfigBrokenTimeoutSettings, 205 WTSUserConfigReconnectSettings,WTSUserConfigModemCallbackSettings,WTSUserConfigModemCallbackPhoneNumber,WTSUserConfigShadowingSettings, 206 WTSUserConfigTerminalServerProfilePath,WTSUserConfigTerminalServerHomeDir,WTSUserConfigTerminalServerHomeDirDrive, 207 WTSUserConfigfTerminalServerRemoteHomeDir,WTSUserConfigUser 208 } WTS_CONFIG_CLASS; 209 210 typedef enum _WTS_CONFIG_SOURCE { 211 WTSUserConfigSourceSAM 212 } WTS_CONFIG_SOURCE; 213 214 typedef struct _WTSUSERCONFIGA { 215 DWORD Source; 216 DWORD InheritInitialProgram; 217 DWORD AllowLogonTerminalServer; 218 DWORD TimeoutSettingsConnections; 219 DWORD TimeoutSettingsDisconnections; 220 DWORD TimeoutSettingsIdle; 221 DWORD DeviceClientDrives; 222 DWORD DeviceClientPrinters; 223 DWORD ClientDefaultPrinter; 224 DWORD BrokenTimeoutSettings; 225 DWORD ReconnectSettings; 226 DWORD ShadowingSettings; 227 DWORD TerminalServerRemoteHomeDir; 228 CHAR InitialProgram[ MAX_PATH + 1 ]; 229 CHAR WorkDirectory[ MAX_PATH + 1 ]; 230 CHAR TerminalServerProfilePath[ MAX_PATH + 1 ]; 231 CHAR TerminalServerHomeDir[ MAX_PATH + 1 ]; 232 CHAR TerminalServerHomeDirDrive[ WTS_DRIVE_LENGTH + 1 ]; 233 } WTSUSERCONFIGA, *PWTSUSERCONFIGA; 234 235 typedef struct _WTSUSERCONFIGW { 236 DWORD Source; 237 DWORD InheritInitialProgram; 238 DWORD AllowLogonTerminalServer; 239 DWORD TimeoutSettingsConnections; 240 DWORD TimeoutSettingsDisconnections; 241 DWORD TimeoutSettingsIdle; 242 DWORD DeviceClientDrives; 243 DWORD DeviceClientPrinters; 244 DWORD ClientDefaultPrinter; 245 DWORD BrokenTimeoutSettings; 246 DWORD ReconnectSettings; 247 DWORD ShadowingSettings; 248 DWORD TerminalServerRemoteHomeDir; 249 WCHAR InitialProgram[ MAX_PATH + 1 ]; 250 WCHAR WorkDirectory[ MAX_PATH + 1 ]; 251 WCHAR TerminalServerProfilePath[ MAX_PATH + 1 ]; 252 WCHAR TerminalServerHomeDir[ MAX_PATH + 1 ]; 253 WCHAR TerminalServerHomeDirDrive[ WTS_DRIVE_LENGTH + 1 ]; 254 } WTSUSERCONFIGW, *PWTSUSERCONFIGW; 255 256 __MINGW_TYPEDEF_AW(WTSUSERCONFIG) 257 __MINGW_TYPEDEF_AW(PWTSUSERCONFIG) 258 259 #define WTS_EVENT_NONE 0x0 260 #define WTS_EVENT_CREATE 0x1 261 #define WTS_EVENT_DELETE 0x2 262 #define WTS_EVENT_RENAME 0x4 263 #define WTS_EVENT_CONNECT 0x8 264 #define WTS_EVENT_DISCONNECT 0x10 265 #define WTS_EVENT_LOGON 0x20 266 #define WTS_EVENT_LOGOFF 0x40 267 #define WTS_EVENT_STATECHANGE 0x80 268 #define WTS_EVENT_LICENSE 0x100 269 #define WTS_EVENT_ALL 0x7fffffff 270 #define WTS_EVENT_FLUSH 0x80000000 271 272 #define REMOTECONTROL_KBDSHIFT_HOTKEY 0x1 273 #define REMOTECONTROL_KBDCTRL_HOTKEY 0x2 274 #define REMOTECONTROL_KBDALT_HOTKEY 0x4 275 276 typedef enum _WTS_VIRTUAL_CLASS { 277 WTSVirtualClientData,WTSVirtualFileHandle 278 } WTS_VIRTUAL_CLASS; 279 280 typedef struct _WTS_SESSION_ADDRESS { 281 DWORD AddressFamily; 282 BYTE Address[20]; 283 } WTS_SESSION_ADDRESS, *PWTS_SESSION_ADDRESS; 284 285 #define WTSEnumerateServers __MINGW_NAME_AW(WTSEnumerateServers) 286 #define WTSOpenServer __MINGW_NAME_AW(WTSOpenServer) 287 #define WTSOpenServerEx __MINGW_NAME_AW(WTSOpenServerEx) 288 #define WTSEnumerateSessions __MINGW_NAME_AW(WTSEnumerateSessions) 289 #define WTSEnumerateProcesses __MINGW_NAME_AW(WTSEnumerateProcesses) 290 #define WTSQuerySessionInformation __MINGW_NAME_AW(WTSQuerySessionInformation) 291 #define WTSQueryUserConfig __MINGW_NAME_AW(WTSQueryUserConfig) 292 #define WTSSetUserConfig __MINGW_NAME_AW(WTSSetUserConfig) 293 #define WTSSendMessage __MINGW_NAME_AW(WTSSendMessage) 294 295 WINBOOL WINAPI WTSEnumerateServersW(LPWSTR pDomainName,DWORD Reserved,DWORD Version,PWTS_SERVER_INFOW *ppServerInfo,DWORD *pCount); 296 WINBOOL WINAPI WTSEnumerateServersA(LPSTR pDomainName,DWORD Reserved,DWORD Version,PWTS_SERVER_INFOA *ppServerInfo,DWORD *pCount); 297 HANDLE WINAPI WTSOpenServerW(LPWSTR pServerName); 298 HANDLE WINAPI WTSOpenServerA(LPSTR pServerName); 299 HANDLE WINAPI WTSOpenServerExW(LPWSTR pServerName); 300 HANDLE WINAPI WTSOpenServerExA(LPSTR pServerName); 301 VOID WINAPI WTSCloseServer(HANDLE hServer); 302 WINBOOL WINAPI WTSEnumerateSessionsW(HANDLE hServer,DWORD Reserved,DWORD Version,PWTS_SESSION_INFOW *ppSessionInfo,DWORD *pCount); 303 WINBOOL WINAPI WTSEnumerateSessionsA(HANDLE hServer,DWORD Reserved,DWORD Version,PWTS_SESSION_INFOA *ppSessionInfo,DWORD *pCount); 304 WINBOOL WINAPI WTSEnumerateProcessesW(HANDLE hServer,DWORD Reserved,DWORD Version,PWTS_PROCESS_INFOW *ppProcessInfo,DWORD *pCount); 305 WINBOOL WINAPI WTSEnumerateProcessesA(HANDLE hServer,DWORD Reserved,DWORD Version,PWTS_PROCESS_INFOA *ppProcessInfo,DWORD *pCount); 306 WINBOOL WINAPI WTSTerminateProcess(HANDLE hServer,DWORD ProcessId,DWORD ExitCode); 307 WINBOOL WINAPI WTSQuerySessionInformationW(HANDLE hServer,DWORD SessionId,WTS_INFO_CLASS WTSInfoClass,LPWSTR *ppBuffer,DWORD *pBytesReturned); 308 WINBOOL WINAPI WTSQuerySessionInformationA(HANDLE hServer,DWORD SessionId,WTS_INFO_CLASS WTSInfoClass,LPSTR *ppBuffer,DWORD *pBytesReturned); 309 WINBOOL WINAPI WTSQueryUserConfigW(LPWSTR pServerName,LPWSTR pUserName,WTS_CONFIG_CLASS WTSConfigClass,LPWSTR *ppBuffer,DWORD *pBytesReturned); 310 WINBOOL WINAPI WTSQueryUserConfigA(LPSTR pServerName,LPSTR pUserName,WTS_CONFIG_CLASS WTSConfigClass,LPSTR *ppBuffer,DWORD *pBytesReturned); 311 WINBOOL WINAPI WTSSetUserConfigW(LPWSTR pServerName,LPWSTR pUserName,WTS_CONFIG_CLASS WTSConfigClass,LPWSTR pBuffer,DWORD DataLength); 312 WINBOOL WINAPI WTSSetUserConfigA(LPSTR pServerName,LPSTR pUserName,WTS_CONFIG_CLASS WTSConfigClass,LPSTR pBuffer,DWORD DataLength); 313 WINBOOL WINAPI WTSSendMessageW(HANDLE hServer,DWORD SessionId,LPWSTR pTitle,DWORD TitleLength,LPWSTR pMessage,DWORD MessageLength,DWORD Style,DWORD Timeout,DWORD *pResponse,WINBOOL bWait); 314 WINBOOL WINAPI WTSSendMessageA(HANDLE hServer,DWORD SessionId,LPSTR pTitle,DWORD TitleLength,LPSTR pMessage,DWORD MessageLength,DWORD Style,DWORD Timeout,DWORD *pResponse,WINBOOL bWait); 315 WINBOOL WINAPI WTSDisconnectSession(HANDLE hServer,DWORD SessionId,WINBOOL bWait); 316 WINBOOL WINAPI WTSLogoffSession(HANDLE hServer,DWORD SessionId,WINBOOL bWait); 317 WINBOOL WINAPI WTSShutdownSystem(HANDLE hServer,DWORD ShutdownFlag); 318 WINBOOL WINAPI WTSWaitSystemEvent(HANDLE hServer,DWORD EventMask,DWORD *pEventFlags); 319 HANDLE WINAPI WTSVirtualChannelOpen(HANDLE hServer,DWORD SessionId,LPSTR pVirtualName); 320 WINBOOL WINAPI WTSVirtualChannelClose(HANDLE hChannelHandle); 321 WINBOOL WINAPI WTSVirtualChannelRead(HANDLE hChannelHandle,ULONG TimeOut,PCHAR Buffer,ULONG BufferSize,PULONG pBytesRead); 322 WINBOOL WINAPI WTSVirtualChannelWrite(HANDLE hChannelHandle,PCHAR Buffer,ULONG Length,PULONG pBytesWritten); 323 WINBOOL WINAPI WTSVirtualChannelPurgeInput(HANDLE hChannelHandle); 324 WINBOOL WINAPI WTSVirtualChannelPurgeOutput(HANDLE hChannelHandle); 325 WINBOOL WINAPI WTSVirtualChannelQuery(HANDLE hChannelHandle,WTS_VIRTUAL_CLASS,PVOID *ppBuffer,DWORD *pBytesReturned); 326 VOID WINAPI WTSFreeMemory(PVOID pMemory); 327 328 #define NOTIFY_FOR_ALL_SESSIONS 1 329 #define NOTIFY_FOR_THIS_SESSION 0 330 331 WINBOOL WINAPI WTSRegisterSessionNotification(HWND hWnd,DWORD dwFlags); 332 WINBOOL WINAPI WTSUnRegisterSessionNotification(HWND hWnd); 333 WINBOOL WINAPI WTSQueryUserToken(ULONG SessionId,PHANDLE phToken); 334 335 #if (_WIN32_WINNT >= 0x0600) 336 typedef struct _WTSCLIENTW { 337 WCHAR ClientName[CLIENTNAME_LENGTH + 1]; 338 WCHAR Domain[DOMAIN_LENGTH + 1 ]; 339 WCHAR UserName[USERNAME_LENGTH + 1]; 340 WCHAR WorkDirectory[MAX_PATH + 1]; 341 WCHAR InitialProgram[MAX_PATH + 1]; 342 BYTE EncryptionLevel; 343 ULONG ClientAddressFamily; 344 USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; 345 USHORT HRes; 346 USHORT VRes; 347 USHORT ColorDepth; 348 WCHAR ClientDirectory[MAX_PATH + 1]; 349 ULONG ClientBuildNumber; 350 ULONG ClientHardwareId; 351 USHORT ClientProductId; 352 USHORT OutBufCountHost; 353 USHORT OutBufCountClient; 354 USHORT OutBufLength; 355 WCHAR DeviceId[MAX_PATH + 1]; 356 } WTSCLIENTW, *PWTSCLIENTW; 357 358 typedef struct _WTSCLIENTA { 359 CHAR ClientName[CLIENTNAME_LENGTH + 1]; 360 CHAR Domain[DOMAIN_LENGTH + 1 ]; 361 CHAR UserName[USERNAME_LENGTH + 1]; 362 CHAR WorkDirectory[MAX_PATH + 1]; 363 CHAR InitialProgram[MAX_PATH + 1]; 364 BYTE EncryptionLevel; 365 ULONG ClientAddressFamily; 366 USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; 367 USHORT HRes; 368 USHORT VRes; 369 USHORT ColorDepth; 370 CHAR ClientDirectory[MAX_PATH + 1]; 371 ULONG ClientBuildNumber; 372 ULONG ClientHardwareId; 373 USHORT ClientProductId; 374 USHORT OutBufCountHost; 375 USHORT OutBufCountClient; 376 USHORT OutBufLength; 377 CHAR DeviceId[MAX_PATH + 1]; 378 } WTSCLIENTA, *PWTSCLIENTA; 379 380 __MINGW_TYPEDEF_AW(WTSCLIENT) 381 __MINGW_TYPEDEF_AW(PWTSCLIENT) 382 383 #define PRODUCTINFO_COMPANYNAME_LENGTH 256 384 #define PRODUCTINFO_PRODUCTID_LENGTH 4 385 386 typedef struct _WTS_PRODUCT_INFOA { 387 CHAR CompanyName[PRODUCTINFO_COMPANYNAME_LENGTH]; 388 CHAR ProductID[PRODUCTINFO_PRODUCTID_LENGTH]; 389 } PRODUCT_INFOA; 390 391 typedef struct _WTS_PRODUCT_INFOW { 392 WCHAR CompanyName[PRODUCTINFO_COMPANYNAME_LENGTH]; 393 WCHAR ProductID[PRODUCTINFO_PRODUCTID_LENGTH]; 394 } PRODUCT_INFOW; 395 396 __MINGW_TYPEDEF_AW(PRODUCT_INFO) 397 398 #define VALIDATIONINFORMATION_LICENSE_LENGTH 16384 399 #define VALIDATIONINFORMATION_HARDWAREID_LENGTH 20 400 401 typedef struct _WTS_VALIDATION_INFORMATIONA { 402 PRODUCT_INFOA ProductInfo; 403 BYTE License[VALIDATIONINFORMATION_LICENSE_LENGTH]; 404 DWORD LicenseLength; 405 BYTE HardwareID[VALIDATIONINFORMATION_HARDWAREID_LENGTH]; 406 DWORD HardwareIDLength; 407 } WTS_VALIDATION_INFORMATIONA, *PWTS_VALIDATION_INFORMATIONA; 408 409 typedef struct _WTS_VALIDATION_INFORMATIONW { 410 PRODUCT_INFOW ProductInfo; 411 BYTE License[VALIDATIONINFORMATION_LICENSE_LENGTH]; 412 DWORD LicenseLength; 413 BYTE HardwareID[VALIDATIONINFORMATION_HARDWAREID_LENGTH]; 414 DWORD HardwareIDLength; 415 } WTS_VALIDATION_INFORMATIONW, *PWTS_VALIDATION_INFORMATIONW; 416 417 __MINGW_TYPEDEF_AW(WTS_VALIDATION_INFORMATION) 418 __MINGW_TYPEDEF_AW(PWTS_VALIDATION_INFORMATION) 419 420 typedef struct _WTSINFOW { 421 WTS_CONNECTSTATE_CLASS State; 422 DWORD SessionId; 423 DWORD IncomingBytes; 424 DWORD OutgoingBytes; 425 DWORD IncomingFrames; 426 DWORD OutgoingFrames; 427 DWORD IncomingCompressedBytes; 428 DWORD OutgoingCompressedBytes; 429 WCHAR WinStationName[WINSTATIONNAME_LENGTH]; 430 WCHAR Domain[DOMAIN_LENGTH]; 431 WCHAR UserName[USERNAME_LENGTH+1]; 432 LARGE_INTEGER ConnectTime; 433 LARGE_INTEGER DisconnectTime; 434 LARGE_INTEGER LastInputTime; 435 LARGE_INTEGER LogonTime; 436 LARGE_INTEGER CurrentTime; 437 } WTSINFOW, *PWTSINFOW; 438 439 typedef struct _WTSINFOA { 440 WTS_CONNECTSTATE_CLASS State; 441 DWORD SessionId; 442 DWORD IncomingBytes; 443 DWORD OutgoingBytes; 444 DWORD IncomingFrames; 445 DWORD OutgoingFrames; 446 DWORD IncomingCompressedBytes; 447 DWORD OutgoingCompressedBytes; 448 CHAR WinStationName[WINSTATIONNAME_LENGTH]; 449 CHAR Domain[DOMAIN_LENGTH]; 450 CHAR UserName[USERNAME_LENGTH+1]; 451 LARGE_INTEGER ConnectTime; 452 LARGE_INTEGER DisconnectTime; 453 LARGE_INTEGER LastInputTime; 454 LARGE_INTEGER LogonTime; 455 LARGE_INTEGER CurrentTime; 456 } WTSINFOA, *PWTSINFOA; 457 458 __MINGW_TYPEDEF_AW(WTSINFO) 459 __MINGW_TYPEDEF_AW(PWTSINFO) 460 461 #define WTS_SESSIONSTATE_UNKNOWN 0xffffffff 462 #define WTS_SESSIONSTATE_LOCK 0x00000000 463 #define WTS_SESSIONSTATE_UNLOCK 0x00000001 464 465 typedef struct _WTSINFOEX_LEVEL1_W { 466 ULONG SessionId; 467 WTS_CONNECTSTATE_CLASS SessionState; 468 LONG SessionFlags; 469 WCHAR WinStationName[WINSTATIONNAME_LENGTH + 1]; 470 WCHAR UserName[USERNAME_LENGTH + 1]; 471 WCHAR DomainName[DOMAIN_LENGTH + 1]; 472 LARGE_INTEGER LogonTime; 473 LARGE_INTEGER ConnectTime; 474 LARGE_INTEGER DisconnectTime; 475 LARGE_INTEGER LastInputTime; 476 LARGE_INTEGER CurrentTime; 477 DWORD IncomingBytes; 478 DWORD OutgoingBytes; 479 DWORD IncomingFrames; 480 DWORD OutgoingFrames; 481 DWORD IncomingCompressedBytes; 482 DWORD OutgoingCompressedBytes; 483 } WTSINFOEX_LEVEL1_W, *PWTSINFOEX_LEVEL1_W; 484 485 typedef struct _WTSINFOEX_LEVEL1_A { 486 ULONG SessionId; 487 WTS_CONNECTSTATE_CLASS SessionState; 488 LONG SessionFlags; 489 CHAR WinStationName[WINSTATIONNAME_LENGTH + 1]; 490 CHAR UserName[USERNAME_LENGTH + 1]; 491 CHAR DomainName[DOMAIN_LENGTH + 1]; 492 LARGE_INTEGER LogonTime; 493 LARGE_INTEGER ConnectTime; 494 LARGE_INTEGER DisconnectTime; 495 LARGE_INTEGER LastInputTime; 496 LARGE_INTEGER CurrentTime; 497 DWORD IncomingBytes; 498 DWORD OutgoingBytes; 499 DWORD IncomingFrames; 500 DWORD OutgoingFrames; 501 DWORD IncomingCompressedBytes; 502 DWORD OutgoingCompressedBytes; 503 } WTSINFOEX_LEVEL1_A, *PWTSINFOEX_LEVEL1_A; 504 505 __MINGW_TYPEDEF_UAW(WTSINFOEX_LEVEL1) 506 __MINGW_TYPEDEF_UAW(PWTSINFOEX_LEVEL1) 507 508 typedef union _WTSINFOEX_LEVEL_W { 509 WTSINFOEX_LEVEL1_W WTSInfoExLevel1; 510 } WTSINFOEX_LEVEL_W, *PWTSINFOEX_LEVEL_W; 511 512 typedef union _WTSINFOEX_LEVEL_A { 513 WTSINFOEX_LEVEL1_A WTSInfoExLevel1; 514 } WTSINFOEX_LEVEL_A, *PWTSINFOEX_LEVEL_A; 515 516 __MINGW_TYPEDEF_UAW(WTSINFOEX_LEVEL) 517 __MINGW_TYPEDEF_UAW(PWTSINFOEX_LEVEL) 518 519 typedef struct _WTSINFOEXW { 520 DWORD Level; 521 WTSINFOEX_LEVEL_W Data; 522 } WTSINFOEXW, *PWTSINFOEXW; 523 524 typedef struct _WTSINFOEXA { 525 DWORD Level; 526 WTSINFOEX_LEVEL_A Data; 527 } WTSINFOEXA, *PWTSINFOEXA; 528 529 __MINGW_TYPEDEF_AW(WTSINFOEX) 530 __MINGW_TYPEDEF_AW(PWTSINFOEX) 531 532 WINBOOL WINAPI WTSConnectSessionA( 533 ULONG LogonId, 534 ULONG TargetLogonId, 535 PSTR pPassword, 536 WINBOOL bWait 537 ); 538 539 WINBOOL WINAPI WTSConnectSessionW( 540 ULONG LogonId, 541 ULONG TargetLogonId, 542 PWSTR pPassword, 543 WINBOOL bWait 544 ); 545 546 WINBOOL WTSRegisterSessionNotificationEx( 547 HANDLE hServer, 548 HWND hWnd, 549 DWORD dwFlags 550 ); 551 552 WINBOOL WINAPI WTSStartRemoteControlSessionA( 553 LPSTR pTargetServerName, 554 ULONG TargetLogonId, 555 BYTE HotkeyVk, 556 USHORT HotkeyModifiers 557 ); 558 559 WINBOOL WINAPI WTSStartRemoteControlSessionW( 560 LPWSTR pTargetServerName, 561 ULONG TargetLogonId, 562 BYTE HotkeyVk, 563 USHORT HotkeyModifiers 564 ); 565 566 #define WTSStartRemoteControlSession __MINGW_NAME_AW(WTSStartRemoteControlSession) 567 #define WTSConnectSession __MINGW_NAME_AW(WTSConnectSession) 568 569 WINBOOL WINAPI WTSStopRemoteControlSession( 570 ULONG LogonId 571 ); 572 573 WINBOOL WINAPI WTSUnRegisterSessionNotificationEx( 574 HANDLE hServer, 575 HWND hWnd 576 ); 577 578 #define WTS_CHANNEL_OPTION_DYNAMIC 0x00000001 579 #define WTS_CHANNEL_OPTION_DYNAMIC_PRI_LOW 0x00000000 580 #define WTS_CHANNEL_OPTION_DYNAMIC_PRI_MED 0x00000002 581 #define WTS_CHANNEL_OPTION_DYNAMIC_PRI_HIGH 0x00000004 582 #define WTS_CHANNEL_OPTION_DYNAMIC_PRI_REAL 0x00000006 583 #define WTS_CHANNEL_OPTION_DYNAMIC_NO_COMPRESS 0x00000008 584 585 HANDLE WINAPI WTSVirtualChannelOpenEx( 586 DWORD SessionId, 587 LPSTR pVirtualName, 588 DWORD flags 589 ); 590 591 #endif /*(_WIN32_WINNT >= 0x0600)*/ 592 593 #if (_WIN32_WINNT >= 0x0601) 594 595 typedef struct _WTS_SESSION_INFO_1A { 596 DWORD ExecEnvId; 597 WTS_CONNECTSTATE_CLASS State; 598 DWORD SessionId; 599 LPSTR pSessionName; 600 LPSTR pHostName; 601 LPSTR pUserName; 602 LPSTR pDomainName; 603 LPSTR pFarmName; 604 } WTS_SESSION_INFO_1A, *PWTS_SESSION_INFO_1A; 605 606 typedef struct _WTS_SESSION_INFO_1W { 607 DWORD ExecEnvId; 608 WTS_CONNECTSTATE_CLASS State; 609 DWORD SessionId; 610 LPWSTR pSessionName; 611 LPWSTR pHostName; 612 LPWSTR pUserName; 613 LPWSTR pDomainName; 614 LPWSTR pFarmName; 615 } WTS_SESSION_INFO_1W, * PWTS_SESSION_INFO_1W; 616 617 #define WTS_SESSION_INFO_1 __MINGW_NAME_AW(WTS_SESSION_INFO_1) 618 #define PWTS_SESSION_INFO_1 __MINGW_NAME_AW(PWTS_SESSION_INFO_1) 619 620 WINBOOL WINAPI WTSEnumerateSessionsExA(HANDLE hServer,DWORD* pLevel,DWORD Filter,PWTS_SESSION_INFO_1A* ppSessionInfo,DWORD* pCount); 621 WINBOOL WINAPI WTSEnumerateSessionsExW(HANDLE hServer,DWORD* pLevel,DWORD Filter,PWTS_SESSION_INFO_1W* ppSessionInfo,DWORD* pCount); 622 #define WTSEnumerateSessionsEx __MINGW_NAME_AW(WTSEnumerateSessionsEx) 623 624 typedef enum _WTS_TYPE_CLASS { 625 WTSTypeProcessInfoLevel0, 626 WTSTypeProcessInfoLevel1, 627 WTSTypeSessionInfoLevel1 628 } WTS_TYPE_CLASS; 629 WINBOOL WINAPI WTSFreeMemoryExA(WTS_TYPE_CLASS WTSTypeClass,PVOID pMemory,ULONG NumberOfEntries); 630 WINBOOL WINAPI WTSFreeMemoryExW(WTS_TYPE_CLASS WTSTypeClass,PVOID pMemory,ULONG NumberOfEntries); 631 #define WTSFreeMemoryEx __MINGW_NAME_AW(WTSFreeMemoryEx) 632 633 #endif /*(_WIN32_WINNT >= 0x0601)*/ 634 635 #ifdef __cplusplus 636 } 637 #endif 638 #endif