Removed WTSAPI files from winpr
authorMike McDonald <mikem@nogginware.com>
Thu, 29 Aug 2013 20:08:15 +0000 (16:08 -0400)
committerMike McDonald <mikem@nogginware.com>
Thu, 29 Aug 2013 20:08:15 +0000 (16:08 -0400)
winpr/include/winpr/wtsapi.h [deleted file]
winpr/libwinpr/wtsapi/CMakeLists.txt [deleted file]
winpr/libwinpr/wtsapi/ModuleOptions.cmake [deleted file]
winpr/libwinpr/wtsapi/wtsapi.c [deleted file]

diff --git a/winpr/include/winpr/wtsapi.h b/winpr/include/winpr/wtsapi.h
deleted file mode 100644 (file)
index b07006b..0000000
+++ /dev/null
@@ -1,1627 +0,0 @@
-/**
- * WinPR: Windows Portable Runtime
- * Windows Terminal Services API (WTSAPI)
- *
- * Copyright 2013 Mike McDonald <mikem@nogginware.com>
- *
- * 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 <winpr/config.h>
-
-#include <winpr/winpr.h>
-#include <winpr/wtypes.h>
-#include <winpr/windows.h>
-#include <winpr/file.h>
-
-#ifdef _WIN32
-
-#include <wtsapi32.h>
-
-#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 (file)
index 1933772..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-# WinPR: Windows Portable Runtime
-# libwinpr-winhttp cmake build script
-#
-# Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
-#
-# 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 (file)
index e0fa34d..0000000
+++ /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 (file)
index 0efd97d..0000000
+++ /dev/null
@@ -1,506 +0,0 @@
-/**
- * WinPR: Windows Portable Runtime
- * Windows Terminal Services API (WTSAPI)
- *
- * Copyright 2013 Mike McDonald <mikem@nogginware.com>
- *
- * 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 <winpr/wtsapi.h>
-
-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;
-}