cscg24-guacamole

CSCG 2024 Challenge 'Guacamole Mashup'
git clone https://git.sinitax.com/sinitax/cscg24-guacamole
Log | Files | Refs | sfeed.txt

settings.h (63889B)


      1/**
      2 * FreeRDP: A Remote Desktop Protocol Implementation
      3 * RDP Settings
      4 *
      5 * Copyright 2009-2011 Jay Sorg
      6 * Copyright 2010-2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
      7 * Copyright 2016 Armin Novak <armin.novak@gmail.com>
      8 *
      9 * Licensed under the Apache License, Version 2.0 (the "License");
     10 * you may not use this file except in compliance with the License.
     11 * You may obtain a copy of the License at
     12 *
     13 *     http://www.apache.org/licenses/LICENSE-2.0
     14 *
     15 * Unless required by applicable law or agreed to in writing, software
     16 * distributed under the License is distributed on an "AS IS" BASIS,
     17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     18 * See the License for the specific language governing permissions and
     19 * limitations under the License.
     20 */
     21
     22#ifndef FREERDP_SETTINGS_H
     23#define FREERDP_SETTINGS_H
     24
     25#include <winpr/timezone.h>
     26
     27#include <freerdp/api.h>
     28#include <freerdp/types.h>
     29
     30/* RAIL Support Level */
     31#define RAIL_LEVEL_SUPPORTED 0x00000001
     32#define RAIL_LEVEL_DOCKED_LANGBAR_SUPPORTED 0x00000002
     33#define RAIL_LEVEL_SHELL_INTEGRATION_SUPPORTED 0x00000004
     34#define RAIL_LEVEL_LANGUAGE_IME_SYNC_SUPPORTED 0x00000008
     35#define RAIL_LEVEL_SERVER_TO_CLIENT_IME_SYNC_SUPPORTED 0x00000010
     36#define RAIL_LEVEL_HIDE_MINIMIZED_APPS_SUPPORTED 0x00000020
     37#define RAIL_LEVEL_WINDOW_CLOAKING_SUPPORTED 0x00000040
     38#define RAIL_LEVEL_HANDSHAKE_EX_SUPPORTED 0x00000080
     39
     40/* Performance Flags */
     41#define PERF_FLAG_NONE 0x00000000
     42#define PERF_DISABLE_WALLPAPER 0x00000001
     43#define PERF_DISABLE_FULLWINDOWDRAG 0x00000002
     44#define PERF_DISABLE_MENUANIMATIONS 0x00000004
     45#define PERF_DISABLE_THEMING 0x00000008
     46#define PERF_DISABLE_CURSOR_SHADOW 0x00000020
     47#define PERF_DISABLE_CURSORSETTINGS 0x00000040
     48#define PERF_ENABLE_FONT_SMOOTHING 0x00000080
     49#define PERF_ENABLE_DESKTOP_COMPOSITION 0x00000100
     50
     51/* Connection Types */
     52#define CONNECTION_TYPE_MODEM 0x01
     53#define CONNECTION_TYPE_BROADBAND_LOW 0x02
     54#define CONNECTION_TYPE_SATELLITE 0x03
     55#define CONNECTION_TYPE_BROADBAND_HIGH 0x04
     56#define CONNECTION_TYPE_WAN 0x05
     57#define CONNECTION_TYPE_LAN 0x06
     58#define CONNECTION_TYPE_AUTODETECT 0x07
     59
     60/* Client to Server (CS) data blocks */
     61#define CS_CORE 0xC001
     62#define CS_SECURITY 0xC002
     63#define CS_NET 0xC003
     64#define CS_CLUSTER 0xC004
     65#define CS_MONITOR 0xC005
     66#define CS_MCS_MSGCHANNEL 0xC006
     67#define CS_MONITOR_EX 0xC008
     68#define CS_MULTITRANSPORT 0xC00A
     69
     70/* Server to Client (SC) data blocks */
     71#define SC_CORE 0x0C01
     72#define SC_SECURITY 0x0C02
     73#define SC_NET 0x0C03
     74#define SC_MCS_MSGCHANNEL 0x0C04
     75#define SC_MULTITRANSPORT 0x0C08
     76
     77/* RDP versions, see
     78 * [MS-RDPBCGR] 2.2.1.3.2 Client Core Data (TS_UD_CS_CORE)
     79 * [MS-RDPBCGR] 2.2.1.4.2 Server Core Data (TS_UD_SC_CORE)
     80 */
     81typedef enum
     82{
     83	RDP_VERSION_4 = 0x00080001,
     84	RDP_VERSION_5_PLUS = 0x00080004,
     85	RDP_VERSION_10_0 = 0x00080005,
     86	RDP_VERSION_10_1 = 0x00080006,
     87	RDP_VERSION_10_2 = 0x00080007,
     88	RDP_VERSION_10_3 = 0x00080008,
     89	RDP_VERSION_10_4 = 0x00080009,
     90	RDP_VERSION_10_5 = 0x0008000a,
     91	RDP_VERSION_10_6 = 0x0008000b,
     92	RDP_VERSION_10_7 = 0x0008000C
     93} RDP_VERSION;
     94
     95/* Color depth */
     96#define RNS_UD_COLOR_4BPP 0xCA00
     97#define RNS_UD_COLOR_8BPP 0xCA01
     98#define RNS_UD_COLOR_16BPP_555 0xCA02
     99#define RNS_UD_COLOR_16BPP_565 0xCA03
    100#define RNS_UD_COLOR_24BPP 0xCA04
    101
    102/* Secure Access Sequence */
    103#define RNS_UD_SAS_DEL 0xAA03
    104
    105/* Supported Color Depths */
    106#define RNS_UD_24BPP_SUPPORT 0x0001
    107#define RNS_UD_16BPP_SUPPORT 0x0002
    108#define RNS_UD_15BPP_SUPPORT 0x0004
    109#define RNS_UD_32BPP_SUPPORT 0x0008
    110
    111/* Audio Mode */
    112#define AUDIO_MODE_REDIRECT 0       /* Bring to this computer */
    113#define AUDIO_MODE_PLAY_ON_SERVER 1 /* Leave at remote computer */
    114#define AUDIO_MODE_NONE 2           /* Do not play */
    115
    116/* Early Capability Flags (Client to Server) */
    117#define RNS_UD_CS_SUPPORT_ERRINFO_PDU 0x0001
    118#define RNS_UD_CS_WANT_32BPP_SESSION 0x0002
    119#define RNS_UD_CS_SUPPORT_STATUSINFO_PDU 0x0004
    120#define RNS_UD_CS_STRONG_ASYMMETRIC_KEYS 0x0008
    121#define RNS_UD_CS_VALID_CONNECTION_TYPE 0x0020
    122#define RNS_UD_CS_SUPPORT_MONITOR_LAYOUT_PDU 0x0040
    123#if !defined(DEFINE_NO_DEPRECATED)
    124#define RNS_UD_CS_SUPPORT_NETWORK_AUTODETECT 0x0080 /* DEPRECATED: Compatibility define */
    125#endif
    126#define RNS_UD_CS_SUPPORT_NETCHAR_AUTODETECT 0x0080
    127#define RNS_UD_CS_SUPPORT_DYNVC_GFX_PROTOCOL 0x0100
    128#define RNS_UD_CS_SUPPORT_DYNAMIC_TIME_ZONE 0x0200
    129#define RNS_UD_CS_SUPPORT_HEARTBEAT_PDU 0x0400
    130
    131/* Early Capability Flags (Server to Client) */
    132#define RNS_UD_SC_EDGE_ACTIONS_SUPPORTED 0x00000001
    133#define RNS_UD_SC_DYNAMIC_DST_SUPPORTED 0x00000002
    134
    135/* Cluster Information Flags */
    136#define REDIRECTION_SUPPORTED 0x00000001
    137#define REDIRECTED_SESSIONID_FIELD_VALID 0x00000002
    138#define REDIRECTED_SMARTCARD 0x00000040
    139
    140#define REDIRECTION_VERSION1 0x00
    141#define REDIRECTION_VERSION2 0x01
    142#define REDIRECTION_VERSION3 0x02
    143#define REDIRECTION_VERSION4 0x03
    144#define REDIRECTION_VERSION5 0x04
    145#define REDIRECTION_VERSION6 0x05
    146
    147#define MONITOR_PRIMARY 0x00000001
    148
    149/* Encryption Methods */
    150#define ENCRYPTION_METHOD_NONE 0x00000000
    151#define ENCRYPTION_METHOD_40BIT 0x00000001
    152#define ENCRYPTION_METHOD_128BIT 0x00000002
    153#define ENCRYPTION_METHOD_56BIT 0x00000008
    154#define ENCRYPTION_METHOD_FIPS 0x00000010
    155
    156/* Encryption Levels */
    157#define ENCRYPTION_LEVEL_NONE 0x00000000
    158#define ENCRYPTION_LEVEL_LOW 0x00000001
    159#define ENCRYPTION_LEVEL_CLIENT_COMPATIBLE 0x00000002
    160#define ENCRYPTION_LEVEL_HIGH 0x00000003
    161#define ENCRYPTION_LEVEL_FIPS 0x00000004
    162
    163/* Multitransport Types */
    164#define TRANSPORT_TYPE_UDP_FECR 0x00000001
    165#define TRANSPORT_TYPE_UDP_FECL 0x00000004
    166#define TRANSPORT_TYPE_UDP_PREFERRED 0x00000100
    167
    168/* Static Virtual Channel Options */
    169#define CHANNEL_OPTION_INITIALIZED 0x80000000
    170#define CHANNEL_OPTION_ENCRYPT_RDP 0x40000000
    171#define CHANNEL_OPTION_ENCRYPT_SC 0x20000000
    172#define CHANNEL_OPTION_ENCRYPT_CS 0x10000000
    173#define CHANNEL_OPTION_PRI_HIGH 0x08000000
    174#define CHANNEL_OPTION_PRI_MED 0x04000000
    175#define CHANNEL_OPTION_PRI_LOW 0x02000000
    176#define CHANNEL_OPTION_COMPRESS_RDP 0x00800000
    177#define CHANNEL_OPTION_COMPRESS 0x00400000
    178#define CHANNEL_OPTION_SHOW_PROTOCOL 0x00200000
    179#define CHANNEL_REMOTE_CONTROL_PERSISTENT 0x00100000
    180
    181/* Auto Reconnect Version */
    182#define AUTO_RECONNECT_VERSION_1 0x00000001
    183
    184/* Cookie Lengths */
    185#define MSTSC_COOKIE_MAX_LENGTH 9
    186#define DEFAULT_COOKIE_MAX_LENGTH 0xFF
    187
    188/* Order Support */
    189#define NEG_DSTBLT_INDEX 0x00
    190#define NEG_PATBLT_INDEX 0x01
    191#define NEG_SCRBLT_INDEX 0x02
    192#define NEG_MEMBLT_INDEX 0x03
    193#define NEG_MEM3BLT_INDEX 0x04
    194#define NEG_ATEXTOUT_INDEX 0x05
    195#define NEG_AEXTTEXTOUT_INDEX 0x06 /* Must be ignored */
    196#define NEG_DRAWNINEGRID_INDEX 0x07 /* Must be ignored */
    197#define NEG_LINETO_INDEX 0x08
    198#define NEG_MULTI_DRAWNINEGRID_INDEX 0x09
    199#define NEG_OPAQUE_RECT_INDEX 0x0A /* Must be ignored */
    200#define NEG_SAVEBITMAP_INDEX 0x0B
    201#define NEG_WTEXTOUT_INDEX 0x0C  /* Must be ignored */
    202#define NEG_MEMBLT_V2_INDEX 0x0D /* Must be ignored */
    203#define NEG_MEM3BLT_V2_INDEX 0x0E /* Must be ignored */
    204#define NEG_MULTIDSTBLT_INDEX 0x0F
    205#define NEG_MULTIPATBLT_INDEX 0x10
    206#define NEG_MULTISCRBLT_INDEX 0x11
    207#define NEG_MULTIOPAQUERECT_INDEX 0x12
    208#define NEG_FAST_INDEX_INDEX 0x13
    209#define NEG_POLYGON_SC_INDEX 0x14
    210#define NEG_POLYGON_CB_INDEX 0x15
    211#define NEG_POLYLINE_INDEX 0x16
    212#define NEG_UNUSED23_INDEX 0x17 /* Must be ignored */
    213#define NEG_FAST_GLYPH_INDEX 0x18
    214#define NEG_ELLIPSE_SC_INDEX 0x19
    215#define NEG_ELLIPSE_CB_INDEX 0x1A
    216#define NEG_GLYPH_INDEX_INDEX 0x1B
    217#define NEG_GLYPH_WEXTTEXTOUT_INDEX 0x1C     /* Must be ignored */
    218#define NEG_GLYPH_WLONGTEXTOUT_INDEX 0x1D    /* Must be ignored */
    219#define NEG_GLYPH_WLONGEXTTEXTOUT_INDEX 0x1E /* Must be ignored */
    220#define NEG_UNUSED31_INDEX 0x1F              /* Must be ignored */
    221
    222/* Glyph Support Level */
    223#define GLYPH_SUPPORT_NONE 0x0000
    224#define GLYPH_SUPPORT_PARTIAL 0x0001
    225#define GLYPH_SUPPORT_FULL 0x0002
    226#define GLYPH_SUPPORT_ENCODE 0x0003
    227
    228/* Gateway Usage Method */
    229#define TSC_PROXY_MODE_NONE_DIRECT 0x0
    230#define TSC_PROXY_MODE_DIRECT 0x1
    231#define TSC_PROXY_MODE_DETECT 0x2
    232#define TSC_PROXY_MODE_DEFAULT 0x3
    233#define TSC_PROXY_MODE_NONE_DETECT 0x4
    234
    235/* Gateway Credentials Source */
    236#define TSC_PROXY_CREDS_MODE_USERPASS 0x0
    237#define TSC_PROXY_CREDS_MODE_SMARTCARD 0x1
    238#define TSC_PROXY_CREDS_MODE_ANY 0x2
    239
    240/* Redirection Flags */
    241#define LB_TARGET_NET_ADDRESS 0x00000001
    242#define LB_LOAD_BALANCE_INFO 0x00000002
    243#define LB_USERNAME 0x00000004
    244#define LB_DOMAIN 0x00000008
    245#define LB_PASSWORD 0x00000010
    246#define LB_DONTSTOREUSERNAME 0x00000020
    247#define LB_SMARTCARD_LOGON 0x00000040
    248#define LB_NOREDIRECT 0x00000080
    249#define LB_TARGET_FQDN 0x00000100
    250#define LB_TARGET_NETBIOS_NAME 0x00000200
    251#define LB_TARGET_NET_ADDRESSES 0x00000800
    252#define LB_CLIENT_TSV_URL 0x00001000
    253#define LB_SERVER_TSV_CAPABLE 0x00002000
    254#define LB_PASSWORD_IS_PK_ENCRYPTED 0x00004000
    255#define LB_REDIRECTION_GUID 0x00008000
    256#define LB_TARGET_CERTIFICATE 0x00010000
    257
    258#define LB_PASSWORD_MAX_LENGTH 512
    259
    260/* Keyboard Hook */
    261#define KEYBOARD_HOOK_LOCAL 0
    262#define KEYBOARD_HOOK_REMOTE 1
    263#define KEYBOARD_HOOK_FULLSCREEN_ONLY 2
    264
    265struct _TARGET_NET_ADDRESS
    266{
    267	UINT32 Length;
    268	LPWSTR Address;
    269};
    270typedef struct _TARGET_NET_ADDRESS TARGET_NET_ADDRESS;
    271
    272/* Logon Error Info */
    273#define LOGON_MSG_DISCONNECT_REFUSED 0xFFFFFFF9
    274#define LOGON_MSG_NO_PERMISSION 0xFFFFFFFA
    275#define LOGON_MSG_BUMP_OPTIONS 0xFFFFFFFB
    276#define LOGON_MSG_RECONNECT_OPTIONS 0xFFFFFFFC
    277#define LOGON_MSG_SESSION_TERMINATE 0xFFFFFFFD
    278#define LOGON_MSG_SESSION_CONTINUE 0xFFFFFFFE
    279
    280#define LOGON_FAILED_BAD_PASSWORD 0x00000000
    281#define LOGON_FAILED_UPDATE_PASSWORD 0x00000001
    282#define LOGON_FAILED_OTHER 0x00000002
    283#define LOGON_WARNING 0x00000003
    284
    285/* Server Status Info */
    286#define STATUS_FINDING_DESTINATION 0x00000401
    287#define STATUS_LOADING_DESTINATION 0x00000402
    288#define STATUS_BRINGING_SESSION_ONLINE 0x00000403
    289#define STATUS_REDIRECTING_TO_DESTINATION 0x00000404
    290#define STATUS_VM_LOADING 0x00000501
    291#define STATUS_VM_WAKING 0x00000502
    292#define STATUS_VM_BOOTING 0x00000503
    293
    294/* Compression Flags */
    295#define PACKET_COMPR_TYPE_8K 0x00
    296#define PACKET_COMPR_TYPE_64K 0x01
    297#define PACKET_COMPR_TYPE_RDP6 0x02
    298#define PACKET_COMPR_TYPE_RDP61 0x03
    299#define PACKET_COMPR_TYPE_RDP8 0x04
    300
    301/* Desktop Rotation Flags */
    302#define ORIENTATION_LANDSCAPE 0
    303#define ORIENTATION_PORTRAIT 90
    304#define ORIENTATION_LANDSCAPE_FLIPPED 180
    305#define ORIENTATION_PORTRAIT_FLIPPED 270
    306
    307/* ARC_CS_PRIVATE_PACKET */
    308typedef struct
    309{
    310	UINT32 cbLen;
    311	UINT32 version;
    312	UINT32 logonId;
    313	BYTE securityVerifier[16];
    314} ARC_CS_PRIVATE_PACKET;
    315
    316/* ARC_SC_PRIVATE_PACKET */
    317typedef struct
    318{
    319	UINT32 cbLen;
    320	UINT32 version;
    321	UINT32 logonId;
    322	BYTE arcRandomBits[16];
    323} ARC_SC_PRIVATE_PACKET;
    324
    325/* Certificates */
    326
    327struct rdp_CertBlob
    328{
    329	UINT32 length;
    330	BYTE* data;
    331};
    332typedef struct rdp_CertBlob rdpCertBlob;
    333
    334struct rdp_X509CertChain
    335{
    336	UINT32 count;
    337	rdpCertBlob* array;
    338};
    339typedef struct rdp_X509CertChain rdpX509CertChain;
    340
    341struct rdp_CertInfo
    342{
    343	BYTE* Modulus;
    344	DWORD ModulusLength;
    345	BYTE exponent[4];
    346};
    347typedef struct rdp_CertInfo rdpCertInfo;
    348
    349struct rdp_certificate
    350{
    351	rdpCertInfo cert_info;
    352	rdpX509CertChain* x509_cert_chain;
    353};
    354typedef struct rdp_certificate rdpCertificate;
    355
    356struct rdp_rsa_key
    357{
    358	BYTE* Modulus;
    359	DWORD ModulusLength;
    360	BYTE* PrivateExponent;
    361	DWORD PrivateExponentLength;
    362	BYTE exponent[4];
    363};
    364typedef struct rdp_rsa_key rdpRsaKey;
    365
    366/* Channels */
    367
    368struct _ADDIN_ARGV
    369{
    370	int argc;
    371	char** argv;
    372};
    373typedef struct _ADDIN_ARGV ADDIN_ARGV;
    374
    375/* Extensions */
    376
    377struct rdp_ext_set
    378{
    379	char name[256]; /* plugin name or path */
    380	void* data;     /* plugin data */
    381};
    382
    383/* Bitmap Cache */
    384
    385struct _BITMAP_CACHE_CELL_INFO
    386{
    387	UINT16 numEntries;
    388	UINT16 maxSize;
    389};
    390typedef struct _BITMAP_CACHE_CELL_INFO BITMAP_CACHE_CELL_INFO;
    391
    392struct _BITMAP_CACHE_V2_CELL_INFO
    393{
    394	UINT32 numEntries;
    395	BOOL persistent;
    396};
    397typedef struct _BITMAP_CACHE_V2_CELL_INFO BITMAP_CACHE_V2_CELL_INFO;
    398
    399/* Glyph Cache */
    400
    401struct _GLYPH_CACHE_DEFINITION
    402{
    403	UINT16 cacheEntries;
    404	UINT16 cacheMaximumCellSize;
    405};
    406typedef struct _GLYPH_CACHE_DEFINITION GLYPH_CACHE_DEFINITION;
    407
    408/* Monitors */
    409
    410struct _MONITOR_DEF
    411{
    412	INT32 left;
    413	INT32 top;
    414	INT32 right;
    415	INT32 bottom;
    416	UINT32 flags;
    417};
    418typedef struct _MONITOR_DEF MONITOR_DEF;
    419
    420struct _MONITOR_ATTRIBUTES
    421{
    422	UINT32 physicalWidth;
    423	UINT32 physicalHeight;
    424	UINT32 orientation;
    425	UINT32 desktopScaleFactor;
    426	UINT32 deviceScaleFactor;
    427};
    428typedef struct _MONITOR_ATTRIBUTES MONITOR_ATTRIBUTES;
    429
    430struct rdp_monitor
    431{
    432	INT32 x;
    433	INT32 y;
    434	INT32 width;
    435	INT32 height;
    436	UINT32 is_primary;
    437	UINT32 orig_screen;
    438	MONITOR_ATTRIBUTES attributes;
    439};
    440typedef struct rdp_monitor rdpMonitor;
    441
    442/* Device Redirection */
    443
    444#define RDPDR_DTYP_SERIAL 0x00000001
    445#define RDPDR_DTYP_PARALLEL 0x00000002
    446#define RDPDR_DTYP_PRINT 0x00000004
    447#define RDPDR_DTYP_FILESYSTEM 0x00000008
    448#define RDPDR_DTYP_SMARTCARD 0x00000020
    449
    450struct _RDPDR_DEVICE
    451{
    452	UINT32 Id;
    453	UINT32 Type;
    454	char* Name;
    455};
    456typedef struct _RDPDR_DEVICE RDPDR_DEVICE;
    457
    458struct _RDPDR_DRIVE
    459{
    460	UINT32 Id;
    461	UINT32 Type;
    462	char* Name;
    463	char* Path;
    464	BOOL automount;
    465};
    466typedef struct _RDPDR_DRIVE RDPDR_DRIVE;
    467
    468struct _RDPDR_PRINTER
    469{
    470	UINT32 Id;
    471	UINT32 Type;
    472	char* Name;
    473	char* DriverName;
    474};
    475typedef struct _RDPDR_PRINTER RDPDR_PRINTER;
    476
    477struct _RDPDR_SMARTCARD
    478{
    479	UINT32 Id;
    480	UINT32 Type;
    481	char* Name;
    482};
    483typedef struct _RDPDR_SMARTCARD RDPDR_SMARTCARD;
    484
    485struct _RDPDR_SERIAL
    486{
    487	UINT32 Id;
    488	UINT32 Type;
    489	char* Name;
    490	char* Path;
    491	char* Driver;
    492	char* Permissive;
    493};
    494typedef struct _RDPDR_SERIAL RDPDR_SERIAL;
    495
    496struct _RDPDR_PARALLEL
    497{
    498	UINT32 Id;
    499	UINT32 Type;
    500	char* Name;
    501	char* Path;
    502};
    503typedef struct _RDPDR_PARALLEL RDPDR_PARALLEL;
    504
    505#define PROXY_TYPE_NONE 0
    506#define PROXY_TYPE_HTTP 1
    507#define PROXY_TYPE_SOCKS 2
    508#define PROXY_TYPE_IGNORE 0xFFFF
    509
    510/* Settings */
    511
    512#ifdef __GNUC__
    513#define ALIGN64 __attribute__((aligned(8)))
    514#else
    515#ifdef _WIN32
    516#define ALIGN64 __declspec(align(8))
    517#else
    518#define ALIGN64
    519#endif
    520#endif
    521
    522/**
    523 * FreeRDP Settings Ids
    524 * This is generated with a script parsing the rdpSettings data structure
    525 */
    526
    527#define FreeRDP_instance (0)
    528#define FreeRDP_ServerMode (16)
    529#define FreeRDP_ShareId (17)
    530#define FreeRDP_PduSource (18)
    531#define FreeRDP_ServerPort (19)
    532#define FreeRDP_ServerHostname (20)
    533#define FreeRDP_Username (21)
    534#define FreeRDP_Password (22)
    535#define FreeRDP_Domain (23)
    536#define FreeRDP_PasswordHash (24)
    537#define FreeRDP_WaitForOutputBufferFlush (25)
    538#define FreeRDP_MaxTimeInCheckLoop (26)
    539#define FreeRDP_AcceptedCert (27)
    540#define FreeRDP_AcceptedCertLength (28)
    541#define FreeRDP_RdpVersion (128)
    542#define FreeRDP_DesktopWidth (129)
    543#define FreeRDP_DesktopHeight (130)
    544#define FreeRDP_ColorDepth (131)
    545#define FreeRDP_ConnectionType (132)
    546#define FreeRDP_ClientBuild (133)
    547#define FreeRDP_ClientHostname (134)
    548#define FreeRDP_ClientProductId (135)
    549#define FreeRDP_EarlyCapabilityFlags (136)
    550#define FreeRDP_NetworkAutoDetect (137)
    551#define FreeRDP_SupportAsymetricKeys (138)
    552#define FreeRDP_SupportErrorInfoPdu (139)
    553#define FreeRDP_SupportStatusInfoPdu (140)
    554#define FreeRDP_SupportMonitorLayoutPdu (141)
    555#define FreeRDP_SupportGraphicsPipeline (142)
    556#define FreeRDP_SupportDynamicTimeZone (143)
    557#define FreeRDP_SupportHeartbeatPdu (144)
    558#define FreeRDP_DesktopPhysicalWidth (145)
    559#define FreeRDP_DesktopPhysicalHeight (146)
    560#define FreeRDP_DesktopOrientation (147)
    561#define FreeRDP_DesktopScaleFactor (148)
    562#define FreeRDP_DeviceScaleFactor (149)
    563#define FreeRDP_UseRdpSecurityLayer (192)
    564#define FreeRDP_EncryptionMethods (193)
    565#define FreeRDP_ExtEncryptionMethods (194)
    566#define FreeRDP_EncryptionLevel (195)
    567#define FreeRDP_ServerRandom (196)
    568#define FreeRDP_ServerRandomLength (197)
    569#define FreeRDP_ServerCertificate (198)
    570#define FreeRDP_ServerCertificateLength (199)
    571#define FreeRDP_ClientRandom (200)
    572#define FreeRDP_ClientRandomLength (201)
    573#define FreeRDP_ChannelCount (256)
    574#define FreeRDP_ChannelDefArraySize (257)
    575#define FreeRDP_ChannelDefArray (258)
    576#define FreeRDP_ClusterInfoFlags (320)
    577#define FreeRDP_RedirectedSessionId (321)
    578#define FreeRDP_ConsoleSession (322)
    579#define FreeRDP_MonitorCount (384)
    580#define FreeRDP_MonitorDefArraySize (385)
    581#define FreeRDP_MonitorDefArray (386)
    582#define FreeRDP_SpanMonitors (387)
    583#define FreeRDP_UseMultimon (388)
    584#define FreeRDP_ForceMultimon (389)
    585#define FreeRDP_DesktopPosX (390)
    586#define FreeRDP_DesktopPosY (391)
    587#define FreeRDP_ListMonitors (392)
    588#define FreeRDP_MonitorIds (393)
    589#define FreeRDP_NumMonitorIds (394)
    590#define FreeRDP_MonitorLocalShiftX (395)
    591#define FreeRDP_MonitorLocalShiftY (396)
    592#define FreeRDP_HasMonitorAttributes (397)
    593#define FreeRDP_MultitransportFlags (512)
    594#define FreeRDP_SupportMultitransport (513)
    595#define FreeRDP_AlternateShell (640)
    596#define FreeRDP_ShellWorkingDirectory (641)
    597#define FreeRDP_AutoLogonEnabled (704)
    598#define FreeRDP_CompressionEnabled (705)
    599#define FreeRDP_DisableCtrlAltDel (706)
    600#define FreeRDP_EnableWindowsKey (707)
    601#define FreeRDP_MaximizeShell (708)
    602#define FreeRDP_LogonNotify (709)
    603#define FreeRDP_LogonErrors (710)
    604#define FreeRDP_MouseAttached (711)
    605#define FreeRDP_MouseHasWheel (712)
    606#define FreeRDP_RemoteConsoleAudio (713)
    607#define FreeRDP_AudioPlayback (714)
    608#define FreeRDP_AudioCapture (715)
    609#define FreeRDP_VideoDisable (716)
    610#define FreeRDP_PasswordIsSmartcardPin (717)
    611#define FreeRDP_UsingSavedCredentials (718)
    612#define FreeRDP_ForceEncryptedCsPdu (719)
    613#define FreeRDP_HiDefRemoteApp (720)
    614#define FreeRDP_CompressionLevel (721)
    615#define FreeRDP_IPv6Enabled (768)
    616#define FreeRDP_ClientAddress (769)
    617#define FreeRDP_ClientDir (770)
    618#define FreeRDP_AutoReconnectionEnabled (832)
    619#define FreeRDP_AutoReconnectMaxRetries (833)
    620#define FreeRDP_ClientAutoReconnectCookie (834)
    621#define FreeRDP_ServerAutoReconnectCookie (835)
    622#define FreeRDP_PrintReconnectCookie (836)
    623#define FreeRDP_ClientTimeZone (896)
    624#define FreeRDP_DynamicDSTTimeZoneKeyName (897)
    625#define FreeRDP_DynamicDaylightTimeDisabled (898)
    626#define FreeRDP_PerformanceFlags (960)
    627#define FreeRDP_AllowFontSmoothing (961)
    628#define FreeRDP_DisableWallpaper (962)
    629#define FreeRDP_DisableFullWindowDrag (963)
    630#define FreeRDP_DisableMenuAnims (964)
    631#define FreeRDP_DisableThemes (965)
    632#define FreeRDP_DisableCursorShadow (966)
    633#define FreeRDP_DisableCursorBlinking (967)
    634#define FreeRDP_AllowDesktopComposition (968)
    635#define FreeRDP_RemoteAssistanceMode (1024)
    636#define FreeRDP_RemoteAssistanceSessionId (1025)
    637#define FreeRDP_RemoteAssistancePassStub (1026)
    638#define FreeRDP_RemoteAssistancePassword (1027)
    639#define FreeRDP_RemoteAssistanceRCTicket (1028)
    640#define FreeRDP_EncomspVirtualChannel (1029)
    641#define FreeRDP_RemdeskVirtualChannel (1030)
    642#define FreeRDP_LyncRdpMode (1031)
    643#define FreeRDP_RemoteAssistanceRequestControl (1032)
    644#define FreeRDP_TlsSecurity (1088)
    645#define FreeRDP_NlaSecurity (1089)
    646#define FreeRDP_RdpSecurity (1090)
    647#define FreeRDP_ExtSecurity (1091)
    648#define FreeRDP_Authentication (1092)
    649#define FreeRDP_RequestedProtocols (1093)
    650#define FreeRDP_SelectedProtocol (1094)
    651#define FreeRDP_NegotiationFlags (1095)
    652#define FreeRDP_NegotiateSecurityLayer (1096)
    653#define FreeRDP_RestrictedAdminModeRequired (1097)
    654#define FreeRDP_AuthenticationServiceClass (1098)
    655#define FreeRDP_DisableCredentialsDelegation (1099)
    656#define FreeRDP_AuthenticationLevel (1100)
    657#define FreeRDP_AllowedTlsCiphers (1101)
    658#define FreeRDP_VmConnectMode (1102)
    659#define FreeRDP_NtlmSamFile (1103)
    660#define FreeRDP_FIPSMode (1104)
    661#define FreeRDP_TlsSecLevel (1105)
    662#define FreeRDP_TLSMinVersion (1106)
    663#define FreeRDP_TLSMaxVersion (1107)
    664#define FreeRDP_MstscCookieMode (1152)
    665#define FreeRDP_CookieMaxLength (1153)
    666#define FreeRDP_PreconnectionId (1154)
    667#define FreeRDP_PreconnectionBlob (1155)
    668#define FreeRDP_SendPreconnectionPdu (1156)
    669#define FreeRDP_RedirectionFlags (1216)
    670#define FreeRDP_TargetNetAddress (1217)
    671#define FreeRDP_LoadBalanceInfo (1218)
    672#define FreeRDP_LoadBalanceInfoLength (1219)
    673#define FreeRDP_RedirectionUsername (1220)
    674#define FreeRDP_RedirectionDomain (1221)
    675#define FreeRDP_RedirectionPassword (1222)
    676#define FreeRDP_RedirectionPasswordLength (1223)
    677#define FreeRDP_RedirectionTargetFQDN (1224)
    678#define FreeRDP_RedirectionTargetNetBiosName (1225)
    679#define FreeRDP_RedirectionTsvUrl (1226)
    680#define FreeRDP_RedirectionTsvUrlLength (1227)
    681#define FreeRDP_TargetNetAddressCount (1228)
    682#define FreeRDP_TargetNetAddresses (1229)
    683#define FreeRDP_TargetNetPorts (1230)
    684#define FreeRDP_RedirectionAcceptedCert (1231)
    685#define FreeRDP_RedirectionAcceptedCertLength (1232)
    686#define FreeRDP_RedirectionPreferType (1233)
    687#define FreeRDP_RedirectionGuid (1234)
    688#define FreeRDP_RedirectionGuidLength (1235)
    689#define FreeRDP_RedirectionTargetCertificate (1236)
    690#define FreeRDP_RedirectionTargetCertificateLength (1237)
    691#define FreeRDP_Password51 (1280)
    692#define FreeRDP_Password51Length (1281)
    693#define FreeRDP_SmartcardLogon (1282)
    694#define FreeRDP_PromptForCredentials (1283)
    695#define FreeRDP_KerberosKdc (1344)
    696#define FreeRDP_KerberosRealm (1345)
    697#define FreeRDP_IgnoreCertificate (1408)
    698#define FreeRDP_CertificateName (1409)
    699#define FreeRDP_CertificateFile (1410)
    700#define FreeRDP_PrivateKeyFile (1411)
    701#define FreeRDP_RdpKeyFile (1412)
    702#define FreeRDP_RdpServerRsaKey (1413)
    703#define FreeRDP_RdpServerCertificate (1414)
    704#define FreeRDP_ExternalCertificateManagement (1415)
    705#define FreeRDP_CertificateContent (1416)
    706#define FreeRDP_PrivateKeyContent (1417)
    707#define FreeRDP_RdpKeyContent (1418)
    708#define FreeRDP_AutoAcceptCertificate (1419)
    709#define FreeRDP_AutoDenyCertificate (1420)
    710#define FreeRDP_CertificateAcceptedFingerprints (1421)
    711#define FreeRDP_Workarea (1536)
    712#define FreeRDP_Fullscreen (1537)
    713#define FreeRDP_PercentScreen (1538)
    714#define FreeRDP_GrabKeyboard (1539)
    715#define FreeRDP_Decorations (1540)
    716#define FreeRDP_MouseMotion (1541)
    717#define FreeRDP_WindowTitle (1542)
    718#define FreeRDP_ParentWindowId (1543)
    719#define FreeRDP_AsyncInput (1544)
    720#define FreeRDP_AsyncUpdate (1545)
    721#define FreeRDP_AsyncChannels (1546)
    722#define FreeRDP_ToggleFullscreen (1548)
    723#define FreeRDP_WmClass (1549)
    724#define FreeRDP_EmbeddedWindow (1550)
    725#define FreeRDP_SmartSizing (1551)
    726#define FreeRDP_XPan (1552)
    727#define FreeRDP_YPan (1553)
    728#define FreeRDP_SmartSizingWidth (1554)
    729#define FreeRDP_SmartSizingHeight (1555)
    730#define FreeRDP_PercentScreenUseWidth (1556)
    731#define FreeRDP_PercentScreenUseHeight (1557)
    732#define FreeRDP_DynamicResolutionUpdate (1558)
    733#define FreeRDP_GrabMouse (1559)
    734#define FreeRDP_SoftwareGdi (1601)
    735#define FreeRDP_LocalConnection (1602)
    736#define FreeRDP_AuthenticationOnly (1603)
    737#define FreeRDP_CredentialsFromStdin (1604)
    738#define FreeRDP_UnmapButtons (1605)
    739#define FreeRDP_OldLicenseBehaviour (1606)
    740#define FreeRDP_ComputerName (1664)
    741#define FreeRDP_ConnectionFile (1728)
    742#define FreeRDP_AssistanceFile (1729)
    743#define FreeRDP_HomePath (1792)
    744#define FreeRDP_ConfigPath (1793)
    745#define FreeRDP_CurrentPath (1794)
    746#define FreeRDP_DumpRemoteFx (1856)
    747#define FreeRDP_PlayRemoteFx (1857)
    748#define FreeRDP_DumpRemoteFxFile (1858)
    749#define FreeRDP_PlayRemoteFxFile (1859)
    750#define FreeRDP_GatewayUsageMethod (1984)
    751#define FreeRDP_GatewayPort (1985)
    752#define FreeRDP_GatewayHostname (1986)
    753#define FreeRDP_GatewayUsername (1987)
    754#define FreeRDP_GatewayPassword (1988)
    755#define FreeRDP_GatewayDomain (1989)
    756#define FreeRDP_GatewayCredentialsSource (1990)
    757#define FreeRDP_GatewayUseSameCredentials (1991)
    758#define FreeRDP_GatewayEnabled (1992)
    759#define FreeRDP_GatewayBypassLocal (1993)
    760#define FreeRDP_GatewayRpcTransport (1994)
    761#define FreeRDP_GatewayHttpTransport (1995)
    762#define FreeRDP_GatewayUdpTransport (1996)
    763#define FreeRDP_GatewayAccessToken (1997)
    764#define FreeRDP_GatewayAcceptedCert (1998)
    765#define FreeRDP_GatewayAcceptedCertLength (1999)
    766#define FreeRDP_GatewayHttpUseWebsockets (2000)
    767#define FreeRDP_ProxyType (2015)
    768#define FreeRDP_ProxyHostname (2016)
    769#define FreeRDP_ProxyPort (2017)
    770#define FreeRDP_ProxyUsername (2018)
    771#define FreeRDP_ProxyPassword (2019)
    772#define FreeRDP_RemoteApplicationMode (2112)
    773#define FreeRDP_RemoteApplicationName (2113)
    774#define FreeRDP_RemoteApplicationIcon (2114)
    775#define FreeRDP_RemoteApplicationProgram (2115)
    776#define FreeRDP_RemoteApplicationFile (2116)
    777#define FreeRDP_RemoteApplicationGuid (2117)
    778#define FreeRDP_RemoteApplicationCmdLine (2118)
    779#define FreeRDP_RemoteApplicationExpandCmdLine (2119)
    780#define FreeRDP_RemoteApplicationExpandWorkingDir (2120)
    781#define FreeRDP_DisableRemoteAppCapsCheck (2121)
    782#define FreeRDP_RemoteAppNumIconCaches (2122)
    783#define FreeRDP_RemoteAppNumIconCacheEntries (2123)
    784#define FreeRDP_RemoteAppLanguageBarSupported (2124)
    785#define FreeRDP_RemoteWndSupportLevel (2125)
    786#define FreeRDP_RemoteApplicationSupportLevel (2126)
    787#define FreeRDP_RemoteApplicationSupportMask (2127)
    788#define FreeRDP_RemoteApplicationWorkingDir (2128)
    789#define FreeRDP_ReceivedCapabilities (2240)
    790#define FreeRDP_ReceivedCapabilitiesSize (2241)
    791#define FreeRDP_OsMajorType (2304)
    792#define FreeRDP_OsMinorType (2305)
    793#define FreeRDP_RefreshRect (2306)
    794#define FreeRDP_SuppressOutput (2307)
    795#define FreeRDP_FastPathOutput (2308)
    796#define FreeRDP_SaltedChecksum (2309)
    797#define FreeRDP_LongCredentialsSupported (2310)
    798#define FreeRDP_NoBitmapCompressionHeader (2311)
    799#define FreeRDP_BitmapCompressionDisabled (2312)
    800#define FreeRDP_DesktopResize (2368)
    801#define FreeRDP_DrawAllowDynamicColorFidelity (2369)
    802#define FreeRDP_DrawAllowColorSubsampling (2370)
    803#define FreeRDP_DrawAllowSkipAlpha (2371)
    804#define FreeRDP_OrderSupport (2432)
    805#define FreeRDP_BitmapCacheV3Enabled (2433)
    806#define FreeRDP_AltSecFrameMarkerSupport (2434)
    807#define FreeRDP_AllowUnanouncedOrdersFromServer (2435)
    808#define FreeRDP_BitmapCacheEnabled (2497)
    809#define FreeRDP_BitmapCacheVersion (2498)
    810#define FreeRDP_AllowCacheWaitingList (2499)
    811#define FreeRDP_BitmapCachePersistEnabled (2500)
    812#define FreeRDP_BitmapCacheV2NumCells (2501)
    813#define FreeRDP_BitmapCacheV2CellInfo (2502)
    814#define FreeRDP_ColorPointerFlag (2560)
    815#define FreeRDP_PointerCacheSize (2561)
    816#define FreeRDP_KeyboardRemappingList (2622)
    817#define FreeRDP_KeyboardCodePage (2623)
    818#define FreeRDP_KeyboardLayout (2624)
    819#define FreeRDP_KeyboardType (2625)
    820#define FreeRDP_KeyboardSubType (2626)
    821#define FreeRDP_KeyboardFunctionKey (2627)
    822#define FreeRDP_ImeFileName (2628)
    823#define FreeRDP_UnicodeInput (2629)
    824#define FreeRDP_FastPathInput (2630)
    825#define FreeRDP_MultiTouchInput (2631)
    826#define FreeRDP_MultiTouchGestures (2632)
    827#define FreeRDP_KeyboardHook (2633)
    828#define FreeRDP_HasHorizontalWheel (2634)
    829#define FreeRDP_HasExtendedMouseEvent (2635)
    830#define FreeRDP_BrushSupportLevel (2688)
    831#define FreeRDP_GlyphSupportLevel (2752)
    832#define FreeRDP_GlyphCache (2753)
    833#define FreeRDP_FragCache (2754)
    834#define FreeRDP_OffscreenSupportLevel (2816)
    835#define FreeRDP_OffscreenCacheSize (2817)
    836#define FreeRDP_OffscreenCacheEntries (2818)
    837#define FreeRDP_VirtualChannelCompressionFlags (2880)
    838#define FreeRDP_VirtualChannelChunkSize (2881)
    839#define FreeRDP_SoundBeepsEnabled (2944)
    840#define FreeRDP_MultifragMaxRequestSize (3328)
    841#define FreeRDP_LargePointerFlag (3392)
    842#define FreeRDP_CompDeskSupportLevel (3456)
    843#define FreeRDP_SurfaceCommandsEnabled (3520)
    844#define FreeRDP_FrameMarkerCommandEnabled (3521)
    845#define FreeRDP_SurfaceFrameMarkerEnabled (3522)
    846#define FreeRDP_RemoteFxOnly (3648)
    847#define FreeRDP_RemoteFxCodec (3649)
    848#define FreeRDP_RemoteFxCodecId (3650)
    849#define FreeRDP_RemoteFxCodecMode (3651)
    850#define FreeRDP_RemoteFxImageCodec (3652)
    851#define FreeRDP_RemoteFxCaptureFlags (3653)
    852#define FreeRDP_NSCodec (3712)
    853#define FreeRDP_NSCodecId (3713)
    854#define FreeRDP_FrameAcknowledge (3714)
    855#define FreeRDP_NSCodecColorLossLevel (3715)
    856#define FreeRDP_NSCodecAllowSubsampling (3716)
    857#define FreeRDP_NSCodecAllowDynamicColorFidelity (3717)
    858#define FreeRDP_JpegCodec (3776)
    859#define FreeRDP_JpegCodecId (3777)
    860#define FreeRDP_JpegQuality (3778)
    861#define FreeRDP_GfxThinClient (3840)
    862#define FreeRDP_GfxSmallCache (3841)
    863#define FreeRDP_GfxProgressive (3842)
    864#define FreeRDP_GfxProgressiveV2 (3843)
    865#define FreeRDP_GfxH264 (3844)
    866#define FreeRDP_GfxAVC444 (3845)
    867#define FreeRDP_GfxSendQoeAck (3846)
    868#define FreeRDP_GfxAVC444v2 (3847)
    869#define FreeRDP_GfxCapsFilter (3848)
    870#define FreeRDP_BitmapCacheV3CodecId (3904)
    871#define FreeRDP_DrawNineGridEnabled (3968)
    872#define FreeRDP_DrawNineGridCacheSize (3969)
    873#define FreeRDP_DrawNineGridCacheEntries (3970)
    874#define FreeRDP_DrawGdiPlusEnabled (4032)
    875#define FreeRDP_DrawGdiPlusCacheEnabled (4033)
    876#define FreeRDP_DeviceRedirection (4160)
    877#define FreeRDP_DeviceCount (4161)
    878#define FreeRDP_DeviceArraySize (4162)
    879#define FreeRDP_DeviceArray (4163)
    880#define FreeRDP_RedirectDrives (4288)
    881#define FreeRDP_RedirectHomeDrive (4289)
    882#define FreeRDP_DrivesToRedirect (4290)
    883#define FreeRDP_RedirectSmartCards (4416)
    884#define FreeRDP_RedirectPrinters (4544)
    885#define FreeRDP_RedirectSerialPorts (4672)
    886#define FreeRDP_RedirectParallelPorts (4673)
    887#define FreeRDP_PreferIPv6OverIPv4 (4674)
    888#define FreeRDP_RedirectClipboard (4800)
    889#define FreeRDP_StaticChannelCount (4928)
    890#define FreeRDP_StaticChannelArraySize (4929)
    891#define FreeRDP_StaticChannelArray (4930)
    892#define FreeRDP_DynamicChannelCount (5056)
    893#define FreeRDP_DynamicChannelArraySize (5057)
    894#define FreeRDP_DynamicChannelArray (5058)
    895#define FreeRDP_SupportDynamicChannels (5059)
    896#define FreeRDP_SupportEchoChannel (5184)
    897#define FreeRDP_SupportDisplayControl (5185)
    898#define FreeRDP_SupportGeometryTracking (5186)
    899#define FreeRDP_SupportSSHAgentChannel (5187)
    900#define FreeRDP_SupportVideoOptimized (5188)
    901#define FreeRDP_RDP2TCPArgs (5189)
    902#define FreeRDP_TcpKeepAlive (5190)
    903#define FreeRDP_TcpKeepAliveRetries (5191)
    904#define FreeRDP_TcpKeepAliveDelay (5192)
    905#define FreeRDP_TcpKeepAliveInterval (5193)
    906#define FreeRDP_TcpAckTimeout (5194)
    907#define FreeRDP_TcpConnectTimeout (5197)
    908
    909/**
    910 * FreeRDP Settings Data Structure
    911 */
    912
    913#define FreeRDP_Settings_StableAPI_MAX 5312
    914struct rdp_settings
    915{
    916	/**
    917	 * WARNING: this data structure is carefully padded for ABI stability!
    918	 * Keeping this area clean is particularly challenging, so unless you are
    919	 * a trusted developer you should NOT take the liberty of adding your own
    920	 * options straight into the ABI stable zone. Instead, append them to the
    921	 * very end of this data structure, in the zone marked as ABI unstable.
    922	 */
    923
    924	ALIGN64 void* instance;    /* 0 */
    925	UINT64 padding001[16 - 1]; /* 1 */
    926
    927	/* Core Parameters */
    928	ALIGN64 BOOL ServerMode;               /* 16 */
    929	ALIGN64 UINT32 ShareId;                /* 17 */
    930	ALIGN64 UINT32 PduSource;              /* 18 */
    931	ALIGN64 UINT32 ServerPort;             /* 19 */
    932	ALIGN64 char* ServerHostname;          /* 20 */
    933	ALIGN64 char* Username;                /* 21 */
    934	ALIGN64 char* Password;                /* 22 */
    935	ALIGN64 char* Domain;                  /* 23 */
    936	ALIGN64 char* PasswordHash;            /* 24 */
    937	ALIGN64 BOOL WaitForOutputBufferFlush; /* 25 */
    938	ALIGN64 UINT32 MaxTimeInCheckLoop;     /* 26 */
    939	ALIGN64 char* AcceptedCert;            /* 27 */
    940	ALIGN64 UINT32 AcceptedCertLength;     /* 28 */
    941	UINT64 padding0064[64 - 29];           /* 29 */
    942	UINT64 padding0128[128 - 64];          /* 64 */
    943
    944	/**
    945	 * GCC User Data Blocks
    946	 */
    947
    948	/* Client/Server Core Data */
    949	ALIGN64 UINT32 RdpVersion;            /* 128 */
    950	ALIGN64 UINT32 DesktopWidth;          /* 129 */
    951	ALIGN64 UINT32 DesktopHeight;         /* 130 */
    952	ALIGN64 UINT32 ColorDepth;            /* 131 */
    953	ALIGN64 UINT32 ConnectionType;        /* 132 */
    954	ALIGN64 UINT32 ClientBuild;           /* 133 */
    955	ALIGN64 char* ClientHostname;         /* 134 */
    956	ALIGN64 char* ClientProductId;        /* 135 */
    957	ALIGN64 UINT32 EarlyCapabilityFlags;  /* 136 */
    958	ALIGN64 BOOL NetworkAutoDetect;       /* 137 */
    959	ALIGN64 BOOL SupportAsymetricKeys;    /* 138 */
    960	ALIGN64 BOOL SupportErrorInfoPdu;     /* 139 */
    961	ALIGN64 BOOL SupportStatusInfoPdu;    /* 140 */
    962	ALIGN64 BOOL SupportMonitorLayoutPdu; /* 141 */
    963	ALIGN64 BOOL SupportGraphicsPipeline; /* 142 */
    964	ALIGN64 BOOL SupportDynamicTimeZone;  /* 143 */
    965	ALIGN64 BOOL SupportHeartbeatPdu;     /* 144 */
    966	ALIGN64 UINT32 DesktopPhysicalWidth;  /* 145 */
    967	ALIGN64 UINT32 DesktopPhysicalHeight; /* 146 */
    968	ALIGN64 UINT16 DesktopOrientation;    /* 147 */
    969	ALIGN64 UINT32 DesktopScaleFactor;    /* 148 */
    970	ALIGN64 UINT32 DeviceScaleFactor;     /* 149 */
    971	UINT64 padding0192[192 - 150];        /* 150 */
    972
    973	/* Client/Server Security Data */
    974	ALIGN64 BOOL UseRdpSecurityLayer;       /* 192 */
    975	ALIGN64 UINT32 EncryptionMethods;       /* 193 */
    976	ALIGN64 UINT32 ExtEncryptionMethods;    /* 194 */
    977	ALIGN64 UINT32 EncryptionLevel;         /* 195 */
    978	ALIGN64 BYTE* ServerRandom;             /* 196 */
    979	ALIGN64 UINT32 ServerRandomLength;      /* 197 */
    980	ALIGN64 BYTE* ServerCertificate;        /* 198 */
    981	ALIGN64 UINT32 ServerCertificateLength; /* 199 */
    982	ALIGN64 BYTE* ClientRandom;             /* 200 */
    983	ALIGN64 UINT32 ClientRandomLength;      /* 201 */
    984	UINT64 padding0256[256 - 202];          /* 202 */
    985
    986	/* Client Network Data */
    987	ALIGN64 UINT32 ChannelCount;          /* 256 */
    988	ALIGN64 UINT32 ChannelDefArraySize;   /* 257 */
    989	ALIGN64 CHANNEL_DEF* ChannelDefArray; /* 258 */
    990	UINT64 padding0320[320 - 259];        /* 259 */
    991
    992	/* Client Cluster Data */
    993	ALIGN64 UINT32 ClusterInfoFlags;    /* 320 */
    994	ALIGN64 UINT32 RedirectedSessionId; /* 321 */
    995	ALIGN64 BOOL ConsoleSession;        /* 322 */
    996	UINT64 padding0384[384 - 323];      /* 323 */
    997
    998	/* Client Monitor Data */
    999	ALIGN64 UINT32 MonitorCount;         /*    384 */
   1000	ALIGN64 UINT32 MonitorDefArraySize;  /*    385 */
   1001	ALIGN64 rdpMonitor* MonitorDefArray; /*    386 */
   1002	ALIGN64 BOOL SpanMonitors;           /*    387 */
   1003	ALIGN64 BOOL UseMultimon;            /*    388 */
   1004	ALIGN64 BOOL ForceMultimon;          /*    389 */
   1005	ALIGN64 UINT32 DesktopPosX;          /*    390 */
   1006	ALIGN64 UINT32 DesktopPosY;          /*    391 */
   1007	ALIGN64 BOOL ListMonitors;           /*    392 */
   1008	ALIGN64 UINT32* MonitorIds;          /*    393 */
   1009	ALIGN64 UINT32 NumMonitorIds;        /*    394 */
   1010	ALIGN64 UINT32 MonitorLocalShiftX;   /*395 */
   1011	ALIGN64 UINT32 MonitorLocalShiftY;   /*    396 */
   1012	ALIGN64 BOOL HasMonitorAttributes;   /*    397 */
   1013	UINT64 padding0448[448 - 398];       /* 398 */
   1014
   1015	/* Client Message Channel Data */
   1016	UINT64 padding0512[512 - 448]; /* 448 */
   1017
   1018	/* Client Multitransport Channel Data */
   1019	ALIGN64 UINT32 MultitransportFlags; /* 512 */
   1020	ALIGN64 BOOL SupportMultitransport; /* 513 */
   1021	UINT64 padding0576[576 - 514];      /* 514 */
   1022	UINT64 padding0640[640 - 576];      /* 576 */
   1023
   1024	/*
   1025	 * Client Info
   1026	 */
   1027
   1028	/* Client Info (Shell) */
   1029	ALIGN64 char* AlternateShell;        /* 640 */
   1030	ALIGN64 char* ShellWorkingDirectory; /* 641 */
   1031	UINT64 padding0704[704 - 642];       /* 642 */
   1032
   1033	/* Client Info Flags */
   1034	ALIGN64 BOOL AutoLogonEnabled;       /* 704 */
   1035	ALIGN64 BOOL CompressionEnabled;     /* 705 */
   1036	ALIGN64 BOOL DisableCtrlAltDel;      /* 706 */
   1037	ALIGN64 BOOL EnableWindowsKey;       /* 707 */
   1038	ALIGN64 BOOL MaximizeShell;          /* 708 */
   1039	ALIGN64 BOOL LogonNotify;            /* 709 */
   1040	ALIGN64 BOOL LogonErrors;            /* 710 */
   1041	ALIGN64 BOOL MouseAttached;          /* 711 */
   1042	ALIGN64 BOOL MouseHasWheel;          /* 712 */
   1043	ALIGN64 BOOL RemoteConsoleAudio;     /* 713 */
   1044	ALIGN64 BOOL AudioPlayback;          /* 714 */
   1045	ALIGN64 BOOL AudioCapture;           /* 715 */
   1046	ALIGN64 BOOL VideoDisable;           /* 716 */
   1047	ALIGN64 BOOL PasswordIsSmartcardPin; /* 717 */
   1048	ALIGN64 BOOL UsingSavedCredentials;  /* 718 */
   1049	ALIGN64 BOOL ForceEncryptedCsPdu;    /* 719 */
   1050	ALIGN64 BOOL HiDefRemoteApp;         /* 720 */
   1051	ALIGN64 UINT32 CompressionLevel;     /* 721 */
   1052	UINT64 padding0768[768 - 722];       /* 722 */
   1053
   1054	/* Client Info (Extra) */
   1055	ALIGN64 BOOL IPv6Enabled;      /* 768 */
   1056	ALIGN64 char* ClientAddress;   /* 769 */
   1057	ALIGN64 char* ClientDir;       /* 770 */
   1058	UINT64 padding0832[832 - 771]; /* 771 */
   1059
   1060	/* Client Info (Auto Reconnection) */
   1061	ALIGN64 BOOL AutoReconnectionEnabled;                     /* 832 */
   1062	ALIGN64 UINT32 AutoReconnectMaxRetries;                   /* 833 */
   1063	ALIGN64 ARC_CS_PRIVATE_PACKET* ClientAutoReconnectCookie; /* 834 */
   1064	ALIGN64 ARC_SC_PRIVATE_PACKET* ServerAutoReconnectCookie; /* 835 */
   1065	ALIGN64 BOOL PrintReconnectCookie;                        /* 836 */
   1066	UINT64 padding0896[896 - 837];                            /* 837 */
   1067
   1068	/* Client Info (Time Zone) */
   1069	ALIGN64 TIME_ZONE_INFORMATION* ClientTimeZone; /* 896 */
   1070	ALIGN64 char* DynamicDSTTimeZoneKeyName;       /* 897 */
   1071	ALIGN64 BOOL DynamicDaylightTimeDisabled;      /* 898 */
   1072	UINT64 padding0960[960 - 899];                 /* 899 */
   1073
   1074	/* Client Info (Performance Flags) */
   1075	ALIGN64 UINT32 PerformanceFlags;      /* 960 */
   1076	ALIGN64 BOOL AllowFontSmoothing;      /* 961 */
   1077	ALIGN64 BOOL DisableWallpaper;        /* 962 */
   1078	ALIGN64 BOOL DisableFullWindowDrag;   /* 963 */
   1079	ALIGN64 BOOL DisableMenuAnims;        /* 964 */
   1080	ALIGN64 BOOL DisableThemes;           /* 965 */
   1081	ALIGN64 BOOL DisableCursorShadow;     /* 966 */
   1082	ALIGN64 BOOL DisableCursorBlinking;   /* 967 */
   1083	ALIGN64 BOOL AllowDesktopComposition; /* 968 */
   1084	UINT64 padding1024[1024 - 969];       /* 969 */
   1085
   1086	/* Remote Assistance */
   1087	ALIGN64 BOOL RemoteAssistanceMode;           /* 1024 */
   1088	ALIGN64 char* RemoteAssistanceSessionId;     /* 1025 */
   1089	ALIGN64 char* RemoteAssistancePassStub;      /* 1026 */
   1090	ALIGN64 char* RemoteAssistancePassword;      /* 1027 */
   1091	ALIGN64 char* RemoteAssistanceRCTicket;      /* 1028 */
   1092	ALIGN64 BOOL EncomspVirtualChannel;          /* 1029 */
   1093	ALIGN64 BOOL RemdeskVirtualChannel;          /* 1030 */
   1094	ALIGN64 BOOL LyncRdpMode;                    /* 1031 */
   1095	ALIGN64 BOOL RemoteAssistanceRequestControl; /* 1032 */
   1096	UINT64 padding1088[1088 - 1033];             /* 1033 */
   1097
   1098	/**
   1099	 * X.224 Connection Request/Confirm
   1100	 */
   1101
   1102	/* Protocol Security */
   1103	ALIGN64 BOOL TlsSecurity;                  /* 1088 */
   1104	ALIGN64 BOOL NlaSecurity;                  /* 1089 */
   1105	ALIGN64 BOOL RdpSecurity;                  /* 1090 */
   1106	ALIGN64 BOOL ExtSecurity;                  /* 1091 */
   1107	ALIGN64 BOOL Authentication;               /* 1092 */
   1108	ALIGN64 UINT32 RequestedProtocols;         /* 1093 */
   1109	ALIGN64 UINT32 SelectedProtocol;           /* 1094 */
   1110	ALIGN64 UINT32 NegotiationFlags;           /* 1095 */
   1111	ALIGN64 BOOL NegotiateSecurityLayer;       /* 1096 */
   1112	ALIGN64 BOOL RestrictedAdminModeRequired;  /* 1097 */
   1113	ALIGN64 char* AuthenticationServiceClass;  /* 1098 */
   1114	ALIGN64 BOOL DisableCredentialsDelegation; /* 1099 */
   1115	ALIGN64 UINT32 AuthenticationLevel;        /* 1100 */
   1116	ALIGN64 char* AllowedTlsCiphers;           /* 1101 */
   1117	ALIGN64 BOOL VmConnectMode;                /* 1102 */
   1118	ALIGN64 char* NtlmSamFile;                 /* 1103 */
   1119	ALIGN64 BOOL FIPSMode;                     /* 1104 */
   1120	ALIGN64 UINT32 TlsSecLevel;                /* 1105 */
   1121	ALIGN64 UINT16 TLSMinVersion;              /* 1106 */
   1122	ALIGN64 UINT16 TLSMaxVersion;              /* 1107 */
   1123	UINT64 padding1152[1152 - 1108];           /* 1108 */
   1124
   1125	/* Connection Cookie */
   1126	ALIGN64 BOOL MstscCookieMode;      /* 1152 */
   1127	ALIGN64 UINT32 CookieMaxLength;    /* 1153 */
   1128	ALIGN64 UINT32 PreconnectionId;    /* 1154 */
   1129	ALIGN64 char* PreconnectionBlob;   /* 1155 */
   1130	ALIGN64 BOOL SendPreconnectionPdu; /* 1156 */
   1131	UINT64 padding1216[1216 - 1157];   /* 1157 */
   1132
   1133	/* Server Redirection */
   1134	ALIGN64 UINT32 RedirectionFlags;              /* 1216 */
   1135	ALIGN64 char* TargetNetAddress;               /* 1217 */
   1136	ALIGN64 BYTE* LoadBalanceInfo;                /* 1218 */
   1137	ALIGN64 UINT32 LoadBalanceInfoLength;         /* 1219 */
   1138	ALIGN64 char* RedirectionUsername;            /* 1220 */
   1139	ALIGN64 char* RedirectionDomain;              /* 1221 */
   1140	ALIGN64 BYTE* RedirectionPassword;            /* 1222 */
   1141	ALIGN64 UINT32 RedirectionPasswordLength;     /* 1223 */
   1142	ALIGN64 char* RedirectionTargetFQDN;          /* 1224 */
   1143	ALIGN64 char* RedirectionTargetNetBiosName;   /* 1225 */
   1144	ALIGN64 BYTE* RedirectionTsvUrl;              /* 1226 */
   1145	ALIGN64 UINT32 RedirectionTsvUrlLength;       /* 1227 */
   1146	ALIGN64 UINT32 TargetNetAddressCount;         /* 1228 */
   1147	ALIGN64 char** TargetNetAddresses;            /* 1229 */
   1148	ALIGN64 UINT32* TargetNetPorts;               /* 1230 */
   1149	ALIGN64 char* RedirectionAcceptedCert;        /* 1231 */
   1150	ALIGN64 UINT32 RedirectionAcceptedCertLength; /* 1232 */
   1151	ALIGN64 UINT32 RedirectionPreferType;         /* 1233 */
   1152	ALIGN64 BYTE* RedirectionGuid;                /* 1234 */
   1153	ALIGN64 UINT32 RedirectionGuidLength;         /* 1235 */
   1154	ALIGN64 BYTE* RedirectionTargetCertificate;   /* 1236 */
   1155	ALIGN64 UINT32 RedirectionTargetCertificateLength; /* 1237 */
   1156	UINT64 padding1280[1280 - 1238];                   /* 1238 */
   1157
   1158	/**
   1159	 * Security
   1160	 */
   1161
   1162	/* Credentials Cache */
   1163	ALIGN64 BYTE* Password51;          /* 1280 */
   1164	ALIGN64 UINT32 Password51Length;   /* 1281 */
   1165	ALIGN64 BOOL SmartcardLogon;       /* 1282 */
   1166	ALIGN64 BOOL PromptForCredentials; /* 1283 */
   1167	UINT64 padding1344[1344 - 1284];   /* 1284 */
   1168
   1169	/* Kerberos Authentication */
   1170	ALIGN64 char* KerberosKdc;       /* 1344 */
   1171	ALIGN64 char* KerberosRealm;     /* 1345 */
   1172	UINT64 padding1408[1408 - 1346]; /* 1346 */
   1173
   1174	/* Server Certificate */
   1175	ALIGN64 BOOL IgnoreCertificate;                /* 1408 */
   1176	ALIGN64 char* CertificateName;                 /* 1409 */
   1177	ALIGN64 char* CertificateFile;                 /* 1410 */
   1178	ALIGN64 char* PrivateKeyFile;                  /* 1411 */
   1179	ALIGN64 char* RdpKeyFile;                      /* 1412 */
   1180	ALIGN64 rdpRsaKey* RdpServerRsaKey;            /* 1413 */
   1181	ALIGN64 rdpCertificate* RdpServerCertificate;  /* 1414 */
   1182	ALIGN64 BOOL ExternalCertificateManagement;    /* 1415 */
   1183	ALIGN64 char* CertificateContent;              /* 1416 */
   1184	ALIGN64 char* PrivateKeyContent;               /* 1417 */
   1185	ALIGN64 char* RdpKeyContent;                   /* 1418 */
   1186	ALIGN64 BOOL AutoAcceptCertificate;            /* 1419 */
   1187	ALIGN64 BOOL AutoDenyCertificate;              /* 1420 */
   1188	ALIGN64 char* CertificateAcceptedFingerprints; /* 1421 */
   1189	UINT64 padding1472[1472 - 1422];               /* 1422 */
   1190	UINT64 padding1536[1536 - 1472];               /* 1472 */
   1191
   1192	/**
   1193	 * User Interface
   1194	 */
   1195
   1196	/* Window Settings */
   1197	ALIGN64 BOOL Workarea;                /* 1536 */
   1198	ALIGN64 BOOL Fullscreen;              /* 1537 */
   1199	ALIGN64 UINT32 PercentScreen;         /* 1538 */
   1200	ALIGN64 BOOL GrabKeyboard;            /* 1539 */
   1201	ALIGN64 BOOL Decorations;             /* 1540 */
   1202	ALIGN64 BOOL MouseMotion;             /* 1541 */
   1203	ALIGN64 char* WindowTitle;            /* 1542 */
   1204	ALIGN64 UINT64 ParentWindowId;        /* 1543 */
   1205	ALIGN64 BOOL AsyncInput;              /* 1544 */
   1206	ALIGN64 BOOL AsyncUpdate;             /* 1545 */
   1207	ALIGN64 BOOL AsyncChannels;           /* 1546 */
   1208	UINT64 padding1548[1548 - 1547];      /* 1547 */
   1209	ALIGN64 BOOL ToggleFullscreen;        /* 1548 */
   1210	ALIGN64 char* WmClass;                /* 1549 */
   1211	ALIGN64 BOOL EmbeddedWindow;          /* 1550 */
   1212	ALIGN64 BOOL SmartSizing;             /* 1551 */
   1213	ALIGN64 INT32 XPan;                   /* 1552 */
   1214	ALIGN64 INT32 YPan;                   /* 1553 */
   1215	ALIGN64 UINT32 SmartSizingWidth;      /* 1554 */
   1216	ALIGN64 UINT32 SmartSizingHeight;     /* 1555 */
   1217	ALIGN64 BOOL PercentScreenUseWidth;   /* 1556 */
   1218	ALIGN64 BOOL PercentScreenUseHeight;  /* 1557 */
   1219	ALIGN64 BOOL DynamicResolutionUpdate; /* 1558 */
   1220	ALIGN64 BOOL GrabMouse;               /* 1559 */
   1221	UINT64 padding1601[1601 - 1560];      /* 1560 */
   1222
   1223	/* Miscellaneous */
   1224	ALIGN64 BOOL SoftwareGdi;          /* 1601 */
   1225	ALIGN64 BOOL LocalConnection;      /* 1602 */
   1226	ALIGN64 BOOL AuthenticationOnly;   /* 1603 */
   1227	ALIGN64 BOOL CredentialsFromStdin; /* 1604 */
   1228	ALIGN64 BOOL UnmapButtons;         /* 1605 */
   1229	ALIGN64 BOOL OldLicenseBehaviour;  /* 1606 */
   1230	UINT64 padding1664[1664 - 1607];   /* 1607 */
   1231
   1232	/* Names */
   1233	ALIGN64 char* ComputerName;      /* 1664 */
   1234	UINT64 padding1728[1728 - 1665]; /* 1665 */
   1235
   1236	/* Files */
   1237	ALIGN64 char* ConnectionFile;    /* 1728 */
   1238	ALIGN64 char* AssistanceFile;    /* 1729 */
   1239	UINT64 padding1792[1792 - 1730]; /* 1730 */
   1240
   1241	/* Paths */
   1242	ALIGN64 char* HomePath;          /* 1792 */
   1243	ALIGN64 char* ConfigPath;        /* 1793 */
   1244	ALIGN64 char* CurrentPath;       /* 1794 */
   1245	UINT64 padding1856[1856 - 1795]; /* 1795 */
   1246
   1247	/* Recording */
   1248	ALIGN64 BOOL DumpRemoteFx;       /* 1856 */
   1249	ALIGN64 BOOL PlayRemoteFx;       /* 1857 */
   1250	ALIGN64 char* DumpRemoteFxFile;  /* 1858 */
   1251	ALIGN64 char* PlayRemoteFxFile;  /* 1859 */
   1252	UINT64 padding1920[1920 - 1860]; /* 1860 */
   1253	UINT64 padding1984[1984 - 1920]; /* 1920 */
   1254
   1255	/**
   1256	 * Gateway
   1257	 */
   1258
   1259	/* Gateway */
   1260	ALIGN64 UINT32 GatewayUsageMethod;        /* 1984 */
   1261	ALIGN64 UINT32 GatewayPort;               /* 1985 */
   1262	ALIGN64 char* GatewayHostname;            /* 1986 */
   1263	ALIGN64 char* GatewayUsername;            /* 1987 */
   1264	ALIGN64 char* GatewayPassword;            /* 1988 */
   1265	ALIGN64 char* GatewayDomain;              /* 1989 */
   1266	ALIGN64 UINT32 GatewayCredentialsSource;  /* 1990 */
   1267	ALIGN64 BOOL GatewayUseSameCredentials;   /* 1991 */
   1268	ALIGN64 BOOL GatewayEnabled;              /* 1992 */
   1269	ALIGN64 BOOL GatewayBypassLocal;          /* 1993 */
   1270	ALIGN64 BOOL GatewayRpcTransport;         /* 1994 */
   1271	ALIGN64 BOOL GatewayHttpTransport;        /* 1995 */
   1272	ALIGN64 BOOL GatewayUdpTransport;         /* 1996 */
   1273	ALIGN64 char* GatewayAccessToken;         /* 1997 */
   1274	ALIGN64 char* GatewayAcceptedCert;        /* 1998 */
   1275	ALIGN64 UINT32 GatewayAcceptedCertLength; /* 1999 */
   1276	ALIGN64 BOOL GatewayHttpUseWebsockets;    /* 2000 */
   1277	UINT64 padding2015[2015 - 2001];          /* 2001 */
   1278
   1279	/* Proxy */
   1280	ALIGN64 UINT32 ProxyType;        /* 2015 */
   1281	ALIGN64 char* ProxyHostname;     /* 2016 */
   1282	ALIGN64 UINT16 ProxyPort;        /* 2017 */
   1283	ALIGN64 char* ProxyUsername;     /* 2018 */
   1284	ALIGN64 char* ProxyPassword;     /* 2019 */
   1285	UINT64 padding2112[2112 - 2020]; /* 2020 */
   1286
   1287	/**
   1288	 * RemoteApp
   1289	 */
   1290
   1291	/* RemoteApp */
   1292	ALIGN64 BOOL RemoteApplicationMode;               /* 2112 */
   1293	ALIGN64 char* RemoteApplicationName;              /* 2113 */
   1294	ALIGN64 char* RemoteApplicationIcon;              /* 2114 */
   1295	ALIGN64 char* RemoteApplicationProgram;           /* 2115 */
   1296	ALIGN64 char* RemoteApplicationFile;              /* 2116 */
   1297	ALIGN64 char* RemoteApplicationGuid;              /* 2117 */
   1298	ALIGN64 char* RemoteApplicationCmdLine;           /* 2118 */
   1299	ALIGN64 UINT32 RemoteApplicationExpandCmdLine;    /* 2119 */
   1300	ALIGN64 UINT32 RemoteApplicationExpandWorkingDir; /* 2120 */
   1301	ALIGN64 BOOL DisableRemoteAppCapsCheck;           /* 2121 */
   1302	ALIGN64 UINT32 RemoteAppNumIconCaches;            /* 2122 */
   1303	ALIGN64 UINT32 RemoteAppNumIconCacheEntries;      /* 2123 */
   1304	ALIGN64 BOOL RemoteAppLanguageBarSupported;       /* 2124 */
   1305	ALIGN64 UINT32 RemoteWndSupportLevel;             /* 2125 */
   1306	ALIGN64 UINT32 RemoteApplicationSupportLevel;     /* 2126 */
   1307	ALIGN64 UINT32 RemoteApplicationSupportMask;      /* 2127 */
   1308	ALIGN64 char* RemoteApplicationWorkingDir;        /* 2128 */
   1309	UINT64 padding2176[2176 - 2129];                  /* 2129 */
   1310	UINT64 padding2240[2240 - 2176];                  /* 2176 */
   1311
   1312	/**
   1313	 * Mandatory Capabilities
   1314	 */
   1315
   1316	/* Capabilities */
   1317	ALIGN64 BYTE* ReceivedCapabilities;      /* 2240 */
   1318	ALIGN64 UINT32 ReceivedCapabilitiesSize; /* 2241 */
   1319	UINT64 padding2304[2304 - 2242];         /* 2242 */
   1320
   1321	/* General Capabilities */
   1322	ALIGN64 UINT32 OsMajorType;             /* 2304 */
   1323	ALIGN64 UINT32 OsMinorType;             /* 2305 */
   1324	ALIGN64 BOOL RefreshRect;               /* 2306 */
   1325	ALIGN64 BOOL SuppressOutput;            /* 2307 */
   1326	ALIGN64 BOOL FastPathOutput;            /* 2308 */
   1327	ALIGN64 BOOL SaltedChecksum;            /* 2309 */
   1328	ALIGN64 BOOL LongCredentialsSupported;  /* 2310 */
   1329	ALIGN64 BOOL NoBitmapCompressionHeader; /* 2311 */
   1330	ALIGN64 BOOL BitmapCompressionDisabled; /* 2312 */
   1331	UINT64 padding2368[2368 - 2313];        /* 2313 */
   1332
   1333	/* Bitmap Capabilities */
   1334	ALIGN64 BOOL DesktopResize;                 /* 2368 */
   1335	ALIGN64 BOOL DrawAllowDynamicColorFidelity; /* 2369 */
   1336	ALIGN64 BOOL DrawAllowColorSubsampling;     /* 2370 */
   1337	ALIGN64 BOOL DrawAllowSkipAlpha;            /* 2371 */
   1338	UINT64 padding2432[2432 - 2372];            /* 2372 */
   1339
   1340	/* Order Capabilities */
   1341	ALIGN64 BYTE* OrderSupport;                   /* 2432 */
   1342	ALIGN64 BOOL BitmapCacheV3Enabled;            /* 2433 */
   1343	ALIGN64 BOOL AltSecFrameMarkerSupport;        /* 2434 */
   1344	ALIGN64 BOOL AllowUnanouncedOrdersFromServer; /* 2435 */
   1345	UINT64 padding2497[2497 - 2436];              /* 2436 */
   1346
   1347	/* Bitmap Cache Capabilities */
   1348	ALIGN64 BOOL BitmapCacheEnabled;                          /* 2497 */
   1349	ALIGN64 UINT32 BitmapCacheVersion;                        /* 2498 */
   1350	ALIGN64 BOOL AllowCacheWaitingList;                       /* 2499 */
   1351	ALIGN64 BOOL BitmapCachePersistEnabled;                   /* 2500 */
   1352	ALIGN64 UINT32 BitmapCacheV2NumCells;                     /* 2501 */
   1353	ALIGN64 BITMAP_CACHE_V2_CELL_INFO* BitmapCacheV2CellInfo; /* 2502 */
   1354	UINT64 padding2560[2560 - 2503];                          /* 2503 */
   1355
   1356	/* Pointer Capabilities */
   1357	ALIGN64 BOOL ColorPointerFlag;   /* 2560 */
   1358	ALIGN64 UINT32 PointerCacheSize; /* 2561 */
   1359	UINT64 padding2624[2622 - 2562]; /* 2562 */
   1360
   1361	/* Input Capabilities */
   1362	ALIGN64 char* KeyboardRemappingList; /* 2622 */
   1363	ALIGN64 UINT32 KeyboardCodePage;     /* 2623 */
   1364	ALIGN64 UINT32 KeyboardLayout;       /* 2624 */
   1365	ALIGN64 UINT32 KeyboardType;         /* 2625 */
   1366	ALIGN64 UINT32 KeyboardSubType;      /* 2626 */
   1367	ALIGN64 UINT32 KeyboardFunctionKey;  /* 2627 */
   1368	ALIGN64 char* ImeFileName;           /* 2628 */
   1369	ALIGN64 BOOL UnicodeInput;           /* 2629 */
   1370	ALIGN64 BOOL FastPathInput;          /* 2630 */
   1371	ALIGN64 BOOL MultiTouchInput;        /* 2631 */
   1372	ALIGN64 BOOL MultiTouchGestures;     /* 2632 */
   1373	ALIGN64 UINT32 KeyboardHook;         /* 2633 */
   1374	ALIGN64 BOOL HasHorizontalWheel;     /* 2634 */
   1375	ALIGN64 BOOL HasExtendedMouseEvent;  /* 2635 */
   1376	UINT64 padding2688[2688 - 2636];     /* 2636 */
   1377
   1378	/* Brush Capabilities */
   1379	ALIGN64 UINT32 BrushSupportLevel; /* 2688 */
   1380	UINT64 padding2752[2752 - 2689];  /* 2689 */
   1381
   1382	/* Glyph Cache Capabilities */
   1383	ALIGN64 UINT32 GlyphSupportLevel;           /* 2752 */
   1384	ALIGN64 GLYPH_CACHE_DEFINITION* GlyphCache; /* 2753 */
   1385	ALIGN64 GLYPH_CACHE_DEFINITION* FragCache;  /* 2754 */
   1386	UINT64 padding2816[2816 - 2755];            /* 2755 */
   1387
   1388	/* Offscreen Bitmap Cache */
   1389	ALIGN64 UINT32 OffscreenSupportLevel; /* 2816 */
   1390	ALIGN64 UINT32 OffscreenCacheSize;    /* 2817 */
   1391	ALIGN64 UINT32 OffscreenCacheEntries; /* 2818 */
   1392	UINT64 padding2880[2880 - 2819];      /* 2819 */
   1393
   1394	/* Virtual Channel Capabilities */
   1395	ALIGN64 UINT32 VirtualChannelCompressionFlags; /* 2880 */
   1396	ALIGN64 UINT32 VirtualChannelChunkSize;        /* 2881 */
   1397	UINT64 padding2944[2944 - 2882];               /* 2882 */
   1398
   1399	/* Sound Capabilities */
   1400	ALIGN64 BOOL SoundBeepsEnabled;  /* 2944 */
   1401	UINT64 padding3008[3008 - 2945]; /* 2945 */
   1402	UINT64 padding3072[3072 - 3008]; /* 3008 */
   1403
   1404	/**
   1405	 * Optional Capabilities
   1406	 */
   1407
   1408	/* Bitmap Cache Host Capabilities */
   1409	UINT64 padding3136[3136 - 3072]; /* 3072 */
   1410
   1411	/* Control Capabilities */
   1412	UINT64 padding3200[3200 - 3136]; /* 3136 */
   1413
   1414	/* Window Activation Capabilities */
   1415	UINT64 padding3264[3264 - 3200]; /* 3200 */
   1416
   1417	/* Font Capabilities */
   1418	UINT64 padding3328[3328 - 3264]; /* 3264 */
   1419
   1420	/* Multifragment Update Capabilities */
   1421	ALIGN64 UINT32 MultifragMaxRequestSize; /* 3328 */
   1422	UINT64 padding3392[3392 - 3329];        /* 3329 */
   1423
   1424	/* Large Pointer Update Capabilities */
   1425	ALIGN64 UINT32 LargePointerFlag; /* 3392 */
   1426	UINT64 padding3456[3456 - 3393]; /* 3393 */
   1427
   1428	/* Desktop Composition Capabilities */
   1429	ALIGN64 UINT32 CompDeskSupportLevel; /* 3456 */
   1430	UINT64 padding3520[3520 - 3457];     /* 3457 */
   1431
   1432	/* Surface Commands Capabilities */
   1433	ALIGN64 BOOL SurfaceCommandsEnabled;    /* 3520 */
   1434	ALIGN64 BOOL FrameMarkerCommandEnabled; /* 3521 */
   1435	ALIGN64 BOOL SurfaceFrameMarkerEnabled; /* 3522 */
   1436	UINT64 padding3584[3584 - 3523];        /* 3523 */
   1437	UINT64 padding3648[3648 - 3584];        /* 3584 */
   1438
   1439	/*
   1440	 * Bitmap Codecs Capabilities
   1441	 */
   1442
   1443	/* RemoteFX */
   1444	ALIGN64 BOOL RemoteFxOnly;           /* 3648 */
   1445	ALIGN64 BOOL RemoteFxCodec;          /* 3649 */
   1446	ALIGN64 UINT32 RemoteFxCodecId;      /* 3650 */
   1447	ALIGN64 UINT32 RemoteFxCodecMode;    /* 3651 */
   1448	ALIGN64 BOOL RemoteFxImageCodec;     /* 3652 */
   1449	ALIGN64 UINT32 RemoteFxCaptureFlags; /* 3653 */
   1450	UINT64 padding3712[3712 - 3654];     /* 3654 */
   1451
   1452	/* NSCodec */
   1453	ALIGN64 BOOL NSCodec;                          /* 3712 */
   1454	ALIGN64 UINT32 NSCodecId;                      /* 3713 */
   1455	ALIGN64 UINT32 FrameAcknowledge;               /* 3714 */
   1456	ALIGN64 UINT32 NSCodecColorLossLevel;          /* 3715 */
   1457	ALIGN64 BOOL NSCodecAllowSubsampling;          /* 3716 */
   1458	ALIGN64 BOOL NSCodecAllowDynamicColorFidelity; /* 3717 */
   1459	UINT64 padding3776[3776 - 3718];               /* 3718 */
   1460
   1461	/* JPEG */
   1462	ALIGN64 BOOL JpegCodec;          /* 3776 */
   1463	ALIGN64 UINT32 JpegCodecId;      /* 3777 */
   1464	ALIGN64 UINT32 JpegQuality;      /* 3778 */
   1465	UINT64 padding3840[3840 - 3779]; /* 3779 */
   1466
   1467	ALIGN64 BOOL GfxThinClient;      /* 3840 */
   1468	ALIGN64 BOOL GfxSmallCache;      /* 3841 */
   1469	ALIGN64 BOOL GfxProgressive;     /* 3842 */
   1470	ALIGN64 BOOL GfxProgressiveV2;   /* 3843 */
   1471	ALIGN64 BOOL GfxH264;            /* 3844 */
   1472	ALIGN64 BOOL GfxAVC444;          /* 3845 */
   1473	ALIGN64 BOOL GfxSendQoeAck;      /* 3846 */
   1474	ALIGN64 BOOL GfxAVC444v2;        /* 3847 */
   1475	ALIGN64 UINT32 GfxCapsFilter;    /* 3848 */
   1476	UINT64 padding3904[3904 - 3849]; /* 3849 */
   1477
   1478	/**
   1479	 * Caches
   1480	 */
   1481
   1482	/* Bitmap Cache V3 */
   1483	ALIGN64 UINT32 BitmapCacheV3CodecId; /* 3904 */
   1484	UINT64 padding3968[3968 - 3905];     /* 3905 */
   1485
   1486	/* Draw Nine Grid */
   1487	ALIGN64 BOOL DrawNineGridEnabled;        /* 3968 */
   1488	ALIGN64 UINT32 DrawNineGridCacheSize;    /* 3969 */
   1489	ALIGN64 UINT32 DrawNineGridCacheEntries; /* 3970 */
   1490	UINT64 padding4032[4032 - 3971];         /* 3971 */
   1491
   1492	/* Draw GDI+ */
   1493	ALIGN64 BOOL DrawGdiPlusEnabled;      /* 4032 */
   1494	ALIGN64 BOOL DrawGdiPlusCacheEnabled; /* 4033 */
   1495	UINT64 padding4096[4096 - 4034];      /* 4034 */
   1496	UINT64 padding4160[4160 - 4096];      /* 4096 */
   1497
   1498	/**
   1499	 * Device Redirection
   1500	 */
   1501
   1502	/* Device Redirection */
   1503	ALIGN64 BOOL DeviceRedirection;     /* 4160 */
   1504	ALIGN64 UINT32 DeviceCount;         /* 4161 */
   1505	ALIGN64 UINT32 DeviceArraySize;     /* 4162 */
   1506	ALIGN64 RDPDR_DEVICE** DeviceArray; /* 4163 */
   1507	UINT64 padding4288[4288 - 4164];    /* 4164 */
   1508
   1509	/* Drive Redirection */
   1510	ALIGN64 BOOL RedirectDrives;     /* 4288 */
   1511	ALIGN64 BOOL RedirectHomeDrive;  /* 4289 */
   1512	ALIGN64 char* DrivesToRedirect;  /* 4290 */
   1513	UINT64 padding4416[4416 - 4291]; /* 4291 */
   1514
   1515	/* Smartcard Redirection */
   1516	ALIGN64 BOOL RedirectSmartCards; /* 4416 */
   1517	UINT64 padding4544[4544 - 4417]; /* 4417 */
   1518
   1519	/* Printer Redirection */
   1520	ALIGN64 BOOL RedirectPrinters;   /* 4544 */
   1521	UINT64 padding4672[4672 - 4545]; /* 4545 */
   1522
   1523	/* Serial and Parallel Port Redirection */
   1524	ALIGN64 BOOL RedirectSerialPorts;   /* 4672 */
   1525	ALIGN64 BOOL RedirectParallelPorts; /* 4673 */
   1526	ALIGN64 BOOL PreferIPv6OverIPv4;    /* 4674 */
   1527	UINT64 padding4800[4800 - 4675];    /* 4675 */
   1528
   1529	/**
   1530	 * Other Redirection
   1531	 */
   1532
   1533	ALIGN64 BOOL RedirectClipboard;  /* 4800 */
   1534	UINT64 padding4928[4928 - 4801]; /* 4801 */
   1535
   1536	/**
   1537	 * Static Virtual Channels
   1538	 */
   1539
   1540	ALIGN64 UINT32 StaticChannelCount;       /* 4928 */
   1541	ALIGN64 UINT32 StaticChannelArraySize;   /* 4929 */
   1542	ALIGN64 ADDIN_ARGV** StaticChannelArray; /* 4930 */
   1543	UINT64 padding5056[5056 - 4931];         /* 4931 */
   1544
   1545	/**
   1546	 * Dynamic Virtual Channels
   1547	 */
   1548
   1549	ALIGN64 UINT32 DynamicChannelCount;       /* 5056 */
   1550	ALIGN64 UINT32 DynamicChannelArraySize;   /* 5057 */
   1551	ALIGN64 ADDIN_ARGV** DynamicChannelArray; /* 5058 */
   1552	ALIGN64 BOOL SupportDynamicChannels;      /* 5059 */
   1553	UINT64 padding5184[5184 - 5060];          /* 5060 */
   1554
   1555	ALIGN64 BOOL SupportEchoChannel;      /* 5184 */
   1556	ALIGN64 BOOL SupportDisplayControl;   /* 5185 */
   1557	ALIGN64 BOOL SupportGeometryTracking; /* 5186 */
   1558	ALIGN64 BOOL SupportSSHAgentChannel;  /* 5187 */
   1559	ALIGN64 BOOL SupportVideoOptimized;   /* 5188 */
   1560	ALIGN64 char* RDP2TCPArgs;            /* 5189 */
   1561	ALIGN64 BOOL TcpKeepAlive;            /* 5190 */
   1562	ALIGN64 UINT32 TcpKeepAliveRetries;   /* 5191 */
   1563	ALIGN64 UINT32 TcpKeepAliveDelay;     /* 5192 */
   1564	ALIGN64 UINT32 TcpKeepAliveInterval;  /* 5193 */
   1565	ALIGN64 UINT32 TcpAckTimeout;         /* 5194 */
   1566	UINT64 padding5197[5197 - 5195];      /* 5195 */
   1567	ALIGN64 UINT32 TcpConnectTimeout;     /* 5197 */
   1568	UINT64 padding5312[5312 - 5198];      /* 5198 */
   1569
   1570	/**
   1571	 * WARNING: End of ABI stable zone!
   1572	 *
   1573	 * The zone below this point is ABI unstable, and
   1574	 * is therefore potentially subject to ABI breakage.
   1575	 */
   1576
   1577	/*
   1578	 * Extensions
   1579	 */
   1580
   1581	/* Extensions */
   1582	ALIGN64 INT32 num_extensions;              /*  */
   1583	ALIGN64 struct rdp_ext_set extensions[16]; /*  */
   1584
   1585	ALIGN64 BYTE* SettingsModified; /* byte array marking fields that have been modified from their
   1586	                                   default value - currently UNUSED! */
   1587	ALIGN64 char* ActionScript;
   1588	ALIGN64 DWORD Floatbar;
   1589	ALIGN64 char* XSelectionAtom;
   1590};
   1591typedef struct rdp_settings rdpSettings;
   1592
   1593enum rdp_settings_type
   1594{
   1595	RDP_SETTINGS_TYPE_BOOL,
   1596	RDP_SETTINGS_TYPE_UINT16,
   1597	RDP_SETTINGS_TYPE_INT16,
   1598	RDP_SETTINGS_TYPE_UINT32,
   1599	RDP_SETTINGS_TYPE_INT32,
   1600	RDP_SETTINGS_TYPE_UINT64,
   1601	RDP_SETTINGS_TYPE_INT64,
   1602	RDP_SETTINGS_TYPE_STRING,
   1603	RDP_SETTINGS_TYPE_POINTER
   1604};
   1605
   1606#ifdef __cplusplus
   1607extern "C"
   1608{
   1609#endif
   1610
   1611/**
   1612 * rdpSettings creation flags
   1613 */
   1614#define FREERDP_SETTINGS_SERVER_MODE 0x00000001
   1615
   1616	FREERDP_API rdpSettings* freerdp_settings_new(DWORD flags);
   1617	FREERDP_API rdpSettings* freerdp_settings_clone(const rdpSettings* settings);
   1618	FREERDP_API BOOL freerdp_settings_copy(rdpSettings* dst, const rdpSettings* src);
   1619	FREERDP_API void freerdp_settings_free(rdpSettings* settings);
   1620
   1621	FREERDP_API int freerdp_addin_set_argument(ADDIN_ARGV* args, char* argument);
   1622	FREERDP_API int freerdp_addin_replace_argument(ADDIN_ARGV* args, char* previous,
   1623	                                               char* argument);
   1624	FREERDP_API int freerdp_addin_set_argument_value(ADDIN_ARGV* args, char* option, char* value);
   1625	FREERDP_API int freerdp_addin_replace_argument_value(ADDIN_ARGV* args, char* previous,
   1626	                                                     char* option, char* value);
   1627
   1628	FREERDP_API BOOL freerdp_device_collection_add(rdpSettings* settings, RDPDR_DEVICE* device);
   1629	FREERDP_API RDPDR_DEVICE* freerdp_device_collection_find(rdpSettings* settings,
   1630	                                                         const char* name);
   1631	FREERDP_API RDPDR_DEVICE* freerdp_device_collection_find_type(rdpSettings* settings,
   1632	                                                              UINT32 type);
   1633	FREERDP_API RDPDR_DEVICE* freerdp_device_clone(RDPDR_DEVICE* device);
   1634	FREERDP_API void freerdp_device_collection_free(rdpSettings* settings);
   1635
   1636	FREERDP_API BOOL freerdp_static_channel_collection_add(rdpSettings* settings,
   1637	                                                       ADDIN_ARGV* channel);
   1638	FREERDP_API ADDIN_ARGV* freerdp_static_channel_collection_find(rdpSettings* settings,
   1639	                                                               const char* name);
   1640	FREERDP_API ADDIN_ARGV* freerdp_static_channel_clone(ADDIN_ARGV* channel);
   1641	FREERDP_API void freerdp_static_channel_collection_free(rdpSettings* settings);
   1642
   1643	FREERDP_API BOOL freerdp_dynamic_channel_collection_add(rdpSettings* settings,
   1644	                                                        ADDIN_ARGV* channel);
   1645	FREERDP_API ADDIN_ARGV* freerdp_dynamic_channel_collection_find(rdpSettings* settings,
   1646	                                                                const char* name);
   1647	FREERDP_API ADDIN_ARGV* freerdp_dynamic_channel_clone(ADDIN_ARGV* channel);
   1648	FREERDP_API void freerdp_dynamic_channel_collection_free(rdpSettings* settings);
   1649
   1650	FREERDP_API void freerdp_target_net_addresses_free(rdpSettings* settings);
   1651	FREERDP_API BOOL freerdp_target_net_addresses_copy(rdpSettings* settings, char** addresses,
   1652	                                                   UINT32 count);
   1653
   1654	FREERDP_API void freerdp_performance_flags_make(rdpSettings* settings);
   1655	FREERDP_API void freerdp_performance_flags_split(rdpSettings* settings);
   1656
   1657	FREERDP_API BOOL freerdp_set_gateway_usage_method(rdpSettings* settings,
   1658	                                                  UINT32 GatewayUsageMethod);
   1659	FREERDP_API void freerdp_update_gateway_usage_method(rdpSettings* settings,
   1660	                                                     UINT32 GatewayEnabled,
   1661	                                                     UINT32 GatewayBypassLocal);
   1662
   1663#if !defined(DEFINE_NO_DEPRECATED)
   1664	/* DEPRECATED:
   1665	 * the functions freerdp_get_param_* and freerdp_set_param_* are deprecated.
   1666	 * use freerdp_settings_get_* and freerdp_settings_set_* as a replacement!
   1667	 */
   1668	FREERDP_API WINPR_DEPRECATED(BOOL freerdp_get_param_bool(const rdpSettings* settings, int id));
   1669	FREERDP_API WINPR_DEPRECATED(int freerdp_set_param_bool(rdpSettings* settings, int id,
   1670	                                                        BOOL param));
   1671
   1672	FREERDP_API WINPR_DEPRECATED(int freerdp_get_param_int(const rdpSettings* settings, int id));
   1673	FREERDP_API WINPR_DEPRECATED(int freerdp_set_param_int(rdpSettings* settings, int id,
   1674	                                                       int param));
   1675
   1676	FREERDP_API WINPR_DEPRECATED(UINT32 freerdp_get_param_uint32(const rdpSettings* settings,
   1677	                                                             int id));
   1678	FREERDP_API WINPR_DEPRECATED(int freerdp_set_param_uint32(rdpSettings* settings, int id,
   1679	                                                          UINT32 param));
   1680
   1681	FREERDP_API WINPR_DEPRECATED(UINT64 freerdp_get_param_uint64(const rdpSettings* settings,
   1682	                                                             int id));
   1683	FREERDP_API WINPR_DEPRECATED(int freerdp_set_param_uint64(rdpSettings* settings, int id,
   1684	                                                          UINT64 param));
   1685
   1686	FREERDP_API WINPR_DEPRECATED(char* freerdp_get_param_string(const rdpSettings* settings,
   1687	                                                            int id));
   1688	FREERDP_API WINPR_DEPRECATED(int freerdp_set_param_string(rdpSettings* settings, int id,
   1689	                                                          const char* param));
   1690#endif
   1691
   1692	FREERDP_API BOOL freerdp_settings_get_bool(const rdpSettings* settings, size_t id);
   1693	FREERDP_API BOOL freerdp_settings_set_bool(rdpSettings* settings, size_t id, BOOL param);
   1694
   1695	FREERDP_API INT16 freerdp_settings_get_int16(const rdpSettings* settings, size_t id);
   1696	FREERDP_API BOOL freerdp_settings_set_int16(rdpSettings* settings, size_t id, INT16 param);
   1697
   1698	FREERDP_API UINT16 freerdp_settings_get_uint16(const rdpSettings* settings, size_t id);
   1699	FREERDP_API BOOL freerdp_settings_set_uint16(rdpSettings* settings, size_t id, UINT16 param);
   1700
   1701	FREERDP_API INT32 freerdp_settings_get_int32(const rdpSettings* settings, size_t id);
   1702	FREERDP_API BOOL freerdp_settings_set_int32(rdpSettings* settings, size_t id, INT32 param);
   1703
   1704	FREERDP_API UINT32 freerdp_settings_get_uint32(const rdpSettings* settings, size_t id);
   1705	FREERDP_API BOOL freerdp_settings_set_uint32(rdpSettings* settings, size_t id, UINT32 param);
   1706
   1707	FREERDP_API INT64 freerdp_settings_get_int64(const rdpSettings* settings, size_t id);
   1708	FREERDP_API BOOL freerdp_settings_set_int64(rdpSettings* settings, size_t id, INT64 param);
   1709
   1710	FREERDP_API UINT64 freerdp_settings_get_uint64(const rdpSettings* settings, size_t id);
   1711	FREERDP_API BOOL freerdp_settings_set_uint64(rdpSettings* settings, size_t id, UINT64 param);
   1712
   1713	FREERDP_API const char* freerdp_settings_get_string(const rdpSettings* settings, size_t id);
   1714	FREERDP_API BOOL freerdp_settings_set_string(rdpSettings* settings, size_t id,
   1715	                                             const char* param);
   1716
   1717	FREERDP_API const void* freerdp_settings_get_pointer(const rdpSettings* settings, size_t id);
   1718
   1719	FREERDP_API BOOL freerdp_settings_set_value_for_name(rdpSettings* settings, const char* name,
   1720	                                                     const char* value);
   1721
   1722	FREERDP_API SSIZE_T freerdp_settings_get_key_for_name(const char* value);
   1723	FREERDP_API SSIZE_T freerdp_settings_get_type_for_name(const char* value);
   1724	FREERDP_API SSIZE_T freerdp_settings_get_type_for_key(size_t key);
   1725	FREERDP_API const char* freerdp_settings_get_name_for_key(size_t key);
   1726
   1727	FREERDP_API char* freerdp_rail_support_flags_to_string(UINT32 flags, char* buffer,
   1728	                                                       size_t length);
   1729
   1730#ifdef __cplusplus
   1731}
   1732#endif
   1733
   1734#endif /* FREERDP_SETTINGS_H */