This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/h/nt/wtsapi32.h

888 lines
34 KiB
C
Raw Normal View History

/*
* wtsapi32.h Windows Terminal Server (WTS) functions
*
* =========================================================================
*
* Open Watcom Project
*
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
*
* This file is automatically generated. Do not edit directly.
*
* =========================================================================
*/
#ifndef _INC_WTSAPI
#define _INC_WTSAPI
#ifndef _ENABLE_AUTODEPEND
#pragma read_only_file;
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Special values */
#define WTS_CURRENT_SERVER NULL
#define WTS_CURRENT_SERVER_HANDLE NULL
#define WTS_CURRENT_SERVER_NAME NULL
#define WTS_CURRENT_SESSION 0xFFFFFFFFL
#define WTS_ANY_SESSION 0xFFFFFFFEL
/* WTS shutdown flags */
#define WTS_WSD_LOGOFF 0x00000001L
#define WTS_WSD_SHUTDOWN 0x00000002L
#define WTS_WSD_REBOOT 0x00000004L
#define WTS_WSD_POWEROFF 0x00000008L
#define WTS_WSD_FASTREBOOT 0x00000010L
/* Maximum string lengths */
#ifndef __HYDRIX_H__
#define USERNAME_LENGTH 20
#define CLIENTNAME_LENGTH 20
#define CLIENTADDRESS_LENGTH 30
#endif
#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
#define PRODUCTINFO_COMPANYNAME_LENGTH 256
#define PRODUCTINFO_PRODUCTID_LENGTH 4
#define VALIDATIONINFORMATION_LICENSE_LENGTH 16384
#define VALIDATIONINFORMATION_HARDWAREID_LENGTH 20
/* WTSCreateListener() flags */
#define WTS_LISTENER_CREATE 0x00000001L
#define WTS_LISTENER_UPDATE 0x00000002L
/* WTS access rights */
#define WTS_SECURITY_QUERY_INFORMATION 0x0001L
#define WTS_SECURITY_SET_INFORMATION 0x0002L
#define WTS_SECURITY_RESET 0x0004L
#define WTS_SECURITY_VIRTUAL_CHANNELS 0x0008L
#define WTS_SECURITY_REMOTE_CONTROL 0x0010L
#define WTS_SECURITY_LOGON 0x0020L
#define WTS_SECURITY_LOGOFF 0x0040L
#define WTS_SECURITY_MESSAGE 0x0080L
#define WTS_SECURITY_CONNECT 0x0100L
#define WTS_SECURITY_DISCONNECT 0x0200L
#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 protocol types */
#define WTS_PROTOCOL_TYPE_CONSOLE 0
#define WTS_PROTOCOL_TYPE_ICA 1
#define WTS_PROTOCOL_TYPE_RDP 2
/* WTS session state flags */
#define WTS_SESSIONSTATE_UNKNOWN 0xFFFFFFFFL
#define WTS_SESSIONSTATE_LOCK 0x00000000L
#define WTS_SESSIONSTATE_UNLOCK 0x00000001L
/* WTS event flags */
#define WTS_EVENT_NONE 0x00000000L
#define WTS_EVENT_CREATE 0x00000001L
#define WTS_EVENT_DELETE 0x00000002L
#define WTS_EVENT_RENAME 0x00000004L
#define WTS_EVENT_CONNECT 0x00000008L
#define WTS_EVENT_DISCONNECT 0x00000010L
#define WTS_EVENT_LOGON 0x00000020L
#define WTS_EVENT_LOGOFF 0x00000040L
#define WTS_EVENT_STATECHANGE 0x00000080L
#define WTS_EVENT_LICENSE 0x00000100L
#define WTS_EVENT_ALL 0x7FFFFFFFL
#define WTS_EVENT_FLUSH 0x80000000L
/* WTSStartRemoteControlSession() hotkey modifiers */
#define REMOTECONTROL_KBDSHIFT_HOTKEY 0x0001
#define REMOTECONTROL_KBDCTRL_HOTKEY 0x0002
#define REMOTECONTROL_KBDALT_HOTKEY 0x0004
/* WTSVirtualChannelOpenEx() flags */
#define WTS_CHANNEL_OPTION_DYNAMIC 0x00000001L
#define WTS_CHANNEL_OPTION_DYNAMIC_PRI_LOW 0x00000000L
#define WTS_CHANNEL_OPTION_DYNAMIC_PRI_MED 0x00000002L
#define WTS_CHANNEL_OPTION_DYNAMIC_PRI_HIGH 0x00000004L
#define WTS_CHANNEL_OPTION_DYNAMIC_PRI_REAL 0x00000006L
#define WTS_CHANNEL_OPTION_DYNAMIC_NO_COMPRESS 0x00000008L
/* Console notification flags */
#define NOTIFY_FOR_THIS_SESSION 0
#define NOTIFY_FOR_ALL_SESSIONS 1
/* WTS process information levels */
#define WTS_PROCESS_INFO_LEVEL_0 0L
#define WTS_PROCESS_INFO_LEVEL_1 1L
/* WTS connect state classes */
typedef enum _WTS_CONNECTSTATE_CLASS {
WTSActive = 0,
WTSConnected = 1,
WTSConnectQuery = 2,
WTSShadow = 3,
WTSDisconnected = 4,
WTSIdle = 5,
WTSListen = 6,
WTSReset = 7,
WTSDown = 8,
WTSInit = 9
} WTS_CONNECTSTATE_CLASS;
/* WTS server information */
typedef struct _WTS_SERVER_INFOA {
LPSTR pServerName;
} WTS_SERVER_INFOA;
typedef WTS_SERVER_INFOA *PWTS_SERVER_INFOA;
typedef struct _WTS_SERVER_INFOW {
LPWSTR pServerName;
} WTS_SERVER_INFOW;
typedef WTS_SERVER_INFOW *PWTS_SERVER_INFOW;
#ifdef UNICODE
typedef WTS_SERVER_INFOW WTS_SERVER_INFO;
typedef PWTS_SERVER_INFOW PWTS_SERVER_INFO;
#else
typedef WTS_SERVER_INFOA WTS_SERVER_INFO;
typedef PWTS_SERVER_INFOA PWTS_SERVER_INFO;
#endif
/* WTS session information */
typedef struct _WTS_SESSION_INFOA {
DWORD SessionId;
LPSTR pWinStationName;
WTS_CONNECTSTATE_CLASS State;
} WTS_SESSION_INFOA;
typedef WTS_SESSION_INFOA *PWTS_SESSION_INFOA;
typedef struct _WTS_SESSION_INFOW {
DWORD SessionId;
LPWSTR pWinStationName;
WTS_CONNECTSTATE_CLASS State;
} WTS_SESSION_INFOW;
typedef WTS_SESSION_INFOW *PWTS_SESSION_INFOW;
#ifdef UNICODE
typedef WTS_SESSION_INFOW WTS_SESSION_INFO;
typedef PWTS_SESSION_INFOW PWTS_SESSION_INFO;
#else
typedef WTS_SESSION_INFOA WTS_SESSION_INFO;
typedef PWTS_SESSION_INFOA PWTS_SESSION_INFO;
#endif
/* WTS session information (level 1) */
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;
typedef WTS_SESSION_INFO_1A *PWTS_SESSION_INFO_1A;
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;
typedef WTS_SESSION_INFO_1W *PWTS_SESSION_INFO_1W;
#ifdef UNICODE
typedef WTS_SESSION_INFO_1W WTS_SESSION_INFO_1;
typedef PWTS_SESSION_INFO_1W PWTS_SESSION_INFO_1;
#else
typedef WTS_SESSION_INFO_1A WTS_SESSION_INFO_1;
typedef PWTS_SESSION_INFO_1A PWTS_SESSION_INFO_1;
#endif
/* WTS process information */
typedef struct _WTS_PROCESS_INFOA {
DWORD SessionId;
DWORD ProcessId;
LPSTR pProcessName;
PSID pUserSid;
} WTS_PROCESS_INFOA;
typedef WTS_PROCESS_INFOA *PWTS_PROCESS_INFOA;
typedef struct _WTS_PROCESS_INFOW {
DWORD SessionId;
DWORD ProcessId;
LPWSTR pProcessName;
PSID pUserSid;
} WTS_PROCESS_INFOW;
typedef WTS_PROCESS_INFOW *PWTS_PROCESS_INFOW;
#ifdef UNICODE
typedef WTS_PROCESS_INFOW WTS_PROCESS_INFO;
typedef PWTS_PROCESS_INFOW PWTS_PROCESS_INFO;
#else
typedef WTS_PROCESS_INFOA WTS_PROCESS_INFO;
typedef PWTS_PROCESS_INFOA PWTS_PROCESS_INFO;
#endif
/* WTS information classes */
typedef enum _WTS_INFO_CLASS {
WTSInitialProgram = 0,
WTSApplicationName = 1,
WTSWorkingDirectory = 2,
WTSOEMId = 3,
WTSSessionId = 4,
WTSUserName = 5,
WTSWinStationName = 6,
WTSDomainName = 7,
WTSConnectState = 8,
WTSClientBuildNumber = 9,
WTSClientName = 10,
WTSClientDirectory = 11,
WTSClientProductId = 12,
WTSClientHardwareId = 13,
WTSClientAddress = 14,
WTSClientDisplay = 15,
WTSClientProtocolType = 16,
WTSIdleTime = 17,
WTSLogonTime = 18,
WTSIncomingBytes = 19,
WTSOutgoingBytes = 20,
WTSIncomingFrames = 21,
WTSOutgoingFrames = 22,
WTSClientInfo = 23,
WTSSessionInfo = 24,
WTSSessionInfoEx = 25,
WTSConfigInfo = 26,
WTSValidationInfo = 27,
WTSSessionAddressV4 = 28,
WTSIsRemoteSession = 29
} WTS_INFO_CLASS;
/* WTS configuration information */
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;
typedef WTSCONFIGINFOA *PWTSCONFIGINFOA;
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;
typedef WTSCONFIGINFOW *PWTSCONFIGINFOW;
#ifdef UNICODE
typedef WTSCONFIGINFOW WTSCONFIGINFO;
typedef PWTSCONFIGINFOW PWTSCONFIGINFO;
#else
typedef WTSCONFIGINFOA WTSCONFIGINFO;
typedef PWTSCONFIGINFOA PWTSCONFIGINFO;
#endif
/* WTS information */
typedef struct _WTSINFOA {
WTS_CONNECTSTATE_CLASS State;
DWORD SessionId;
DWORD IncomingBytes;
DWORD OutgoingBytes;
DWORD IncomingFrames;
DWORD OutgoingFrames;
DWORD IncomingCompressedBytes;
DWORD OutgoingCompressedBytes;
CHAR WinStationName[WINSTATIONNAME_LENGTH];
CHAR Domain[DOMAIN_LENGTH];
CHAR UserName[USERNAME_LENGTH + 1];
LARGE_INTEGER ConnectTime;
LARGE_INTEGER DisconnectTime;
LARGE_INTEGER LastInputTime;
LARGE_INTEGER LogonTime;
LARGE_INTEGER CurrentTime;
} WTSINFOA;
typedef WTSINFOA *PWTSINFOA;
typedef struct _WTSINFOW {
WTS_CONNECTSTATE_CLASS State;
DWORD SessionId;
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];
LARGE_INTEGER ConnectTime;
LARGE_INTEGER DisconnectTime;
LARGE_INTEGER LastInputTime;
LARGE_INTEGER LogonTime;
LARGE_INTEGER CurrentTime;
} WTSINFOW;
typedef WTSINFOW *PWTSINFOW;
#ifdef UNICODE
typedef WTSINFOW WTSINFO;
typedef PWTSINFOW PWTSINFO;
#else
typedef WTSINFOA WTSINFO;
typedef PWTSINFOA PWTSINFO;
#endif
/* WTS information (extended version) (level 1) */
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;
typedef WTSINFOEX_LEVEL1_A *PWTSINFOEX_LEVEL1_A;
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;
typedef WTSINFOEX_LEVEL1_W *PWTSINFOEX_LEVEL1_W;
#ifdef UNICODE
typedef WTSINFOEX_LEVEL1_W WTSINFOEX_LEVEL1;
typedef PWTSINFOEX_LEVEL1_W PWTSINFOEX_LEVEL1;
#else
typedef WTSINFOEX_LEVEL1_A WTSINFOEX_LEVEL1;
typedef PWTSINFOEX_LEVEL1_A PWTSINFOEX_LEVEL1;
#endif
/* WTS information (extended version) (all levels) */
typedef union _WTSINFOEX_LEVEL_A {
WTSINFOEX_LEVEL1_A WTSInfoExLevel1;
} WTSINFOEX_LEVEL_A;
typedef WTSINFOEX_LEVEL_A *PWTSINFOEX_LEVEL_A;
typedef union _WTSINFOEX_LEVEL_W {
WTSINFOEX_LEVEL1_W WTSInfoExLevel1;
} WTSINFOEX_LEVEL_W;
typedef WTSINFOEX_LEVEL_W *PWTSINFOEX_LEVEL_W;
#ifdef UNICODE
typedef WTSINFOEX_LEVEL_W WTSINFOEX_LEVEL;
typedef PWTSINFOEX_LEVEL_W PWTSINFOEX_LEVEL;
#else
typedef WTSINFOEX_LEVEL_A WTSINFOEX_LEVEL;
typedef PWTSINFOEX_LEVEL_A PWTSINFOEX_LEVEL;
#endif
/* WTS information (extended version) */
typedef struct _WTSINFOEXA {
DWORD Level;
WTSINFOEX_LEVEL_A Data;
} WTSINFOEXA;
typedef WTSINFOEXA *PWTSINFOEXA;
typedef struct _WTSINFOEXW {
DWORD Level;
WTSINFOEX_LEVEL_W Data;
} WTSINFOEXW;
typedef WTSINFOEXW *PWTSINFOEXW;
#ifdef UNICODE
typedef WTSINFOEXW WTSINFOEX;
typedef PWTSINFOEXW PWTSINFOEX;
#else
typedef WTSINFOEXA WTSINFOEX;
typedef PWTSINFOEXA PWTSINFOEX;
#endif
/* 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;
ULONG ClientAddressFamily;
USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1];
USHORT HRes;
USHORT VRes;
USHORT ColorDepth;
CHAR ClientDirectory[MAX_PATH + 1];
ULONG ClientBuildNumber;
ULONG ClientHardwareId;
USHORT ClientProductId;
USHORT OutBufCountHost;
USHORT OutBufCountClient;
USHORT OutBufLength;
CHAR DeviceId[MAX_PATH + 1];
} WTSCLIENTA;
typedef WTSCLIENTA *PWTSCLIENTA;
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;
ULONG ClientAddressFamily;
USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1];
USHORT HRes;
USHORT VRes;
USHORT ColorDepth;
WCHAR ClientDirectory[MAX_PATH + 1];
ULONG ClientBuildNumber;
ULONG ClientHardwareId;
USHORT ClientProductId;
USHORT OutBufCountHost;
USHORT OutBufCountClient;
USHORT OutBufLength;
WCHAR DeviceId[MAX_PATH + 1];
} WTSCLIENTW;
typedef WTSCLIENTW *PWTSCLIENTW;
#ifdef UNICODE
typedef WTSCLIENTW WTSCLIENT;
typedef PWTSCLIENTW PWTSCLIENT;
#else
typedef WTSCLIENTA WTSCLIENT;
typedef PWTSCLIENTA PWTSCLIENT;
#endif
/* WTS product information */
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;
#ifdef UNICODE
typedef PRODUCT_INFOW PRODUCT_INFO;
#else
typedef PRODUCT_INFOA PRODUCT_INFO;
#endif
/* WTS validation information */
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;
typedef 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;
typedef WTS_VALIDATION_INFORMATIONW *PWTS_VALIDATION_INFORMATIONW;
#ifdef UNICODE
typedef WTS_VALIDATION_INFORMATIONW WTS_VALIDATION_INFORMATION;
typedef PWTS_VALIDATION_INFORMATIONW PWTS_VALIDATION_INFORMATION;
#else
typedef WTS_VALIDATION_INFORMATIONA WTS_VALIDATION_INFORMATION;
typedef PWTS_VALIDATION_INFORMATIONA PWTS_VALIDATION_INFORMATION;
#endif
/* WTS client address information */
typedef struct _WTS_CLIENT_ADDRESS {
DWORD AddressFamily;
BYTE Address[20];
} WTS_CLIENT_ADDRESS;
typedef WTS_CLIENT_ADDRESS *PWTS_CLIENT_ADDRESS;
/* WTS client display information */
typedef struct _WTS_CLIENT_DISPLAY {
DWORD HorizontalResolution;
DWORD VerticalResolution;
DWORD ColorDepth;
} WTS_CLIENT_DISPLAY;
typedef WTS_CLIENT_DISPLAY *PWTS_CLIENT_DISPLAY;
/* WTS configuration classes */
typedef enum _WTS_CONFIG_CLASS {
WTSUserConfigInitialProgram = 0,
WTSUserConfigWorkingDirectory = 1,
WTSUserConfigfInheritInitialProgram = 2,
WTSUserConfigfAllowLogonTerminalServer = 3,
WTSUserConfigTimeoutSettingsConnections = 4,
WTSUserConfigTimeoutSettingsDisconnections = 5,
WTSUserConfigTimeoutSettingsIdle = 6,
WTSUserConfigfDeviceClientDrives = 7,
WTSUserConfigfDeviceClientPrinters = 8,
WTSUserConfigfDeviceClientDefaultPrinter = 9,
WTSUserConfigBrokenTimeoutSettings = 10,
WTSUserConfigReconnectSettings = 11,
WTSUserConfigModemCallbackSettings = 12,
WTSUserConfigModemCallbackPhoneNumber = 13,
WTSUserConfigShadowingSettings = 14,
WTSUserConfigTerminalServerProfilePath = 15,
WTSUserConfigTerminalServerHomeDir = 16,
WTSUserConfigTerminalServerHomeDirDrive = 17,
WTSUserConfigfTerminalServerRemoteHomeDir = 18,
WTSUserConfigUser = 19
} WTS_CONFIG_CLASS;
/* WTS configuration sources */
typedef enum _WTS_CONFIG_SOURCE {
WTSUserConfigSourceSAM = 0
} WTS_CONFIG_SOURCE;
/* WTS user configuration */
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;
typedef 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;
typedef WTSUSERCONFIGW *PWTSUSERCONFIGW;
#ifdef UNICODE
typedef WTSUSERCONFIGW WTSUSERCONFIG;
typedef PWTSUSERCONFIGW PWTSUSERCONFIG;
#else
typedef WTSUSERCONFIGA WTSUSERCONFIG;
typedef PWTSUSERCONFIGA PWTSUSERCONFIG;
#endif
/* WTS virtual classes */
typedef enum _WTS_VIRTUAL_CLASS {
WTSVirtualClientData = 0,
WTSVirtualFileHandle = 1
} WTS_VIRTUAL_CLASS;
/* WTS session address */
typedef struct _WTS_SESSION_ADDRESS {
DWORD AddressFamily;
BYTE Address[20];
} WTS_SESSION_ADDRESS;
typedef WTS_SESSION_ADDRESS *PWTS_SESSION_ADDRESS;
/* WTS process information (extended version) */
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;
typedef WTS_PROCESS_INFO_EXA *PWTS_PROCESS_INFO_EXA;
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;
typedef WTS_PROCESS_INFO_EXW *PWTS_PROCESS_INFO_EXW;
#ifdef UNICODE
typedef WTS_PROCESS_INFO_EXW WTS_PROCESS_INFO_EX;
typedef PWTS_PROCESS_INFO_EXW PWTS_PROCESS_INFO_EX;
#else
typedef WTS_PROCESS_INFO_EXA WTS_PROCESS_INFO_EX;
typedef PWTS_PROCESS_INFO_EXA PWTS_PROCESS_INFO_EX;
#endif
/* WTS type classes */
typedef enum _WTS_TYPE_CLASS {
WTSTypeProcessInfoLevel0 = 0,
WTSTypeProcessInfoLevel1 = 1,
WTSTypeSessionInfoLevel1 = 2
} WTS_TYPE_CLASS;
/* WTS listener name */
typedef CHAR WTSLISTENERNAMEA[WTS_LISTENER_NAME_LENGTH + 1];
typedef WTSLISTENERNAMEA *PWTSLISTENERNAMEA;
typedef WCHAR WTSLISTENERNAMEW[WTS_LISTENER_NAME_LENGTH + 1];
typedef WTSLISTENERNAMEW *PWTSLISTENERNAMEW;
#ifdef UNICODE
typedef WTSLISTENERNAMEW WTSLISTENERNAME;
typedef PWTSLISTENERNAMEW PWTSLISTENERNAME;
#else
typedef WTSLISTENERNAMEA WTSLISTENERNAME;
typedef PWTSLISTENERNAMEA PWTSLISTENERNAME;
#endif
/* WTS listener configuration */
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;
typedef WTSLISTENERCONFIGA *PWTSLISTENERCONFIGA;
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;
typedef WTSLISTENERCONFIGW *PWTSLISTENERCONFIGW;
#ifdef UNICODE
typedef WTSLISTENERCONFIGW WTSLISTENERCONFIG;
typedef PWTSLISTENERCONFIGW PWTSLISTENERCONFIG;
#else
typedef WTSLISTENERCONFIGA WTSLISTENERCONFIG;
typedef PWTSLISTENERCONFIGA PWTSLISTENERCONFIG;
#endif
/* Functions in WTSAPI32.DLL */
VOID WINAPI WTSCloseServer( HANDLE );
BOOL WINAPI WTSConnectSessionA( ULONG, ULONG, PSTR, BOOL );
BOOL WINAPI WTSConnectSessionW( ULONG, ULONG, PWSTR, BOOL );
BOOL WINAPI WTSCreateListenerA( HANDLE, PVOID, DWORD, LPSTR, PWTSLISTENERCONFIGA, DWORD );
BOOL WINAPI WTSCreateListenerW( HANDLE, PVOID, DWORD, LPWSTR, PWTSLISTENERCONFIGW, DWORD );
BOOL WINAPI WTSDisconnectSession( HANDLE, DWORD, BOOL );
BOOL WINAPI WTSEnumerateListenersA( HANDLE, PVOID, DWORD, PWTSLISTENERNAMEA, DWORD * );
BOOL WINAPI WTSEnumerateListenersW( HANDLE, PVOID, DWORD, PWTSLISTENERNAMEW, DWORD * );
BOOL WINAPI WTSEnumerateProcessesA( HANDLE, DWORD, DWORD, PWTS_PROCESS_INFOA *, DWORD * );
BOOL WINAPI WTSEnumerateProcessesExA( HANDLE, DWORD *, DWORD, LPSTR *, DWORD * );
BOOL WINAPI WTSEnumerateProcessesExW( HANDLE, DWORD *, DWORD, LPWSTR *, DWORD * );
BOOL WINAPI WTSEnumerateProcessesW( HANDLE, DWORD, DWORD, PWTS_PROCESS_INFOW *, DWORD * );
BOOL WINAPI WTSEnumerateServersA( LPSTR, DWORD, DWORD, PWTS_SERVER_INFOA *, DWORD * );
BOOL WINAPI WTSEnumerateServersW( LPWSTR, DWORD, DWORD, PWTS_SERVER_INFOW *, DWORD * );
BOOL WINAPI WTSEnumerateSessionsA( HANDLE, DWORD, DWORD, PWTS_SESSION_INFOA *, DWORD * );
BOOL WINAPI WTSEnumerateSessionsExA( HANDLE, DWORD *, DWORD, PWTS_SESSION_INFO_1A *, DWORD * );
BOOL WINAPI WTSEnumerateSessionsExW( HANDLE, DWORD *, DWORD, PWTS_SESSION_INFO_1W *, DWORD * );
BOOL WINAPI WTSEnumerateSessionsW( HANDLE, DWORD, DWORD, PWTS_SESSION_INFOW *, DWORD * );
VOID WINAPI WTSFreeMemory( PVOID );
BOOL WINAPI WTSFreeMemoryExA( WTS_TYPE_CLASS, PVOID, ULONG );
BOOL WINAPI WTSFreeMemoryExW( WTS_TYPE_CLASS, PVOID, ULONG );
BOOL WINAPI WTSGetListenerSecurityA( HANDLE, PVOID, DWORD, LPSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, LPDWORD );
BOOL WINAPI WTSGetListenerSecurityW( HANDLE, PVOID, DWORD, LPWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, LPDWORD );
BOOL WINAPI WTSLogoffSession( HANDLE, DWORD, BOOL );
HANDLE WINAPI WTSOpenServerA( LPSTR );
HANDLE WINAPI WTSOpenServerExA( LPSTR );
HANDLE WINAPI WTSOpenServerExW( LPWSTR );
HANDLE WINAPI WTSOpenServerW( LPWSTR );
BOOL WINAPI WTSQueryListenerConfigA( HANDLE, PVOID, DWORD, LPSTR, PWTSLISTENERCONFIGA );
BOOL WINAPI WTSQueryListenerConfigW( HANDLE, PVOID, DWORD, LPWSTR, PWTSLISTENERCONFIGW );
BOOL WINAPI WTSQuerySessionInformationA( HANDLE, DWORD, WTS_INFO_CLASS, LPSTR *, DWORD * );
BOOL WINAPI WTSQuerySessionInformationW( HANDLE, DWORD, WTS_INFO_CLASS, LPWSTR *, DWORD * );
BOOL WINAPI WTSQueryUserConfigA( LPSTR, LPSTR, WTS_CONFIG_CLASS, LPSTR *, DWORD * );
BOOL WINAPI WTSQueryUserConfigW( LPWSTR, LPWSTR, WTS_CONFIG_CLASS, LPWSTR *, DWORD * );
BOOL WINAPI WTSQueryUserToken( ULONG, PHANDLE );
BOOL WINAPI WTSRegisterSessionNotification( HWND, DWORD );
BOOL WINAPI WTSRegisterSessionNotificationEx( HANDLE, HWND, DWORD );
BOOL WINAPI WTSSendMessageA( HANDLE, DWORD, LPSTR, DWORD, LPSTR, DWORD, DWORD, DWORD, DWORD *, BOOL );
BOOL WINAPI WTSSendMessageW( HANDLE, DWORD, LPWSTR, DWORD, LPWSTR, DWORD, DWORD, DWORD, DWORD *, BOOL );
BOOL WINAPI WTSSetListenerSecurityA( HANDLE, PVOID, DWORD, LPSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR );
BOOL WINAPI WTSSetListenerSecurityW( HANDLE, PVOID, DWORD, LPWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR );
BOOL WINAPI WTSSetUserConfigA( LPSTR, LPSTR, WTS_CONFIG_CLASS, LPSTR, DWORD );
BOOL WINAPI WTSSetUserConfigW( LPWSTR, LPWSTR, WTS_CONFIG_CLASS, LPWSTR, DWORD );
BOOL WINAPI WTSShutdownSystem( HANDLE, DWORD );
BOOL WINAPI WTSStartRemoteControlSessionA( LPSTR, ULONG, BYTE, USHORT );
BOOL WINAPI WTSStartRemoteControlSessionW( LPWSTR, ULONG, BYTE, USHORT );
BOOL WINAPI WTSStopRemoteControlSession( ULONG );
BOOL WINAPI WTSTerminateProcess( HANDLE, DWORD, DWORD );
BOOL WINAPI WTSUnRegisterSessionNotification( HWND );
BOOL WINAPI WTSUnRegisterSessionNotificationEx( HANDLE, HWND );
BOOL WINAPI WTSVirtualChannelClose( HANDLE );
HANDLE WINAPI WTSVirtualChannelOpen( HANDLE, DWORD, LPSTR );
HANDLE WINAPI WTSVirtualChannelOpenEx( DWORD, LPSTR, DWORD );
BOOL WINAPI WTSVirtualChannelPurgeInput( HANDLE );
BOOL WINAPI WTSVirtualChannelPurgeOutput( HANDLE );
BOOL WINAPI WTSVirtualChannelQuery( HANDLE, WTS_VIRTUAL_CLASS, PVOID *, DWORD * );
BOOL WINAPI WTSVirtualChannelRead( HANDLE, ULONG, PCHAR, ULONG, PULONG );
BOOL WINAPI WTSVirtualChannelWrite( HANDLE, PCHAR, ULONG, PULONG );
BOOL WINAPI WTSWaitSystemEvent( HANDLE, DWORD, DWORD * );
/* Map generic function names to the appropriate ANSI or Unicode version. */
#ifdef UNICODE
#define WTSConnectServer WTSConnectServerW
#define WTSCreateListener WTSCreateListenerW
#define WTSEnumerateListeners WTSEnumerateListenersW
#define WTSEnumerateProcesses WTSEnumerateProcessesW
#define WTSEnumerateProcessesEx WTSEnumerateProcessesExW
#define WTSEnumerateServers WTSEnumerateServersW
#define WTSEnumerateSessions WTSEnumerateSessionsW
#define WTSEnumerateSessionsEx WTSEnumerateSessionsExW
#define WTSFreeMemoryEx WTSFreeMemoryExW
#define WTSGetListenerSecurity WTSGetListenerSecurityW
#define WTSOpenServer WTSOpenServerW
#define WTSOpenServerEx WTSOpenServerExW
#define WTSQueryListenerConfig WTSQueryListenerConfigW
#define WTSQuerySessionInformation WTSQuerySessionInformationW
#define WTSQueryUserConfig WTSQueryUserConfigW
#define WTSSendMessage WTSSendMessageW
#define WTSSetListenerSecurity WTSSetListenerSecurityW
#define WTSSetUserConfig WTSSetUserConfigW
#define WTSStartRemoteControlSession WTSStartRemoteControlSessionW
#else
#define WTSConnectServer WTSConnectServerA
#define WTSCreateListener WTSCreateListenerA
#define WTSEnumerateListeners WTSEnumerateListenersA
#define WTSEnumerateProcesses WTSEnumerateProcessesA
#define WTSEnumerateProcessesEx WTSEnumerateProcessesExA
#define WTSEnumerateServers WTSEnumerateServersA
#define WTSEnumerateSessions WTSEnumerateSessionsA
#define WTSEnumerateSessionsEx WTSEnumerateSessionsExA
#define WTSFreeMemoryEx WTSFreeMemoryExA
#define WTSGetListenerSecurity WTSGetListenerSecurityA
#define WTSOpenServer WTSOpenServerA
#define WTSOpenServerEx WTSOpenServerExA
#define WTSQueryListenerConfig WTSQueryListenerConfigA
#define WTSQuerySessionInformation WTSQuerySessionInformationA
#define WTSQueryUserConfig WTSQueryUserConfigA
#define WTSSendMessage WTSSendMessageA
#define WTSSetListenerSecurity WTSSetListenerSecurityA
#define WTSSetUserConfig WTSSetUserConfigA
#define WTSStartRemoteControlSession WTSStartRemoteControlSessionA
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* _INC_WTSAPI */