From 77e6ebdb73e1ccbcf353ceb901c984ecc627be33 Mon Sep 17 00:00:00 2001 From: Mike McDonald Date: Thu, 29 Aug 2013 16:08:15 -0400 Subject: [PATCH] Removed WTSAPI files from winpr --- winpr/include/winpr/wtsapi.h | 1627 --------------------- winpr/libwinpr/wtsapi/CMakeLists.txt | 36 - winpr/libwinpr/wtsapi/ModuleOptions.cmake | 9 - winpr/libwinpr/wtsapi/wtsapi.c | 506 ------- 4 files changed, 2178 deletions(-) delete mode 100644 winpr/include/winpr/wtsapi.h delete mode 100644 winpr/libwinpr/wtsapi/CMakeLists.txt delete mode 100644 winpr/libwinpr/wtsapi/ModuleOptions.cmake delete mode 100644 winpr/libwinpr/wtsapi/wtsapi.c diff --git a/winpr/include/winpr/wtsapi.h b/winpr/include/winpr/wtsapi.h deleted file mode 100644 index b07006b5f..000000000 --- a/winpr/include/winpr/wtsapi.h +++ /dev/null @@ -1,1627 +0,0 @@ -/** - * WinPR: Windows Portable Runtime - * Windows Terminal Services API (WTSAPI) - * - * Copyright 2013 Mike McDonald - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef WINPR_WTSAPI_H -#define WINPR_WTSAPI_H - -#include - -#include -#include -#include -#include - -#ifdef _WIN32 - -#include - -#else - -typedef HANDLE HWND; - -#ifdef __cplusplus -extern "C" { -#endif - - -/*=================================================================== -== Defines -=====================================================================*/ - -/* - * Specifies the current server - */ -#define WTS_CURRENT_SERVER ((HANDLE)NULL) -#define WTS_CURRENT_SERVER_HANDLE ((HANDLE)NULL) -#define WTS_CURRENT_SERVER_NAME (NULL) - -/* - * Specifies the current session (SessionId) - */ -#define WTS_CURRENT_SESSION ((DWORD)-1) - -/* - * Specifies any-session (SessionId) - */ -#define WTS_ANY_SESSION ((DWORD)-2) - -/* - * Possible pResponse values from WTSSendMessage() - */ -#ifndef IDTIMEOUT -#define IDTIMEOUT 32000 -#endif -#ifndef IDASYNC -#define IDASYNC 32001 -#endif - -#ifndef __HYDRIX_H__ -#define USERNAME_LENGTH 20 -#define CLIENTNAME_LENGTH 20 -#define CLIENTADDRESS_LENGTH 30 -#endif -/* - * Shutdown flags - */ -#define WTS_WSD_LOGOFF 0x00000001 // log off all users except - // current user; deletes - // WinStations (a reboot is - // required to recreate the - // WinStations) -#define WTS_WSD_SHUTDOWN 0x00000002 // shutdown system -#define WTS_WSD_REBOOT 0x00000004 // shutdown and reboot -#define WTS_WSD_POWEROFF 0x00000008 // shutdown and power off (on - // machines that support power - // off through software) -#define WTS_WSD_FASTREBOOT 0x00000010 // reboot without logging users - // off or shutting down -#define MAX_ELAPSED_TIME_LENGTH 15 -#define MAX_DATE_TIME_LENGTH 56 -#define WINSTATIONNAME_LENGTH 32 -#define DOMAIN_LENGTH 17 - -#define WTS_DRIVE_LENGTH 3 -#define WTS_LISTENER_NAME_LENGTH 32 -#define WTS_COMMENT_LENGTH 60 - -/* - * Flags for WTSCreateListener - */ -#define WTS_LISTENER_CREATE 0x00000001 -#define WTS_LISTENER_UPDATE 0x00000010 - -/********************************* - * Listener access values - *********************************/ -#define WTS_SECURITY_QUERY_INFORMATION 0x00000001 -#define WTS_SECURITY_SET_INFORMATION 0x00000002 -#define WTS_SECURITY_RESET 0x00000004 -#define WTS_SECURITY_VIRTUAL_CHANNELS 0x00000008 -#define WTS_SECURITY_REMOTE_CONTROL 0x00000010 -#define WTS_SECURITY_LOGON 0x00000020 -#define WTS_SECURITY_LOGOFF 0x00000040 -#define WTS_SECURITY_MESSAGE 0x00000080 -#define WTS_SECURITY_CONNECT 0x00000100 -#define WTS_SECURITY_DISCONNECT 0x00000200 - -#define WTS_SECURITY_GUEST_ACCESS (WTS_SECURITY_LOGON) - -#define WTS_SECURITY_CURRENT_GUEST_ACCESS (WTS_SECURITY_VIRTUAL_CHANNELS | WTS_SECURITY_LOGOFF) - -#define WTS_SECURITY_USER_ACCESS (WTS_SECURITY_CURRENT_GUEST_ACCESS | WTS_SECURITY_QUERY_INFORMATION | WTS_SECURITY_CONNECT ) - -#define WTS_SECURITY_CURRENT_USER_ACCESS (WTS_SECURITY_SET_INFORMATION | WTS_SECURITY_RESET \ - WTS_SECURITY_VIRTUAL_CHANNELS | WTS_SECURITY_LOGOFF \ - WTS_SECURITY_DISCONNECT) - -#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) - -/*=================================================================== -== WTS_CONNECTSTATE_CLASS - Session connect state -=====================================================================*/ - -typedef enum _WTS_CONNECTSTATE_CLASS { - WTSActive, // User logged on to WinStation - WTSConnected, // WinStation connected to client - WTSConnectQuery, // In the process of connecting to client - WTSShadow, // Shadowing another WinStation - WTSDisconnected, // WinStation logged on without client - WTSIdle, // Waiting for client to connect - WTSListen, // WinStation is listening for connection - WTSReset, // WinStation is being reset - WTSDown, // WinStation is down due to error - WTSInit, // WinStation in initialization -} WTS_CONNECTSTATE_CLASS; - -/*===================================================================== -== WTS_SERVER_INFO - returned by WTSEnumerateServers (version 1) -=====================================================================*/ - -/* - * WTSEnumerateServers() returns two variables: pServerInfo and Count. - * The latter is the number of WTS_SERVER_INFO structures contained in - * the former. In order to read each server, iterate i from 0 to - * Count-1 and reference the server name as - * pServerInfo[i].pServerName; for example: - * - * for ( i=0; i < Count; i++ ) { - * _tprintf( TEXT("%s "), pServerInfo[i].pServerName ); - * } - * - * The memory returned looks like the following. P is a pServerInfo - * pointer, and D is the string data for that pServerInfo: - * - * P1 P2 P3 P4 ... Pn D1 D2 D3 D4 ... Dn - * - * This makes it easier to iterate the servers, using code similar to - * the above. - */ - -typedef struct _WTS_SERVER_INFOW { - LPWSTR pServerName; // server name -} WTS_SERVER_INFOW, * PWTS_SERVER_INFOW; - -typedef struct _WTS_SERVER_INFOA { - LPSTR pServerName; // server name -} WTS_SERVER_INFOA, * PWTS_SERVER_INFOA; - -#ifdef UNICODE -#define WTS_SERVER_INFO WTS_SERVER_INFOW -#define PWTS_SERVER_INFO PWTS_SERVER_INFOW -#else -#define WTS_SERVER_INFO WTS_SERVER_INFOA -#define PWTS_SERVER_INFO PWTS_SERVER_INFOA -#endif - - -/*===================================================================== -== WTS_SESSION_INFO - returned by WTSEnumerateSessions (version 1) -=====================================================================*/ - -/* - * WTSEnumerateSessions() returns data in a similar format to the above - * WTSEnumerateServers(). It returns two variables: pSessionInfo and - * Count. The latter is the number of WTS_SESSION_INFO structures - * contained in the former. Iteration is similar, except that there - * are three parts to each entry, so it would look like this: - * - * for ( i=0; i < Count; i++ ) { - * _tprintf( TEXT("%-5u %-20s %u\n"), - pSessionInfo[i].SessionId, - * pSessionInfo[i].pWinStationName, - * pSessionInfo[i].State ); - * } - * - * The memory returned is also segmented as the above, with all the - * structures allocated at the start and the string data at the end. - * We'll use S for the SessionId, P for the pWinStationName pointer - * and D for the string data, and C for the connect State: - * - * S1 P1 C1 S2 P2 C2 S3 P3 C3 S4 P4 C4 ... Sn Pn Cn D1 D2 D3 D4 ... Dn - * - * As above, this makes it easier to iterate the sessions. - */ - -typedef struct _WTS_SESSION_INFOW { - DWORD SessionId; // session id - LPWSTR pWinStationName; // name of WinStation this session is - // connected to - WTS_CONNECTSTATE_CLASS State; // connection state (see enum) -} WTS_SESSION_INFOW, * PWTS_SESSION_INFOW; - -typedef struct _WTS_SESSION_INFOA { - DWORD SessionId; // session id - LPSTR pWinStationName; // name of WinStation this session is - // connected to - WTS_CONNECTSTATE_CLASS State; // connection state (see enum) -} WTS_SESSION_INFOA, * PWTS_SESSION_INFOA; - -typedef struct _WTS_SESSION_INFO_1W { - DWORD ExecEnvId; - WTS_CONNECTSTATE_CLASS State; - DWORD SessionId; - LPWSTR pSessionName; - LPWSTR pHostName; - LPWSTR pUserName; - LPWSTR pDomainName; - LPWSTR pFarmName; -} WTS_SESSION_INFO_1W, * PWTS_SESSION_INFO_1W; - -typedef struct _WTS_SESSION_INFO_1A { - DWORD ExecEnvId; - WTS_CONNECTSTATE_CLASS State; - DWORD SessionId; - LPSTR pSessionName; - LPSTR pHostName; - LPSTR pUserName; - LPSTR pDomainName; - LPSTR pFarmName; -} WTS_SESSION_INFO_1A, * PWTS_SESSION_INFO_1A; - -#ifdef UNICODE -#define WTS_SESSION_INFO WTS_SESSION_INFOW -#define PWTS_SESSION_INFO PWTS_SESSION_INFOW -#define WTS_SESSION_INFO_1 WTS_SESSION_INFO_1W -#define PWTS_SESSION_INFO_1 PWTS_SESSION_INFO_1W -#else -#define WTS_SESSION_INFO WTS_SESSION_INFOA -#define PWTS_SESSION_INFO PWTS_SESSION_INFOA -#define WTS_SESSION_INFO_1 WTS_SESSION_INFO_1A -#define PWTS_SESSION_INFO_1 PWTS_SESSION_INFO_1A -#endif - - -/*===================================================================== -== WTS_PROCESS_INFO - returned by WTSEnumerateProcesses (version 1) -=====================================================================*/ - -/* - * WTSEnumerateProcesses() also returns data similar to - * WTSEnumerateServers(). It returns two variables: pProcessInfo and - * Count. The latter is the number of WTS_PROCESS_INFO structures - * contained in the former. Iteration is similar, except that there - * are four parts to each entry, so it would look like this: - * - * for ( i=0; i < Count; i++ ) { - * GetUserNameFromSid( pProcessInfo[i].pUserSid, UserName, - * sizeof(UserName) ); - * _tprintf( TEXT("%-5u %-20s %-5u %s\n"), - * pProcessInfo[i].SessionId, - * UserName, - * pProcessInfo[i].ProcessId, - * pProcessInfo[i].pProcessName ); - * } - * - * The memory returned is also segmented as the above, with all the - * structures allocated at the start and the string data at the end. - * We'll use S for the SessionId, R for the ProcessId, P for the - * pProcessName pointer and D for the string data, and U for pUserSid: - * - * S1 R1 P1 U1 S2 R2 P2 U2 S3 R3 P3 U3 ... Sn Rn Pn Un D1 D2 D3 ... Dn - * - * As above, this makes it easier to iterate the processes. - */ - -typedef struct _WTS_PROCESS_INFOW { - DWORD SessionId; // session id - DWORD ProcessId; // process id - LPWSTR pProcessName; // name of process - PSID pUserSid; // user's SID -} WTS_PROCESS_INFOW, * PWTS_PROCESS_INFOW; - -typedef struct _WTS_PROCESS_INFOA { - DWORD SessionId; // session id - DWORD ProcessId; // process id - LPSTR pProcessName; // name of process - PSID pUserSid; // user's SID -} WTS_PROCESS_INFOA, * PWTS_PROCESS_INFOA; - -#ifdef UNICODE -#define WTS_PROCESS_INFO WTS_PROCESS_INFOW -#define PWTS_PROCESS_INFO PWTS_PROCESS_INFOW -#else -#define WTS_PROCESS_INFO WTS_PROCESS_INFOA -#define PWTS_PROCESS_INFO PWTS_PROCESS_INFOA -#endif - -/*===================================================================== -== WTS_INFO_CLASS - WTSQuerySessionInformation -== (See additional typedefs for more info on structures) -=====================================================================*/ - -#define WTS_PROTOCOL_TYPE_CONSOLE 0 // Console -#define WTS_PROTOCOL_TYPE_ICA 1 // ICA Protocol -#define WTS_PROTOCOL_TYPE_RDP 2 // RDP Protocol - -typedef enum _WTS_INFO_CLASS { - WTSInitialProgram, - WTSApplicationName, - WTSWorkingDirectory, - WTSOEMId, - WTSSessionId, - WTSUserName, - WTSWinStationName, - WTSDomainName, - WTSConnectState, - WTSClientBuildNumber, - WTSClientName, - WTSClientDirectory, - WTSClientProductId, - WTSClientHardwareId, - WTSClientAddress, - WTSClientDisplay, - WTSClientProtocolType, - WTSIdleTime, - WTSLogonTime, - WTSIncomingBytes, - WTSOutgoingBytes, - WTSIncomingFrames, - WTSOutgoingFrames, - WTSClientInfo, - WTSSessionInfo, - WTSSessionInfoEx, - WTSConfigInfo, - WTSValidationInfo, // Info Class value used to fetch Validation Information through the WTSQuerySessionInformation - WTSSessionAddressV4, - WTSIsRemoteSession -} WTS_INFO_CLASS; - -/*===================================================================== -== WTS Config Information -=====================================================================*/ - -typedef struct _WTSCONFIGINFOW { - ULONG version; - ULONG fConnectClientDrivesAtLogon; - ULONG fConnectPrinterAtLogon; - ULONG fDisablePrinterRedirection; - ULONG fDisableDefaultMainClientPrinter; - ULONG ShadowSettings; - WCHAR LogonUserName[USERNAME_LENGTH + 1 ]; - WCHAR LogonDomain[DOMAIN_LENGTH + 1 ]; - WCHAR WorkDirectory[MAX_PATH + 1 ]; - WCHAR InitialProgram[MAX_PATH + 1 ]; - WCHAR ApplicationName[MAX_PATH + 1 ]; -} WTSCONFIGINFOW, *PWTSCONFIGINFOW; - -typedef struct _WTSCONFIGINFOA { - ULONG version; - ULONG fConnectClientDrivesAtLogon; - ULONG fConnectPrinterAtLogon; - ULONG fDisablePrinterRedirection; - ULONG fDisableDefaultMainClientPrinter; - ULONG ShadowSettings; - CHAR LogonUserName[USERNAME_LENGTH + 1 ]; - CHAR LogonDomain[DOMAIN_LENGTH + 1 ]; - CHAR WorkDirectory[MAX_PATH + 1 ]; - CHAR InitialProgram[MAX_PATH + 1 ]; - CHAR ApplicationName[MAX_PATH + 1 ]; -} WTSCONFIGINFOA, *PWTSCONFIGINFOA; - -/*===================================================================== -== WTS Session Information -=====================================================================*/ -typedef struct _WTSINFOW { - WTS_CONNECTSTATE_CLASS State; // connection state (see enum) - DWORD SessionId; // session id - DWORD IncomingBytes; - DWORD OutgoingBytes; - DWORD IncomingFrames; - DWORD OutgoingFrames; - DWORD IncomingCompressedBytes; - DWORD OutgoingCompressedBytes; - WCHAR WinStationName[WINSTATIONNAME_LENGTH]; - WCHAR Domain[DOMAIN_LENGTH]; - WCHAR UserName[USERNAME_LENGTH+1];// name of WinStation this session is - // connected to - LARGE_INTEGER ConnectTime; - LARGE_INTEGER DisconnectTime; - LARGE_INTEGER LastInputTime; - LARGE_INTEGER LogonTime; - LARGE_INTEGER CurrentTime; - -} WTSINFOW, * PWTSINFOW; - -typedef struct _WTSINFOA { - WTS_CONNECTSTATE_CLASS State; // connection state (see enum) - DWORD SessionId; // session id - DWORD IncomingBytes; - DWORD OutgoingBytes; - DWORD IncomingFrames; - DWORD OutgoingFrames; - DWORD IncomingCompressedBytes; - DWORD OutgoingCompressedBy; - CHAR WinStationName[WINSTATIONNAME_LENGTH]; - CHAR Domain[DOMAIN_LENGTH]; - CHAR UserName[USERNAME_LENGTH+1];// name of WinStation this session is - // connected to - LARGE_INTEGER ConnectTime; - LARGE_INTEGER DisconnectTime; - LARGE_INTEGER LastInputTime; - LARGE_INTEGER LogonTime; - LARGE_INTEGER CurrentTime; - -} WTSINFOA, * PWTSINFOA; - - -/*===================================================================== -== WTS Extended Session State Flags -=====================================================================*/ -#define WTS_SESSIONSTATE_UNKNOWN 0xFFFFFFFF -#define WTS_SESSIONSTATE_LOCK 0x00000000 -#define WTS_SESSIONSTATE_UNLOCK 0x00000001 - -/*===================================================================== -== WTS Extended Session Information -=====================================================================*/ -typedef struct _WTSINFOEX_LEVEL1_W { - ULONG SessionId; - WTS_CONNECTSTATE_CLASS SessionState; - LONG SessionFlags; - WCHAR WinStationName[WINSTATIONNAME_LENGTH + 1] ; - WCHAR UserName[USERNAME_LENGTH + 1]; - WCHAR DomainName[DOMAIN_LENGTH + 1]; - LARGE_INTEGER LogonTime; - LARGE_INTEGER ConnectTime; - LARGE_INTEGER DisconnectTime; - LARGE_INTEGER LastInputTime; - LARGE_INTEGER CurrentTime; - DWORD IncomingBytes; - DWORD OutgoingBytes; - DWORD IncomingFrames; - DWORD OutgoingFrames; - DWORD IncomingCompressedBytes; - DWORD OutgoingCompressedBytes; -} WTSINFOEX_LEVEL1_W, *PWTSINFOEX_LEVEL1_W; - -typedef struct _WTSINFOEX_LEVEL1_A { - ULONG SessionId; - WTS_CONNECTSTATE_CLASS SessionState; - LONG SessionFlags; - CHAR WinStationName[WINSTATIONNAME_LENGTH + 1]; - CHAR UserName[USERNAME_LENGTH + 1]; - CHAR DomainName[DOMAIN_LENGTH + 1]; - LARGE_INTEGER LogonTime; - LARGE_INTEGER ConnectTime; - LARGE_INTEGER DisconnectTime; - LARGE_INTEGER LastInputTime; - LARGE_INTEGER CurrentTime; - DWORD IncomingBytes; - DWORD OutgoingBytes; - DWORD IncomingFrames; - DWORD OutgoingFrames; - DWORD IncomingCompressedBytes; - DWORD OutgoingCompressedBytes; -} WTSINFOEX_LEVEL1_A, *PWTSINFOEX_LEVEL1_A; - -typedef union _WTSINFOEX_LEVEL_W { - WTSINFOEX_LEVEL1_W WTSInfoExLevel1; -} WTSINFOEX_LEVEL_W, *PWTSINFOEX_LEVEL_W; - -typedef union _WTSINFOEX_LEVEL_A { - WTSINFOEX_LEVEL1_A WTSInfoExLevel1; -} WTSINFOEX_LEVEL_A, *PWTSINFOEX_LEVEL_A; - -typedef struct _WTSINFOEXW { - DWORD Level; - WTSINFOEX_LEVEL_W Data; -} WTSINFOEXW, *PWTSINFOEXW; - -typedef struct _WTSINFOEXA { - DWORD Level; - WTSINFOEX_LEVEL_A Data; -} WTSINFOEXA, *PWTSINFOEXA; - - -/*===================================================================== -== WTS Client Information -=====================================================================*/ -typedef struct _WTSCLIENTW { - WCHAR ClientName[ CLIENTNAME_LENGTH + 1 ]; - WCHAR Domain[ DOMAIN_LENGTH + 1 ]; - WCHAR UserName[ USERNAME_LENGTH + 1 ]; - WCHAR WorkDirectory[ MAX_PATH + 1]; - WCHAR InitialProgram[ MAX_PATH + 1]; - BYTE EncryptionLevel; // security level of encryption pd - ULONG ClientAddressFamily; - USHORT ClientAddress[ CLIENTADDRESS_LENGTH + 1 ]; - USHORT HRes; - USHORT VRes; - USHORT ColorDepth; - WCHAR ClientDirectory[ MAX_PATH + 1 ]; - ULONG ClientBuildNumber; - ULONG ClientHardwareId; // client software serial number - USHORT ClientProductId; // client software product id - USHORT OutBufCountHost; // number of outbufs on host - USHORT OutBufCountClient; // number of outbufs on client - USHORT OutBufLength; // length of outbufs in bytes - WCHAR DeviceId[ MAX_PATH + 1]; -} WTSCLIENTW, * PWTSCLIENTW; - - -/*===================================================================== -== WTS Client Information -=====================================================================*/ -typedef struct _WTSCLIENTA { - CHAR ClientName[ CLIENTNAME_LENGTH + 1 ]; - CHAR Domain[ DOMAIN_LENGTH + 1 ]; - CHAR UserName[ USERNAME_LENGTH + 1 ]; - CHAR WorkDirectory[ MAX_PATH + 1]; - CHAR InitialProgram[ MAX_PATH + 1 ]; - BYTE EncryptionLevel; // security level of encryption pd - ULONG ClientAddressFamily; - USHORT ClientAddress[ CLIENTADDRESS_LENGTH + 1 ]; - USHORT HRes; - USHORT VRes; - USHORT ColorDepth; - CHAR ClientDirectory[ MAX_PATH + 1 ]; - ULONG ClientBuildNumber; - ULONG ClientHardwareId; // client software serial number - USHORT ClientProductId; // client software product id - USHORT OutBufCountHost; // number of outbufs on host - USHORT OutBufCountClient; // number of outbufs on client - USHORT OutBufLength; // length of outbufs in bytes - CHAR DeviceId[ MAX_PATH + 1]; -} WTSCLIENTA, * PWTSCLIENTA; - -/*===================================================================== -== WTS License Validation Information - Product Information -=====================================================================*/ - -#define PRODUCTINFO_COMPANYNAME_LENGTH 256 -#define PRODUCTINFO_PRODUCTID_LENGTH 4 - -typedef struct _WTS_PRODUCT_INFOA -{ - CHAR CompanyName[PRODUCTINFO_COMPANYNAME_LENGTH]; - CHAR ProductID[PRODUCTINFO_PRODUCTID_LENGTH]; -} PRODUCT_INFOA; - -typedef struct _WTS_PRODUCT_INFOW -{ - WCHAR CompanyName[PRODUCTINFO_COMPANYNAME_LENGTH]; - WCHAR ProductID[PRODUCTINFO_PRODUCTID_LENGTH]; -} PRODUCT_INFOW; - -/*===================================================================== - WTS License Validation Information - This structure will be returned from WTSQuerySessionInformation when the user - queries for license validation information. -=====================================================================*/ - -#define VALIDATIONINFORMATION_LICENSE_LENGTH 16384 //16 Kb -#define VALIDATIONINFORMATION_HARDWAREID_LENGTH 20 - -typedef struct _WTS_VALIDATION_INFORMATIONA { - PRODUCT_INFOA ProductInfo; - BYTE License[VALIDATIONINFORMATION_LICENSE_LENGTH]; - DWORD LicenseLength; - BYTE HardwareID[VALIDATIONINFORMATION_HARDWAREID_LENGTH]; - DWORD HardwareIDLength; - -} WTS_VALIDATION_INFORMATIONA, * PWTS_VALIDATION_INFORMATIONA; - -typedef struct _WTS_VALIDATION_INFORMATIONW { - PRODUCT_INFOW ProductInfo; - BYTE License[VALIDATIONINFORMATION_LICENSE_LENGTH]; - DWORD LicenseLength; - BYTE HardwareID[VALIDATIONINFORMATION_HARDWAREID_LENGTH]; - DWORD HardwareIDLength; - -} WTS_VALIDATION_INFORMATIONW, * PWTS_VALIDATION_INFORMATIONW; - -#ifdef UNICODE -#define WTSCONFIGINFO WTSCONFIGINFOW -#define PWTSCONFIGINFO PWTSCONFIGINFOW -#define PRODUCT_INFO PRODUCT_INFOW -#define WTS_VALIDATION_INFORMATION WTS_VALIDATION_INFORMATIONW -#define PWTS_VALIDATION_INFORMATION PWTS_VALIDATION_INFORMATIONW -#define WTSINFO WTSINFOW -#define PWTSINFO PWTSINFOW -#define WTSINFOEX WTSINFOEXW -#define PWTSINFOEX PWTSINFOEXW -#define WTSINFOEX_LEVEL WTSINFOEX_LEVEL_W -#define PWTSINFOEX_LEVEL PWTSINFOEX_LEVEL_W -#define WTSINFOEX_LEVEL1 WTSINFOEX_LEVEL1_W -#define PWTSINFOEX_LEVEL1 PWTSINFOEX_LEVEL1_W -#define WTSCLIENT WTSCLIENTW -#define PWTSCLIENT PWTSCLIENTW -#else -#define WTSCONFIGINFO WTSCONFIGINFOA -#define PWTSCONFIGINFO PWTSCONFIGINFOA -#define PRODUCT_INFO PRODUCT_INFOA -#define WTS_VALIDATION_INFORMATION WTS_VALIDATION_INFORMATIONA -#define PWTS_VALIDATION_INFORMATION PWTS_VALIDATION_INFORMATIONA -#define WTSINFO WTSINFOA -#define PWTSINFO PWTSINFOA -#define WTSINFOEX WTSINFOEXA -#define PWTSINFOEX PWTSINFOEXA -#define WTSINFOEX_LEVEL WTSINFOEX_LEVEL_A -#define PWTSINFOEX_LEVEL PWTSINFOEX_LEVEL_A -#define WTSINFOEX_LEVEL1 WTSINFOEX_LEVEL1_A -#define PWTSINFOEX_LEVEL1 PWTSINFOEX_LEVEL1_A -#define WTSCLIENT WTSCLIENTA -#define PWTSCLIENT PWTSCLIENTA - -#endif - - -/*===================================================================== -== WTSQuerySessionInformation - (WTSClientAddress) -=====================================================================*/ - -typedef struct _WTS_CLIENT_ADDRESS { - DWORD AddressFamily; // AF_INET, AF_INET6, AF_IPX, AF_NETBIOS, AF_UNSPEC - BYTE Address[20]; // client network address -} WTS_CLIENT_ADDRESS, * PWTS_CLIENT_ADDRESS; - - -/*===================================================================== -== WTSQuerySessionInformation - (WTSClientDisplay) -=====================================================================*/ - -typedef struct _WTS_CLIENT_DISPLAY { - DWORD HorizontalResolution; // horizontal dimensions, in pixels - DWORD VerticalResolution; // vertical dimensions, in pixels - DWORD ColorDepth; // 1=16, 2=256, 4=64K, 8=16M -} WTS_CLIENT_DISPLAY, * PWTS_CLIENT_DISPLAY; - - -/*===================================================================== -== WTS_CONFIG_CLASS - WTSQueryUserConfig/WTSSetUserConfig -=====================================================================*/ - - -typedef enum _WTS_CONFIG_CLASS { - //Initial program settings - WTSUserConfigInitialProgram, // string returned/expected - WTSUserConfigWorkingDirectory, // string returned/expected - WTSUserConfigfInheritInitialProgram, // DWORD returned/expected - // - WTSUserConfigfAllowLogonTerminalServer, //DWORD returned/expected - //Timeout settings - WTSUserConfigTimeoutSettingsConnections, //DWORD returned/expected - WTSUserConfigTimeoutSettingsDisconnections, //DWORD returned/expected - WTSUserConfigTimeoutSettingsIdle, //DWORD returned/expected - //Client device settings - WTSUserConfigfDeviceClientDrives, //DWORD returned/expected - WTSUserConfigfDeviceClientPrinters, //DWORD returned/expected - WTSUserConfigfDeviceClientDefaultPrinter, //DWORD returned/expected - //Connection settings - WTSUserConfigBrokenTimeoutSettings, //DWORD returned/expected - WTSUserConfigReconnectSettings, //DWORD returned/expected - //Modem settings - WTSUserConfigModemCallbackSettings, //DWORD returned/expected - WTSUserConfigModemCallbackPhoneNumber, // string returned/expected - //Shadow settings - WTSUserConfigShadowingSettings, //DWORD returned/expected - //User Profile settings - WTSUserConfigTerminalServerProfilePath, // string returned/expected - //Terminal Server home directory - WTSUserConfigTerminalServerHomeDir, // string returned/expected - WTSUserConfigTerminalServerHomeDirDrive, // string returned/expected - WTSUserConfigfTerminalServerRemoteHomeDir, // DWORD 0:LOCAL 1:REMOTE - - WTSUserConfigUser, // returns WTSUSERCONFIG struct -} WTS_CONFIG_CLASS; - -typedef enum _WTS_CONFIG_SOURCE { - WTSUserConfigSourceSAM -} WTS_CONFIG_SOURCE; - -typedef struct _WTSUSERCONFIGA { - DWORD Source; - DWORD InheritInitialProgram; - DWORD AllowLogonTerminalServer; - DWORD TimeoutSettingsConnections; - DWORD TimeoutSettingsDisconnections; - DWORD TimeoutSettingsIdle; - DWORD DeviceClientDrives; - DWORD DeviceClientPrinters; - DWORD ClientDefaultPrinter; - DWORD BrokenTimeoutSettings; - DWORD ReconnectSettings; - DWORD ShadowingSettings; - DWORD TerminalServerRemoteHomeDir; - CHAR InitialProgram[ MAX_PATH + 1 ]; - CHAR WorkDirectory[ MAX_PATH + 1 ]; - CHAR TerminalServerProfilePath[ MAX_PATH + 1 ]; - CHAR TerminalServerHomeDir[ MAX_PATH + 1 ]; - CHAR TerminalServerHomeDirDrive[ WTS_DRIVE_LENGTH + 1 ]; -} WTSUSERCONFIGA, * PWTSUSERCONFIGA; - -typedef struct _WTSUSERCONFIGW { - DWORD Source; - DWORD InheritInitialProgram; - DWORD AllowLogonTerminalServer; - DWORD TimeoutSettingsConnections; - DWORD TimeoutSettingsDisconnections; - DWORD TimeoutSettingsIdle; - DWORD DeviceClientDrives; - DWORD DeviceClientPrinters; - DWORD ClientDefaultPrinter; - DWORD BrokenTimeoutSettings; - DWORD ReconnectSettings; - DWORD ShadowingSettings; - DWORD TerminalServerRemoteHomeDir; - WCHAR InitialProgram[ MAX_PATH + 1 ]; - WCHAR WorkDirectory[ MAX_PATH + 1 ]; - WCHAR TerminalServerProfilePath[ MAX_PATH + 1 ]; - WCHAR TerminalServerHomeDir[ MAX_PATH + 1 ]; - WCHAR TerminalServerHomeDirDrive[ WTS_DRIVE_LENGTH + 1 ]; -} WTSUSERCONFIGW, * PWTSUSERCONFIGW; - -#ifdef UNICODE -#define WTSUSERCONFIG WTSUSERCONFIGW -#define PWTSUSERCONFIG PWTSUSERCONFIGW -#else -#define WTSUSERCONFIG WTSUSERCONFIGA -#define PWTSUSERCONFIG PWTSUSERCONFIGA -#endif /* UNICODE */ - - -/*===================================================================== -== WTS_EVENT - Event flags for WTSWaitSystemEvent -=====================================================================*/ - -#define WTS_EVENT_NONE 0x00000000 // return no event -#define WTS_EVENT_CREATE 0x00000001 // new WinStation created -#define WTS_EVENT_DELETE 0x00000002 // existing WinStation deleted -#define WTS_EVENT_RENAME 0x00000004 // existing WinStation renamed -#define WTS_EVENT_CONNECT 0x00000008 // WinStation connect to client -#define WTS_EVENT_DISCONNECT 0x00000010 // WinStation logged on without - // client -#define WTS_EVENT_LOGON 0x00000020 // user logged on to existing - // WinStation -#define WTS_EVENT_LOGOFF 0x00000040 // user logged off from - // existing WinStation -#define WTS_EVENT_STATECHANGE 0x00000080 // WinStation state change -#define WTS_EVENT_LICENSE 0x00000100 // license state change -#define WTS_EVENT_ALL 0x7fffffff // wait for all event types -#define WTS_EVENT_FLUSH 0x80000000 // unblock all waiters - -/*===================================================================== -== Flags for HotkeyModifiers in WTSStartRemoteControlSession -=====================================================================*/ - -#define REMOTECONTROL_KBDSHIFT_HOTKEY 0x1 // Shift key -#define REMOTECONTROL_KBDCTRL_HOTKEY 0x2 // Ctrl key -#define REMOTECONTROL_KBDALT_HOTKEY 0x4 // Alt key - -/*===================================================================== -== WTS_VIRTUAL_CLASS - WTSVirtualChannelQuery -=====================================================================*/ -typedef enum _WTS_VIRTUAL_CLASS { - WTSVirtualClientData, // Virtual channel client module data - // (C2H data) - WTSVirtualFileHandle -} WTS_VIRTUAL_CLASS; - -/*===================================================================== -== WTSQuerySessionInformation - (WTSSessionAddress) -=====================================================================*/ - -typedef struct _WTS_SESSION_ADDRESS { - DWORD AddressFamily; // AF_INET only. - BYTE Address[20]; // client network address -} WTS_SESSION_ADDRESS, * PWTS_SESSION_ADDRESS; - - -/*===================================================================== -== Windows Terminal Server public APIs -=====================================================================*/ - -BOOL WINPR_API -WTSStopRemoteControlSession( - ULONG LogonId - ); - -BOOL WINPR_API -WTSStartRemoteControlSessionW( - LPWSTR pTargetServerName, - ULONG TargetLogonId, - BYTE HotkeyVk, - USHORT HotkeyModifiers - ); - -BOOL WINPR_API -WTSStartRemoteControlSessionA( - LPSTR pTargetServerName, - ULONG TargetLogonId, - BYTE HotkeyVk, - USHORT HotkeyModifiers - ); - -#ifdef UNICODE -#define WTSStartRemoteControlSession WTSStartRemoteControlSessionW -#else -#define WTSStartRemoteControlSession WTSStartRemoteControlSessionA -#endif /* UNICODE */ - -BOOL -WINPR_API -WTSConnectSessionA( - ULONG LogonId, - ULONG TargetLogonId, - PSTR pPassword, - BOOL bWait - ); - -BOOL -WINPR_API -WTSConnectSessionW( - ULONG LogonId, - ULONG TargetLogonId, - PWSTR pPassword, - BOOL bWait - ); - -#ifdef UNICODE -#define WTSConnectSession WTSConnectSessionW -#else -#define WTSConnectSession WTSConnectSessionA -#endif - -BOOL -WINPR_API -WTSEnumerateServersW( - LPWSTR pDomainName, - DWORD Reserved, - DWORD Version, - PWTS_SERVER_INFOW * ppServerInfo, - DWORD * pCount - ); - -BOOL -WINPR_API -WTSEnumerateServersA( - LPSTR pDomainName, - DWORD Reserved, - DWORD Version, - PWTS_SERVER_INFOA * ppServerInfo, - DWORD * pCount - ); - -#ifdef UNICODE -#define WTSEnumerateServers WTSEnumerateServersW -#else -#define WTSEnumerateServers WTSEnumerateServersA -#endif - -/*------------------------------------------------*/ - -HANDLE -WINPR_API -WTSOpenServerW( - LPWSTR pServerName - ); - -HANDLE -WINPR_API -WTSOpenServerA( - LPSTR pServerName - ); - -HANDLE -WINPR_API -WTSOpenServerExW( - LPWSTR pServerName - ); - -HANDLE -WINPR_API -WTSOpenServerExA( - LPSTR pServerName - ); - -#ifdef UNICODE -#define WTSOpenServer WTSOpenServerW -#define WTSOpenServerEx WTSOpenServerExW -#else -#define WTSOpenServer WTSOpenServerA -#define WTSOpenServerEx WTSOpenServerExA -#endif - -/*------------------------------------------------*/ - -VOID -WINPR_API -WTSCloseServer( - HANDLE hServer - ); - -/*------------------------------------------------*/ - -BOOL -WINPR_API -WTSEnumerateSessionsW( - HANDLE hServer, - DWORD Reserved, - DWORD Version, - PWTS_SESSION_INFOW * ppSessionInfo, - DWORD * pCount - ); - -BOOL -WINPR_API -WTSEnumerateSessionsA( - HANDLE hServer, - DWORD Reserved, - DWORD Version, - PWTS_SESSION_INFOA * ppSessionInfo, - DWORD * pCount - ); - -BOOL -WINPR_API -WTSEnumerateSessionsExW( - HANDLE hServer, - DWORD *pLevel, - DWORD Filter, - PWTS_SESSION_INFO_1W * ppSessionInfo, - DWORD * pCount ); - -BOOL -WINPR_API -WTSEnumerateSessionsExA( - HANDLE hServer, - DWORD *pLevel, - DWORD Filter, - PWTS_SESSION_INFO_1A * ppSessionInfo, - DWORD * pCount ); - -#ifdef UNICODE -#define WTSEnumerateSessions WTSEnumerateSessionsW -#define WTSEnumerateSessionsEx WTSEnumerateSessionsExW -#else -#define WTSEnumerateSessions WTSEnumerateSessionsA -#define WTSEnumerateSessionsEx WTSEnumerateSessionsExA -#endif - -/*------------------------------------------------*/ - -BOOL -WINPR_API -WTSEnumerateProcessesW( - HANDLE hServer, - DWORD Reserved, - DWORD Version, - PWTS_PROCESS_INFOW * ppProcessInfo, - DWORD * pCount - ); - -BOOL -WINPR_API -WTSEnumerateProcessesA( - HANDLE hServer, - DWORD Reserved, - DWORD Version, - PWTS_PROCESS_INFOA * ppProcessInfo, - DWORD * pCount - ); - -#ifdef UNICODE -#define WTSEnumerateProcesses WTSEnumerateProcessesW -#else -#define WTSEnumerateProcesses WTSEnumerateProcessesA -#endif - -/*------------------------------------------------*/ - -BOOL -WINPR_API -WTSTerminateProcess( - HANDLE hServer, - DWORD ProcessId, - DWORD ExitCode - ); - - -/*------------------------------------------------*/ - -BOOL -WINPR_API -WTSQuerySessionInformationW( - HANDLE hServer, - DWORD SessionId, - WTS_INFO_CLASS WTSInfoClass, - LPWSTR * ppBuffer, - DWORD * pBytesReturned - ); - -BOOL -WINPR_API -WTSQuerySessionInformationA( - HANDLE hServer, - DWORD SessionId, - WTS_INFO_CLASS WTSInfoClass, - LPSTR * ppBuffer, - DWORD * pBytesReturned - ); - -#ifdef UNICODE -#define WTSQuerySessionInformation WTSQuerySessionInformationW -#else -#define WTSQuerySessionInformation WTSQuerySessionInformationA -#endif - -/*------------------------------------------------*/ - -BOOL -WINPR_API -WTSQueryUserConfigW( - LPWSTR pServerName, - LPWSTR pUserName, - WTS_CONFIG_CLASS WTSConfigClass, - LPWSTR * ppBuffer, - DWORD * pBytesReturned - ); - -BOOL -WINPR_API -WTSQueryUserConfigA( - LPSTR pServerName, - LPSTR pUserName, - WTS_CONFIG_CLASS WTSConfigClass, - LPSTR * ppBuffer, - DWORD * pBytesReturned - ); - -#ifdef UNICODE -#define WTSQueryUserConfig WTSQueryUserConfigW -#else -#define WTSQueryUserConfig WTSQueryUserConfigA -#endif - -/*------------------------------------------------*/ - -BOOL -WINPR_API -WTSSetUserConfigW( - LPWSTR pServerName, - LPWSTR pUserName, - WTS_CONFIG_CLASS WTSConfigClass, - LPWSTR pBuffer, - DWORD DataLength - ); - -BOOL -WINPR_API -WTSSetUserConfigA( - LPSTR pServerName, - LPSTR pUserName, - WTS_CONFIG_CLASS WTSConfigClass, - LPSTR pBuffer, - DWORD DataLength - ); - -#ifdef UNICODE -#define WTSSetUserConfig WTSSetUserConfigW -#else -#define WTSSetUserConfig WTSSetUserConfigA -#endif - -/*------------------------------------------------*/ - -BOOL -WINPR_API -WTSSendMessageW( - HANDLE hServer, - DWORD SessionId, - LPWSTR pTitle, - DWORD TitleLength, - LPWSTR pMessage, - DWORD MessageLength, - DWORD Style, - DWORD Timeout, - DWORD * pResponse, - BOOL bWait - ); - -BOOL -WINPR_API -WTSSendMessageA( - HANDLE hServer, - DWORD SessionId, - LPSTR pTitle, - DWORD TitleLength, - LPSTR pMessage, - DWORD MessageLength, - DWORD Style, - DWORD Timeout, - DWORD * pResponse, - BOOL bWait - ); - -#ifdef UNICODE -#define WTSSendMessage WTSSendMessageW -#else -#define WTSSendMessage WTSSendMessageA -#endif - -/*------------------------------------------------*/ - -BOOL -WINPR_API -WTSDisconnectSession( - HANDLE hServer, - DWORD SessionId, - BOOL bWait - ); - -/*------------------------------------------------*/ - -BOOL -WINPR_API -WTSLogoffSession( - HANDLE hServer, - DWORD SessionId, - BOOL bWait - ); - -/*------------------------------------------------*/ - -BOOL -WINPR_API -WTSShutdownSystem( - HANDLE hServer, - DWORD ShutdownFlag - ); - -/*------------------------------------------------*/ - -BOOL -WINPR_API -WTSWaitSystemEvent( - HANDLE hServer, - DWORD EventMask, - DWORD * pEventFlags - ); - -/*------------------------------------------------*/ - -HANDLE -WINPR_API -WTSVirtualChannelOpen( - HANDLE hServer, - DWORD SessionId, - LPSTR pVirtualName /* ascii name */ - ); - -#define WTS_CHANNEL_OPTION_DYNAMIC 0x00000001 // dynamic channel -#define WTS_CHANNEL_OPTION_DYNAMIC_PRI_LOW 0x00000000 // priorities -#define WTS_CHANNEL_OPTION_DYNAMIC_PRI_MED 0x00000002 -#define WTS_CHANNEL_OPTION_DYNAMIC_PRI_HIGH 0x00000004 -#define WTS_CHANNEL_OPTION_DYNAMIC_PRI_REAL 0x00000006 -#define WTS_CHANNEL_OPTION_DYNAMIC_NO_COMPRESS 0x00000008 - -HANDLE -WINPR_API -WTSVirtualChannelOpenEx( - DWORD SessionId, - LPSTR pVirtualName, /* ascii name */ - DWORD flags - ); - -BOOL -WINPR_API -WTSVirtualChannelClose( - HANDLE hChannelHandle - ); - -BOOL -WINPR_API -WTSVirtualChannelRead( - HANDLE hChannelHandle, - ULONG TimeOut, - PCHAR Buffer, - ULONG BufferSize, - PULONG pBytesRead - ); - -BOOL -WINPR_API -WTSVirtualChannelWrite( - HANDLE hChannelHandle, - PCHAR Buffer, - ULONG Length, - PULONG pBytesWritten - ); - -BOOL -WINPR_API -WTSVirtualChannelPurgeInput( - HANDLE hChannelHandle - ); - -BOOL -WINPR_API -WTSVirtualChannelPurgeOutput( - HANDLE hChannelHandle - ); - - -BOOL -WINPR_API -WTSVirtualChannelQuery( - HANDLE hChannelHandle, - WTS_VIRTUAL_CLASS, - PVOID *ppBuffer, - DWORD *pBytesReturned - ); - -/*------------------------------------------------*/ - - -VOID -WINPR_API -WTSFreeMemory( - PVOID pMemory - ); - -/* Flags for Console Notification */ - -#define NOTIFY_FOR_ALL_SESSIONS 1 -#define NOTIFY_FOR_THIS_SESSION 0 - - -BOOL -WINPR_API -WTSRegisterSessionNotification( - HWND hWnd, - DWORD dwFlags - ); - -BOOL -WINPR_API -WTSUnRegisterSessionNotification( - HWND hWnd - ); - - -BOOL -WINPR_API -WTSRegisterSessionNotificationEx( - HANDLE hServer, - HWND hWnd, - DWORD dwFlags - ); - -BOOL -WINPR_API -WTSUnRegisterSessionNotificationEx( - HANDLE hServer, - HWND hWnd - ); - -BOOL -WINPR_API -WTSQueryUserToken( - ULONG SessionId, - PHANDLE phToken - ); - -#define WTS_PROCESS_INFO_LEVEL_0 0 -#define WTS_PROCESS_INFO_LEVEL_1 1 - -/* -== WTS_PROCESS_INFO_EX - returned by WTSEnumerateProcessesEX -*/ - -typedef struct _WTS_PROCESS_INFO_EXW { - DWORD SessionId; - DWORD ProcessId; - LPWSTR pProcessName; - PSID pUserSid; - DWORD NumberOfThreads; - DWORD HandleCount; - DWORD PagefileUsage; - DWORD PeakPagefileUsage; - DWORD WorkingSetSize; - DWORD PeakWorkingSetSize; - LARGE_INTEGER UserTime; - LARGE_INTEGER KernelTime; -} WTS_PROCESS_INFO_EXW, * PWTS_PROCESS_INFO_EXW; - -typedef struct _WTS_PROCESS_INFO_EXA { - DWORD SessionId; - DWORD ProcessId; - LPSTR pProcessName; - PSID pUserSid; - DWORD NumberOfThreads; - DWORD HandleCount; - DWORD PagefileUsage; - DWORD PeakPagefileUsage; - DWORD WorkingSetSize; - DWORD PeakWorkingSetSize; - LARGE_INTEGER UserTime; - LARGE_INTEGER KernelTime; -} WTS_PROCESS_INFO_EXA, * PWTS_PROCESS_INFO_EXA; - -#ifdef UNICODE -#define WTS_PROCESS_INFO_EX WTS_PROCESS_INFO_EXW -#define PWTS_PROCESS_INFO_EX PWTS_PROCESS_INFO_EXW -#else -#define WTS_PROCESS_INFO_EX WTS_PROCESS_INFO_EXA -#define PWTS_PROCESS_INFO_EX PWTS_PROCESS_INFO_EXA -#endif - -/*------------------------------------------------*/ - -typedef enum _WTS_TYPE_CLASS { - WTSTypeProcessInfoLevel0, - WTSTypeProcessInfoLevel1, - WTSTypeSessionInfoLevel1, -} WTS_TYPE_CLASS; - -BOOL WINPR_API -WTSFreeMemoryExW( - WTS_TYPE_CLASS WTSTypeClass, - PVOID pMemory, - ULONG NumberOfEntries -); - -BOOL WINPR_API -WTSFreeMemoryExA( - WTS_TYPE_CLASS WTSTypeClass, - PVOID pMemory, - ULONG NumberOfEntries -); - -#ifdef UNICODE -#define WTSFreeMemoryEx WTSFreeMemoryExW -#else -#define WTSFreeMemoryEx WTSFreeMemoryExA -#endif - -/*------------------------------------------------*/ - -BOOL WINPR_API -WTSEnumerateProcessesExW -( - HANDLE hServer, - DWORD *pLevel, - DWORD SessionId, - LPWSTR *ppProcessInfo, - DWORD * pCount -); - -BOOL WINPR_API -WTSEnumerateProcessesExA -( - HANDLE hServer, - DWORD *pLevel, - DWORD SessionId, - LPSTR *ppProcessInfo, - DWORD * pCount -); - -#ifdef UNICODE -#define WTSEnumerateProcessesEx WTSEnumerateProcessesExW -#else -#define WTSEnumerateProcessesEx WTSEnumerateProcessesExA -#endif - - -/*------------------------------------------------*/ -// Listener management APIs - -typedef WCHAR WTSLISTENERNAMEW[WTS_LISTENER_NAME_LENGTH + 1 ]; -typedef WTSLISTENERNAMEW *PWTSLISTENERNAMEW; -typedef CHAR WTSLISTENERNAMEA[WTS_LISTENER_NAME_LENGTH + 1 ]; -typedef WTSLISTENERNAMEA *PWTSLISTENERNAMEA; - -#ifdef UNICODE -#define WTSLISTENERNAME WTSLISTENERNAMEW -#define PWTSLISTENERNAME PWTSLISTENERNAMEW -#else -#define WTSLISTENERNAME WTSLISTENERNAMEA -#define PWTSLISTENERNAME PWTSLISTENERNAMEW -#endif - -BOOL WINPR_API -WTSEnumerateListenersW ( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - PWTSLISTENERNAMEW pListeners, - DWORD* pCount -); - -BOOL WINPR_API -WTSEnumerateListenersA ( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - PWTSLISTENERNAMEA pListeners, - DWORD* pCount -); - -#ifdef UNICODE -#define WTSEnumerateListeners WTSEnumerateListenersW -#else -#define WTSEnumerateListeners WTSEnumerateListenersA -#endif - -/*------------------------------------------------*/ -// Listener Config, used by WTSQueryListenerConfig and WTSCreateListener - -typedef struct _WTSLISTENERCONFIGW{ - ULONG version; - ULONG fEnableListener; - ULONG MaxConnectionCount; - ULONG fPromptForPassword; - ULONG fInheritColorDepth; - ULONG ColorDepth; - ULONG fInheritBrokenTimeoutSettings; - ULONG BrokenTimeoutSettings; - - ULONG fDisablePrinterRedirection; - ULONG fDisableDriveRedirection; - ULONG fDisableComPortRedirection; - ULONG fDisableLPTPortRedirection; - ULONG fDisableClipboardRedirection; - ULONG fDisableAudioRedirection; - ULONG fDisablePNPRedirection; - ULONG fDisableDefaultMainClientPrinter; - - ULONG LanAdapter; - ULONG PortNumber; - - ULONG fInheritShadowSettings; - ULONG ShadowSettings; - - ULONG TimeoutSettingsConnection; - ULONG TimeoutSettingsDisconnection; - ULONG TimeoutSettingsIdle; - - ULONG SecurityLayer; - ULONG MinEncryptionLevel; - ULONG UserAuthentication; - - WCHAR Comment[ WTS_COMMENT_LENGTH + 1 ]; - WCHAR LogonUserName[USERNAME_LENGTH + 1 ]; - WCHAR LogonDomain[DOMAIN_LENGTH + 1 ]; - - WCHAR WorkDirectory[ MAX_PATH + 1 ]; - WCHAR InitialProgram[ MAX_PATH + 1 ]; -} WTSLISTENERCONFIGW, *PWTSLISTENERCONFIGW; - -typedef struct _WTSLISTENERCONFIGA{ - ULONG version; - ULONG fEnableListener; - ULONG MaxConnectionCount; - ULONG fPromptForPassword; - ULONG fInheritColorDepth; - ULONG ColorDepth; - ULONG fInheritBrokenTimeoutSettings; - ULONG BrokenTimeoutSettings; - - ULONG fDisablePrinterRedirection; - ULONG fDisableDriveRedirection; - ULONG fDisableComPortRedirection; - ULONG fDisableLPTPortRedirection; - ULONG fDisableClipboardRedirection; - ULONG fDisableAudioRedirection; - ULONG fDisablePNPRedirection; - ULONG fDisableDefaultMainClientPrinter; - - ULONG LanAdapter; - ULONG PortNumber; - - ULONG fInheritShadowSettings; - ULONG ShadowSettings; - - ULONG TimeoutSettingsConnection; - ULONG TimeoutSettingsDisconnection; - ULONG TimeoutSettingsIdle; - - ULONG SecurityLayer; - ULONG MinEncryptionLevel; - ULONG UserAuthentication; - - CHAR Comment[ WTS_COMMENT_LENGTH + 1 ]; - CHAR LogonUserName[USERNAME_LENGTH + 1 ]; - CHAR LogonDomain[DOMAIN_LENGTH + 1 ]; - - CHAR WorkDirectory[ MAX_PATH + 1 ]; - CHAR InitialProgram[ MAX_PATH + 1 ]; -} WTSLISTENERCONFIGA, *PWTSLISTENERCONFIGA; - -BOOL WINPR_API WTSQueryListenerConfigW ( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - LPWSTR pListenerName, - PWTSLISTENERCONFIGW pBuffer -); - -BOOL WINPR_API WTSQueryListenerConfigA ( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - LPSTR pListenerName, - PWTSLISTENERCONFIGA pBuffer -); - -BOOL WINPR_API WTSCreateListenerW ( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - LPWSTR pListenerName, - PWTSLISTENERCONFIGW pBuffer, - DWORD flag -); - -BOOL WINPR_API WTSCreateListenerA ( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - LPSTR pListenerName, - PWTSLISTENERCONFIGA pBuffer, - DWORD flag -); - -BOOL WINPR_API WTSSetListenerSecurityW( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - LPWSTR pListenerName, - SECURITY_INFORMATION SecurityInformation, - PSECURITY_DESCRIPTOR pSecurityDescriptor); - -BOOL WINPR_API WTSSetListenerSecurityA( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - LPSTR pListenerName, - SECURITY_INFORMATION SecurityInformation, - PSECURITY_DESCRIPTOR pSecurityDescriptor); - -BOOL WINPR_API WTSGetListenerSecurityW( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - LPWSTR pListenerName, - SECURITY_INFORMATION SecurityInformation, - PSECURITY_DESCRIPTOR pSecurityDescriptor, - DWORD nLength, - LPDWORD lpnLengthNeeded); - - -BOOL WINPR_API WTSGetListenerSecurityA( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - LPSTR pListenerName, - SECURITY_INFORMATION SecurityInformation, - PSECURITY_DESCRIPTOR pSecurityDescriptor, - DWORD nLength, - LPDWORD lpnLengthNeeded); - -#ifdef UNICODE -#define WTSLISTENERCONFIG WTSLISTENERCONFIGW -#define PWTSLISTENERCONFIG PWTSLISTENERCONFIGW -#define WTSQueryListenerConfig WTSQueryListenerConfigW -#define WTSCreateListener WTSCreateListenerW -#define WTSSetListenerSecurity WTSSetListenerSecurityW -#define WTSGetListenerSecurity WTSGetListenerSecurityW -#else -#define WTSLISTENERCONFIG WTSLISTENERCONFIGA -#define PWTSLISTENERCONFIG PWTSLISTENERCONFIGA -#define WTSQueryListenerConfig WTSQueryListenerConfigA -#define WTSCreateListener WTSCreateListenerA -#define WTSSetListenerSecurity WTSSetListenerSecurityA -#define WTSGetListenerSecurity WTSGetListenerSecurityA -#endif - -#ifdef __cplusplus -} -#endif - -#endif - -#endif - - diff --git a/winpr/libwinpr/wtsapi/CMakeLists.txt b/winpr/libwinpr/wtsapi/CMakeLists.txt deleted file mode 100644 index 19337721a..000000000 --- a/winpr/libwinpr/wtsapi/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -# WinPR: Windows Portable Runtime -# libwinpr-winhttp cmake build script -# -# Copyright 2012 Marc-Andre Moreau -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set(MODULE_NAME "winpr-wtsapi") -set(MODULE_PREFIX "WINPR_WTSAPI") - -set(${MODULE_PREFIX}_SRCS - wtsapi.c) - -add_complex_library(MODULE ${MODULE_NAME} TYPE "OBJECT" - MONOLITHIC ${MONOLITHIC_BUILD} - SOURCES ${${MODULE_PREFIX}_SRCS}) - -set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${WINPR_VERSION_FULL} SOVERSION ${WINPR_VERSION} PREFIX "lib") - -if(MONOLITHIC_BUILD) - -else() - install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}) -endif() - -set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "WinPR") diff --git a/winpr/libwinpr/wtsapi/ModuleOptions.cmake b/winpr/libwinpr/wtsapi/ModuleOptions.cmake deleted file mode 100644 index e0fa34d1b..000000000 --- a/winpr/libwinpr/wtsapi/ModuleOptions.cmake +++ /dev/null @@ -1,9 +0,0 @@ - -set(MINWIN_LAYER "0") -set(MINWIN_GROUP "none") -set(MINWIN_MAJOR_VERSION "0") -set(MINWIN_MINOR_VERSION "0") -set(MINWIN_SHORT_NAME "winhttp") -set(MINWIN_LONG_NAME "Windows HTTP (WinHTTP)") -set(MODULE_LIBRARY_NAME "${MINWIN_SHORT_NAME}") - diff --git a/winpr/libwinpr/wtsapi/wtsapi.c b/winpr/libwinpr/wtsapi/wtsapi.c deleted file mode 100644 index 0efd97d42..000000000 --- a/winpr/libwinpr/wtsapi/wtsapi.c +++ /dev/null @@ -1,506 +0,0 @@ -/** - * WinPR: Windows Portable Runtime - * Windows Terminal Services API (WTSAPI) - * - * Copyright 2013 Mike McDonald - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -BOOL WINPR_API ProcessIdToSessionId( - DWORD ProcessId, - DWORD *pSessionId -) -{ - return FALSE; -} - -VOID WINPR_API WTSCloseServer( - HANDLE hServer -) -{ -} - -BOOL WINPR_API WTSConnectSession( - ULONG LoginId, - ULONG TargetLogonId, - PSTR pPassword, - BOOL bWait -) -{ - return FALSE; -} - -BOOL WINPR_API WTSCreateListener( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - LPTSTR pListenerName, - PWTSLISTENERCONFIG pBuffer, - DWORD flag -) -{ - return FALSE; -} - -BOOL WINPR_API WTSDisconnectSession( - HANDLE hServer, - DWORD SessionId, - BOOL bWait -) -{ - return FALSE; -} - -BOOL WINPR_API WTSEnableChildSessions( - BOOL bEnable -) -{ - return FALSE; -} - -BOOL WINPR_API WTSEnumerateListenersA( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - PWTSLISTENERNAMEA pListeners, - DWORD *pCount -) -{ - return FALSE; -} - -BOOL WINPR_API WTSEnumerateListenersW( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - PWTSLISTENERNAMEW pListeners, - DWORD *pCount -) -{ - return FALSE; -} - -BOOL WINPR_API WTSEnumerateProcesses( - HANDLE hServer, - DWORD Reserved, - DWORD Version, - PWTS_PROCESS_INFO *ppProcessInfo, - DWORD *pCount -) -{ - return FALSE; -} - -BOOL WINPR_API WTSEnumerateProcessesEx( - HANDLE hServer, - DWORD *pLevel, - DWORD SessionId, - LPTSTR *ppProcessInfo, - DWORD *pCount -) -{ - return FALSE; -} - -BOOL WINPR_API WTSEnumerateServers( - LPTSTR pDomainName, - DWORD Reserved, - DWORD Version, - PWTS_SERVER_INFO *ppServerInfo, - DWORD *pCount -) -{ - return FALSE; -} - -BOOL WINPR_API WTSEnumerateSessionsA( - HANDLE hServer, - DWORD Reserved, - DWORD Version, - PWTS_SESSION_INFOA *ppSessionInfo, - DWORD *pCount -) -{ - return FALSE; -} - -BOOL WINPR_API WTSEnumerateSessionsW( - HANDLE hServer, - DWORD Reserved, - DWORD Version, - PWTS_SESSION_INFOW *ppSessionInfo, - DWORD *pCount -) -{ - return FALSE; -} - -BOOL WINPR_API WTSEnumerateSessionsExA( - HANDLE hServer, - DWORD *pLevel, - DWORD Filter, - PWTS_SESSION_INFO_1A *ppSessionInfo, - DWORD *pCount -) -{ - return FALSE; -} - -BOOL WINPR_API WTSEnumerateSessionsExW( - HANDLE hServer, - DWORD *pLevel, - DWORD Filter, - PWTS_SESSION_INFO_1W *ppSessionInfo, - DWORD *pCount -) -{ - return FALSE; -} - -VOID WTSFreeMemory( - PVOID pMemory -) -{ -} - -BOOL WINPR_API WTSFreeMemoryEx( - WTS_TYPE_CLASS WTSTypeClass, - PVOID pMemory, - ULONG NumberOfEntries -) -{ - return FALSE; -} - -DWORD WINPR_API WTSGetActiveConsoleSessionId() -{ - return 0; -} - -BOOL WINPR_API WTSGetChildSessionId( - DWORD *pSessionId -) -{ - return FALSE; -} - -BOOL WINPR_API WTSGetListenerSecurityA( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - LPSTR pListenerName, - SECURITY_INFORMATION SecurityInformation, - PSECURITY_DESCRIPTOR pSecurityDescriptor, - DWORD nLength, - LPDWORD lpnLengthNeeded -) -{ - return FALSE; -} - -BOOL WINPR_API WTSGetListenerSecurityW( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - LPWSTR pListenerName, - SECURITY_INFORMATION SecurityInformation, - PSECURITY_DESCRIPTOR pSecurityDescriptor, - DWORD nLength, - LPDWORD lpnLengthNeeded -) -{ - return FALSE; -} - -BOOL WINPR_API WTSIsChildSessionsEnabled( - BOOL *pbEnabled -) -{ - return FALSE; -} - -BOOL WINPR_API WTSLogoffSession( - HANDLE hServer, - DWORD SessionId, - BOOL bWait -) -{ - return FALSE; -} - -HANDLE WINPR_API WTSOpenServer( - LPTSTR pServerName -) -{ - return NULL; -} - -HANDLE WINPR_API WTSOpenServerExA( - LPSTR pServerName -) -{ - return NULL; -} - -HANDLE WINPR_API WTSOpenServerExW( - LPWSTR pServerName -) -{ - return NULL; -} - -BOOL WINPR_API WTSQueryListenerConfig( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - LPTSTR pListenerName, - PWTSLISTENERCONFIG pBuffer -) -{ - return FALSE; -} - -BOOL WINPR_API WTSQuerySessionInformation( - HANDLE hServer, - DWORD SessionId, - WTS_INFO_CLASS WTSInfoClass, - LPTSTR *ppBuffer, - DWORD *pBytesReturned -) -{ - return FALSE; -} - -BOOL WINPR_API WTSQueryUserConfig( - LPTSTR pServerName, - LPTSTR pUserName, - WTS_CONFIG_CLASS WTSConfigClass, - LPTSTR *ppBuffer, - DWORD *pBytesReturned -) -{ - return FALSE; -} - -BOOL WINPR_API WTSQueryUserToken( - DWORD SessionId, - PHANDLE phToken -) -{ - return FALSE; -} - -BOOL WINPR_API WTSRegisterSessionNotification( - HWND hWnd, - DWORD dwFlags -) -{ - return FALSE; -} - -BOOL WINPR_API WTSRegisterSessionNotificationEx( - HANDLE hServer, - HWND hWnd, - DWORD dwFlags -) -{ - return FALSE; -} - -BOOL WINPR_API WTSSendMessage( - HANDLE hServer, - DWORD SessionId, - LPTSTR pTitle, - DWORD TitleLength, - LPTSTR pMessage, - DWORD MessageLength, - DWORD Style, - DWORD Timeout, - DWORD *pResponse, - BOOL bWait -) -{ - return FALSE; -} - -BOOL WINPR_API WTSSetListenerSecurity( - HANDLE hServer, - PVOID pReserved, - DWORD Reserved, - LPTSTR pListenerName, - SECURITY_INFORMATION SecurityInformation, - PSECURITY_DESCRIPTOR pSecurityDescriptor -) -{ - return FALSE; -} - -BOOL WINPR_API WTSSetUserConfig( - LPTSTR pServerName, - LPTSTR pUserName, - WTS_CONFIG_CLASS WTSConfigClass, - LPTSTR pBuffer, - DWORD DataLength -) -{ - return FALSE; -} - -BOOL WINPR_API WTSShutdownSystem( - HANDLE hServer, - DWORD ShutdownFlag -) -{ - return FALSE; -} - -BOOL WINPR_API WTSStartRemoteControlSession( - LPTSTR pTargetServerName, - ULONG TargetLogonId, - BYTE HotkeyVk, - USHORT HotKeyModifiers -) -{ - return FALSE; -} - -BOOL WINPR_API WTSStopRemoteControlSession( - ULONG LogonId -) -{ - return FALSE; -} - -BOOL WINPR_API WTSTerminateProcess( - HANDLE hServer, - DWORD ProcessId, - DWORD ExitCode -) -{ - return FALSE; -} - -BOOL WINPR_API WTSUnregisterSessionNotification( - HWND hWnd -) -{ - return FALSE; -} - -BOOL WINPR_API WTSUnregisterSessionNotificationEx( - HANDLE hServer, - HWND hWnd -) -{ - return FALSE; -} - -BOOL WINPR_API WTSVirtualChannelClose( - HANDLE hChannelHandle -) -{ - return FALSE; -} - -BOOL WINPR_API WTSVirtualChannelOpenA( - HANDLE hServer, - DWORD SessionId, - LPSTR pVirtualName -) -{ - return FALSE; -} - -BOOL WINPR_API WTSVirtualChannelOpenW( - HANDLE hServer, - DWORD SessionId, - LPWSTR pVirtualName -) -{ - return FALSE; -} - -BOOL WINPR_API WTSVirtualChannelOpenExA( - DWORD SessionId, - LPSTR pVirtualName, - DWORD Flags -) -{ - return FALSE; -} - -BOOL WINPR_API WTSVirtualChannelOpenExW( - DWORD SessionId, - LPWSTR pVirtualName, - DWORD Flags -) -{ - return FALSE; -} - -BOOL WINPR_API WTSVirtualChannelPurgeInput( - HANDLE hChannelHandle -) -{ - return FALSE; -} - -BOOL WINPR_API WTSVirtualChannelPurgeOutput( - HANDLE hChannelHandle -) -{ - return FALSE; -} - -BOOL WINPR_API WTSVirtualChannelQuery( - HANDLE hChannelHandle, - WTS_VIRTUAL_CLASS WTSVirtualClass, - PVOID *ppBuffer, - DWORD *pBytesReturned -) -{ - return FALSE; -} - -BOOL WINPR_API WTSVirtualChannelRead( - HANDLE hChannelHandle, - ULONG TimeOut, - PCHAR Buffer, - ULONG BufferSize, - PULONG pBytesRead -) -{ - return FALSE; -} - -BOOL WINPR_API WTSVirtualChannelWrite( - HANDLE hChannelHandle, - PCHAR Buffer, - ULONG BufferSize, - PULONG pBytesWritten -) -{ - return FALSE; -} - -BOOL WINPR_API WTSWaitSystemEvent( - HANDLE hServer, - DWORD EventMask, - DWORD *pEventFlags -) -{ - return FALSE; -}