libfreerdp-common: added generic get/set methods for parameters
authorMarc-André Moreau <marcandre.moreau@gmail.com>
Wed, 20 Mar 2013 19:33:33 +0000 (15:33 -0400)
committerMarc-André Moreau <marcandre.moreau@gmail.com>
Wed, 20 Mar 2013 19:33:33 +0000 (15:33 -0400)
include/freerdp/settings.h
libfreerdp/common/settings.c

index addfd07..e6a2c7a 100644 (file)
@@ -448,6 +448,269 @@ typedef struct _RDPDR_PARALLEL RDPDR_PARALLEL;
 #endif
 #endif
 
+/**
+ * FreeRDP Settings Ids
+ * This is generated with a script parsing the rdpSettings data structure
+ */
+
+#define FreeRDP_instance                                       0
+#define FreeRDP_ServerMode                                     16
+#define FreeRDP_ShareId                                                17
+#define FreeRDP_PduSource                                      18
+#define FreeRDP_ServerPort                                     19
+#define FreeRDP_ServerHostname                                 20
+#define FreeRDP_Username                                       21
+#define FreeRDP_Password                                       22
+#define FreeRDP_Domain                                         23
+#define FreeRDP_RdpVersion                                     128
+#define FreeRDP_DesktopWidth                                   129
+#define FreeRDP_DesktopHeight                                  130
+#define FreeRDP_ColorDepth                                     131
+#define FreeRDP_ConnectionType                                 132
+#define FreeRDP_ClientBuild                                    133
+#define FreeRDP_ClientHostname                                 134
+#define FreeRDP_ClientProductId                                        135
+#define FreeRDP_EarlyCapabilitiesFlag                          136
+#define FreeRDP_NetworkAutoDetect                              137
+#define FreeRDP_SupportAsymetricKeys                           138
+#define FreeRDP_SupportErrorInfoPdu                            139
+#define FreeRDP_SupportStatusInfoPdu                           140
+#define FreeRDP_SupportMonitorLayoutPdu                                141
+#define FreeRDP_SupportGraphicsPipeline                                142
+#define FreeRDP_SupportDynamicTimeZone                         143
+#define FreeRDP_DisableEncryption                              192
+#define FreeRDP_EncryptionMethods                              193
+#define FreeRDP_ExtEncryptionMethods                           194
+#define FreeRDP_EncryptionLevel                                        195
+#define FreeRDP_ServerRandom                                   196
+#define FreeRDP_ServerRandomLength                             197
+#define FreeRDP_ServerCertificate                              198
+#define FreeRDP_ServerCertificateLength                                199
+#define FreeRDP_ChannelCount                                   256
+#define FreeRDP_ChannelDefArraySize                            257
+#define FreeRDP_ChannelDefArray                                        258
+#define FreeRDP_ClusterInfoFlags                               320
+#define FreeRDP_RedirectedSessionId                            321
+#define FreeRDP_ConsoleSession                                 322
+#define FreeRDP_MonitorCount                                   384
+#define FreeRDP_MonitorDefArraySize                            385
+#define FreeRDP_MonitorDefArray                                        386
+#define FreeRDP_SpanMonitors                                   387
+#define FreeRDP_UseMultimon                                    388
+#define FreeRDP_ForceMultimon                                  389
+#define FreeRDP_MultitransportFlags                            512
+#define FreeRDP_AlternateShell                                 640
+#define FreeRDP_ShellWorkingDirectory                          641
+#define FreeRDP_AutoLogonEnabled                               704
+#define FreeRDP_CompressionEnabled                             705
+#define FreeRDP_DisableCtrlAltDel                              706
+#define FreeRDP_EnableWindowsKey                               707
+#define FreeRDP_MaximizeShell                                  708
+#define FreeRDP_LogonNotify                                    709
+#define FreeRDP_LogonErrors                                    710
+#define FreeRDP_MouseAttached                                  711
+#define FreeRDP_MouseHasWheel                                  712
+#define FreeRDP_RemoteConsoleAudio                             713
+#define FreeRDP_AudioPlayback                                  714
+#define FreeRDP_AudioCapture                                   715
+#define FreeRDP_VideoDisable                                   716
+#define FreeRDP_PasswordIsSmartcardPin                         717
+#define FreeRDP_UsingSavedCredentials                          718
+#define FreeRDP_ForceEncryptedCsPdu                            719
+#define FreeRDP_IPv6Enabled                                    768
+#define FreeRDP_ClientAddress                                  769
+#define FreeRDP_ClientDir                                      770
+#define FreeRDP_AutoReconnectionEnabled                                832
+#define FreeRDP_AutoReconnectMaxRetries                                833
+#define FreeRDP_ClientAutoReconnectCookie                      834
+#define FreeRDP_ServerAutoReconnectCookie                      835
+#define FreeRDP_ClientTimeZone                                 896
+#define FreeRDP_DynamicDSTTimeZoneKeyName                      897
+#define FreeRDP_DynamicDaylightTimeDisabled                    898
+#define FreeRDP_PerformanceFlags                               960
+#define FreeRDP_AllowFontSmoothing                             961
+#define FreeRDP_DisableWallpaper                               962
+#define FreeRDP_DisableFullWindowDrag                          963
+#define FreeRDP_DisableMenuAnims                               964
+#define FreeRDP_DisableThemes                                  965
+#define FreeRDP_DisableCursorShadow                            966
+#define FreeRDP_DisableCursorBlinking                          967
+#define FreeRDP_AllowDesktopComposition                                968
+#define FreeRDP_TlsSecurity                                    1088
+#define FreeRDP_NlaSecurity                                    1089
+#define FreeRDP_RdpSecurity                                    1090
+#define FreeRDP_ExtSecurity                                    1091
+#define FreeRDP_Authentication                                 1092
+#define FreeRDP_RequestedProtocols                             1093
+#define FreeRDP_SelectedProtocol                               1094
+#define FreeRDP_NegotiationFlags                               1095
+#define FreeRDP_NegotiateSecurityLayer                         1096
+#define FreeRDP_MstscCookieMode                                        1152
+#define FreeRDP_CookieMaxLength                                        1153
+#define FreeRDP_PreconnectionId                                        1154
+#define FreeRDP_PreconnectionBlob                              1155
+#define FreeRDP_SendPreconnectionPdu                           1156
+#define FreeRDP_RedirectionFlags                               1216
+#define FreeRDP_LoadBalanceInfo                                        1217
+#define FreeRDP_LoadBalanceInfoLength                          1218
+#define FreeRDP_RedirectionUsername                            1219
+#define FreeRDP_RedirectionUsernameLength                      1220
+#define FreeRDP_RedirectionDomain                              1221
+#define FreeRDP_RedirectionDomainLength                                1222
+#define FreeRDP_RedirectionPassword                            1223
+#define FreeRDP_RedirectionPasswordLength                      1224
+#define FreeRDP_RedirectionTargetFQDN                          1225
+#define FreeRDP_RedirectionTargetFQDNLength                    1226
+#define FreeRDP_RedirectionTargetNetBiosName                   1227
+#define FreeRDP_RedirectionTargetNetBiosNameLength             1228
+#define FreeRDP_RedirectionTsvUrl                              1229
+#define FreeRDP_RedirectionTsvUrlLength                                1230
+#define FreeRDP_TargetNetAddressCount                          1231
+#define FreeRDP_TargetNetAddresses                             1232
+#define FreeRDP_Password51                                     1280
+#define FreeRDP_Password51Length                               1281
+#define FreeRDP_KerberosKdc                                    1344
+#define FreeRDP_KerberosRealm                                  1345
+#define FreeRDP_IgnoreCertificate                              1408
+#define FreeRDP_CertificateName                                        1409
+#define FreeRDP_CertificateFile                                        1410
+#define FreeRDP_PrivateKeyFile                                 1411
+#define FreeRDP_RdpKeyFile                                     1412
+#define FreeRDP_RdpServerRsaKey                                        1413
+#define FreeRDP_RdpServerCertificate                           1414
+#define FreeRDP_Workarea                                       1536
+#define FreeRDP_Fullscreen                                     1537
+#define FreeRDP_PercentScreen                                  1538
+#define FreeRDP_GrabKeyboard                                   1539
+#define FreeRDP_Decorations                                    1540
+#define FreeRDP_MouseMotion                                    1541
+#define FreeRDP_WindowTitle                                    1542
+#define FreeRDP_ParentWindowId                                 1543
+#define FreeRDP_AsyncInput                                     1544
+#define FreeRDP_AsyncUpdate                                    1545
+#define FreeRDP_AsyncChannels                                  1546
+#define FreeRDP_ToggleFullscreen                               1547
+#define FreeRDP_SoftwareGdi                                    1601
+#define FreeRDP_LocalConnection                                        1602
+#define FreeRDP_AuthenticationOnly                             1603
+#define FreeRDP_CredentialsFromStdin                           1604
+#define FreeRDP_ComputerName                                   1664
+#define FreeRDP_ConnectionFile                                 1728
+#define FreeRDP_HomePath                                       1792
+#define FreeRDP_ConfigPath                                     1793
+#define FreeRDP_CurrentPath                                    1794
+#define FreeRDP_DumpRemoteFx                                   1856
+#define FreeRDP_PlayRemoteFx                                   1857
+#define FreeRDP_DumpRemoteFxFile                               1858
+#define FreeRDP_PlayRemoteFxFile                               1859
+#define FreeRDP_GatewayUsageMethod                             1984
+#define FreeRDP_GatewayPort                                    1985
+#define FreeRDP_GatewayHostname                                        1986
+#define FreeRDP_GatewayUsername                                        1987
+#define FreeRDP_GatewayPassword                                        1988
+#define FreeRDP_GatewayDomain                                  1989
+#define FreeRDP_GatewayCredentialsSource                       1990
+#define FreeRDP_GatewayUseSameCredentials                      1991
+#define FreeRDP_RemoteApplicationMode                          2112
+#define FreeRDP_RemoteApplicationName                          2113
+#define FreeRDP_RemoteApplicationIcon                          2114
+#define FreeRDP_RemoteApplicationProgram                       2115
+#define FreeRDP_RemoteApplicationFile                          2116
+#define FreeRDP_RemoteApplicationGuid                          2117
+#define FreeRDP_RemoteApplicationCmdLine                       2118
+#define FreeRDP_RemoteApplicationExpandCmdLine                 2119
+#define FreeRDP_RemoteApplicationExpandWorkingDir              2120
+#define FreeRDP_DisableRemoteAppCapsCheck                      2121
+#define FreeRDP_RemoteAppNumIconCaches                         2122
+#define FreeRDP_RemoteAppNumIconCacheEntries                   2123
+#define FreeRDP_RemoteAppLanguageBarSupported                  2124
+#define FreeRDP_ReceivedCapabilities                           2240
+#define FreeRDP_ReceivedCapabilitiesSize                       2241
+#define FreeRDP_OsMajorType                                    2304
+#define FreeRDP_OsMinorType                                    2305
+#define FreeRDP_RefreshRect                                    2306
+#define FreeRDP_SuppressOutput                                 2307
+#define FreeRDP_FastPathOutput                                 2308
+#define FreeRDP_SaltedChecksum                                 2309
+#define FreeRDP_LongCredentialsSupported                       2310
+#define FreeRDP_NoBitmapCompressionHeader                      2311
+#define FreeRDP_DesktopResize                                  2368
+#define FreeRDP_DrawAllowDynamicColorFidelity                  2369
+#define FreeRDP_DrawAllowColorSubsampling                      2370
+#define FreeRDP_DrawAllowSkipAlpha                             2371
+#define FreeRDP_OrderSupport                                   2432
+#define FreeRDP_BitmapCacheV3Enabled                           2433
+#define FreeRDP_AltSecFrameMarkerSupport                       2434
+#define FreeRDP_BitmapCacheEnabled                             2497
+#define FreeRDP_BitmapCacheVersion                             2498
+#define FreeRDP_AllowCacheWaitingList                          2499
+#define FreeRDP_BitmapCachePersistEnabled                      2500
+#define FreeRDP_BitmapCacheV2NumCells                          2501
+#define FreeRDP_BitmapCacheV2CellInfo                          2502
+#define FreeRDP_ColorPointerFlag                               2560
+#define FreeRDP_PointerCacheSize                               2561
+#define FreeRDP_KeyboardLayout                                 2624
+#define FreeRDP_KeyboardType                                   2625
+#define FreeRDP_KeyboardSubType                                        2626
+#define FreeRDP_KeyboardFunctionKey                            2627
+#define FreeRDP_ImeFileName                                    2628
+#define FreeRDP_UnicodeInput                                   2629
+#define FreeRDP_FastPathInput                                  2630
+#define FreeRDP_BrushSupportLevel                              2688
+#define FreeRDP_GlyphSupportLevel                              2752
+#define FreeRDP_GlyphCache                                     2753
+#define FreeRDP_FragCache                                      2754
+#define FreeRDP_OffscreenSupportLevel                          2816
+#define FreeRDP_OffscreenCacheSize                             2817
+#define FreeRDP_OffscreenCacheEntries                          2818
+#define FreeRDP_VirtualChannelCompressionFlags                 2880
+#define FreeRDP_VirtualChannelChunkSize                                2881
+#define FreeRDP_SoundBeepsEnabled                              2944
+#define FreeRDP_MultifragMaxRequestSize                                3328
+#define FreeRDP_LargePointerFlag                               3392
+#define FreeRDP_CompDeskSupportLevel                           3456
+#define FreeRDP_SurfaceCommandsEnabled                         3520
+#define FreeRDP_FrameMarkerCommandEnabled                      3521
+#define FreeRDP_RemoteFxOnly                                   3648
+#define FreeRDP_RemoteFxCodec                                  3649
+#define FreeRDP_RemoteFxCodecId                                        3650
+#define FreeRDP_RemoteFxCodecMode                              3651
+#define FreeRDP_RemoteFxImageCodec                             3652
+#define FreeRDP_NSCodec                                                3712
+#define FreeRDP_NSCodecId                                      3713
+#define FreeRDP_FrameAcknowledge                               3714
+#define FreeRDP_JpegCodec                                      3776
+#define FreeRDP_JpegCodecId                                    3777
+#define FreeRDP_JpegQuality                                    3778
+#define FreeRDP_BitmapCacheV3CodecId                           3904
+#define FreeRDP_DrawNineGridEnabled                            3968
+#define FreeRDP_DrawNineGridCacheSize                          3969
+#define FreeRDP_DrawNineGridCacheEntries                       3970
+#define FreeRDP_DrawGdiPlusEnabled                             4032
+#define FreeRDP_DrawGdiPlusCacheEnabled                                4033
+#define FreeRDP_DeviceRedirection                              4160
+#define FreeRDP_DeviceCount                                    4161
+#define FreeRDP_DeviceArraySize                                        4162
+#define FreeRDP_DeviceArray                                    4163
+#define FreeRDP_RedirectDrives                                 4288
+#define FreeRDP_RedirectHomeDrive                              4289
+#define FreeRDP_DrivesToRedirect                               4290
+#define FreeRDP_RedirectSmartCards                             4416
+#define FreeRDP_RedirectPrinters                               4544
+#define FreeRDP_RedirectSerialPorts                            4672
+#define FreeRDP_RedirectParallelPorts                          4673
+#define FreeRDP_RedirectClipboard                              4800
+#define FreeRDP_StaticChannelCount                             4928
+#define FreeRDP_StaticChannelArraySize                         4929
+#define FreeRDP_StaticChannelArray                             4930
+#define FreeRDP_DynamicChannelCount                            5056
+#define FreeRDP_DynamicChannelArraySize                                5057
+#define FreeRDP_DynamicChannelArray                            5058
+
+/**
+ * FreeRDP Settings Data Structure
+ */
+
 struct rdp_settings
 {
        /**
@@ -1008,6 +1271,15 @@ FREERDP_API void freerdp_dynamic_channel_collection_add(rdpSettings* settings, A
 FREERDP_API ADDIN_ARGV* freerdp_dynamic_channel_collection_find(rdpSettings* settings, const char* name);
 FREERDP_API void freerdp_dynamic_channel_collection_free(rdpSettings* settings);
 
+FREERDP_API BOOL freerdp_get_param_bool(rdpSettings* settings, int id);
+FREERDP_API int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param);
+
+FREERDP_API UINT32 freerdp_get_param_uint32(rdpSettings* settings, int id);
+FREERDP_API int freerdp_set_param_uint32(rdpSettings* settings, int id, UINT32 param);
+
+FREERDP_API char* freerdp_get_param_string(rdpSettings* settings, int id);
+FREERDP_API int freerdp_set_param_string(rdpSettings* settings, int id, char* param);
+
 #ifdef __cplusplus
 }
 #endif
index 89c11e9..570e661 100644 (file)
@@ -292,3 +292,1823 @@ void freerdp_dynamic_channel_collection_free(rdpSettings* settings)
        settings->DynamicChannelArray = NULL;
        settings->DynamicChannelCount = 0;
 }
+
+/**
+ * Partially Generated Code
+ */
+
+BOOL freerdp_get_param_bool(rdpSettings* settings, int id)
+{
+       switch (id)
+       {
+               case FreeRDP_ServerMode:
+                       return settings->ServerMode;
+                       break;
+
+               case FreeRDP_NetworkAutoDetect:
+                       return settings->NetworkAutoDetect;
+                       break;
+
+               case FreeRDP_SupportAsymetricKeys:
+                       return settings->SupportAsymetricKeys;
+                       break;
+
+               case FreeRDP_SupportErrorInfoPdu:
+                       return settings->SupportErrorInfoPdu;
+                       break;
+
+               case FreeRDP_SupportStatusInfoPdu:
+                       return settings->SupportStatusInfoPdu;
+                       break;
+
+               case FreeRDP_SupportMonitorLayoutPdu:
+                       return settings->SupportMonitorLayoutPdu;
+                       break;
+
+               case FreeRDP_SupportGraphicsPipeline:
+                       return settings->SupportGraphicsPipeline;
+                       break;
+
+               case FreeRDP_SupportDynamicTimeZone:
+                       return settings->SupportDynamicTimeZone;
+                       break;
+
+               case FreeRDP_DisableEncryption:
+                       return settings->DisableEncryption;
+                       break;
+
+               case FreeRDP_ConsoleSession:
+                       return settings->ConsoleSession;
+                       break;
+
+               case FreeRDP_SpanMonitors:
+                       return settings->SpanMonitors;
+                       break;
+
+               case FreeRDP_UseMultimon:
+                       return settings->UseMultimon;
+                       break;
+
+               case FreeRDP_ForceMultimon:
+                       return settings->ForceMultimon;
+                       break;
+
+               case FreeRDP_AutoLogonEnabled:
+                       return settings->AutoLogonEnabled;
+                       break;
+
+               case FreeRDP_CompressionEnabled:
+                       return settings->CompressionEnabled;
+                       break;
+
+               case FreeRDP_DisableCtrlAltDel:
+                       return settings->DisableCtrlAltDel;
+                       break;
+
+               case FreeRDP_EnableWindowsKey:
+                       return settings->EnableWindowsKey;
+                       break;
+
+               case FreeRDP_MaximizeShell:
+                       return settings->MaximizeShell;
+                       break;
+
+               case FreeRDP_LogonNotify:
+                       return settings->LogonNotify;
+                       break;
+
+               case FreeRDP_LogonErrors:
+                       return settings->LogonErrors;
+                       break;
+
+               case FreeRDP_MouseAttached:
+                       return settings->MouseAttached;
+                       break;
+
+               case FreeRDP_MouseHasWheel:
+                       return settings->MouseHasWheel;
+                       break;
+
+               case FreeRDP_RemoteConsoleAudio:
+                       return settings->RemoteConsoleAudio;
+                       break;
+
+               case FreeRDP_AudioPlayback:
+                       return settings->AudioPlayback;
+                       break;
+
+               case FreeRDP_AudioCapture:
+                       return settings->AudioCapture;
+                       break;
+
+               case FreeRDP_VideoDisable:
+                       return settings->VideoDisable;
+                       break;
+
+               case FreeRDP_PasswordIsSmartcardPin:
+                       return settings->PasswordIsSmartcardPin;
+                       break;
+
+               case FreeRDP_UsingSavedCredentials:
+                       return settings->UsingSavedCredentials;
+                       break;
+
+               case FreeRDP_ForceEncryptedCsPdu:
+                       return settings->ForceEncryptedCsPdu;
+                       break;
+
+               case FreeRDP_IPv6Enabled:
+                       return settings->IPv6Enabled;
+                       break;
+
+               case FreeRDP_AutoReconnectionEnabled:
+                       return settings->AutoReconnectionEnabled;
+                       break;
+
+               case FreeRDP_DynamicDaylightTimeDisabled:
+                       return settings->DynamicDaylightTimeDisabled;
+                       break;
+
+               case FreeRDP_AllowFontSmoothing:
+                       return settings->AllowFontSmoothing;
+                       break;
+
+               case FreeRDP_DisableWallpaper:
+                       return settings->DisableWallpaper;
+                       break;
+
+               case FreeRDP_DisableFullWindowDrag:
+                       return settings->DisableFullWindowDrag;
+                       break;
+
+               case FreeRDP_DisableMenuAnims:
+                       return settings->DisableMenuAnims;
+                       break;
+
+               case FreeRDP_DisableThemes:
+                       return settings->DisableThemes;
+                       break;
+
+               case FreeRDP_DisableCursorShadow:
+                       return settings->DisableCursorShadow;
+                       break;
+
+               case FreeRDP_DisableCursorBlinking:
+                       return settings->DisableCursorBlinking;
+                       break;
+
+               case FreeRDP_AllowDesktopComposition:
+                       return settings->AllowDesktopComposition;
+                       break;
+
+               case FreeRDP_TlsSecurity:
+                       return settings->TlsSecurity;
+                       break;
+
+               case FreeRDP_NlaSecurity:
+                       return settings->NlaSecurity;
+                       break;
+
+               case FreeRDP_RdpSecurity:
+                       return settings->RdpSecurity;
+                       break;
+
+               case FreeRDP_ExtSecurity:
+                       return settings->ExtSecurity;
+                       break;
+
+               case FreeRDP_Authentication:
+                       return settings->Authentication;
+                       break;
+
+               case FreeRDP_NegotiateSecurityLayer:
+                       return settings->NegotiateSecurityLayer;
+                       break;
+
+               case FreeRDP_MstscCookieMode:
+                       return settings->MstscCookieMode;
+                       break;
+
+               case FreeRDP_SendPreconnectionPdu:
+                       return settings->SendPreconnectionPdu;
+                       break;
+
+               case FreeRDP_IgnoreCertificate:
+                       return settings->IgnoreCertificate;
+                       break;
+
+               case FreeRDP_Workarea:
+                       return settings->Workarea;
+                       break;
+
+               case FreeRDP_Fullscreen:
+                       return settings->Fullscreen;
+                       break;
+
+               case FreeRDP_GrabKeyboard:
+                       return settings->GrabKeyboard;
+                       break;
+
+               case FreeRDP_Decorations:
+                       return settings->Decorations;
+                       break;
+
+               case FreeRDP_MouseMotion:
+                       return settings->MouseMotion;
+                       break;
+
+               case FreeRDP_AsyncInput:
+                       return settings->AsyncInput;
+                       break;
+
+               case FreeRDP_AsyncUpdate:
+                       return settings->AsyncUpdate;
+                       break;
+
+               case FreeRDP_AsyncChannels:
+                       return settings->AsyncChannels;
+                       break;
+
+               case FreeRDP_ToggleFullscreen:
+                       return settings->ToggleFullscreen;
+                       break;
+
+               case FreeRDP_SoftwareGdi:
+                       return settings->SoftwareGdi;
+                       break;
+
+               case FreeRDP_LocalConnection:
+                       return settings->LocalConnection;
+                       break;
+
+               case FreeRDP_AuthenticationOnly:
+                       return settings->AuthenticationOnly;
+                       break;
+
+               case FreeRDP_CredentialsFromStdin:
+                       return settings->CredentialsFromStdin;
+                       break;
+
+               case FreeRDP_DumpRemoteFx:
+                       return settings->DumpRemoteFx;
+                       break;
+
+               case FreeRDP_PlayRemoteFx:
+                       return settings->PlayRemoteFx;
+                       break;
+
+               case FreeRDP_GatewayUsageMethod:
+                       return settings->GatewayUsageMethod;
+                       break;
+
+               case FreeRDP_GatewayUseSameCredentials:
+                       return settings->GatewayUseSameCredentials;
+                       break;
+
+               case FreeRDP_RemoteApplicationMode:
+                       return settings->RemoteApplicationMode;
+                       break;
+
+               case FreeRDP_RemoteAppLanguageBarSupported:
+                       return settings->RemoteAppLanguageBarSupported;
+                       break;
+
+               case FreeRDP_RefreshRect:
+                       return settings->RefreshRect;
+                       break;
+
+               case FreeRDP_SuppressOutput:
+                       return settings->SuppressOutput;
+                       break;
+
+               case FreeRDP_FastPathOutput:
+                       return settings->FastPathOutput;
+                       break;
+
+               case FreeRDP_SaltedChecksum:
+                       return settings->SaltedChecksum;
+                       break;
+
+               case FreeRDP_LongCredentialsSupported:
+                       return settings->LongCredentialsSupported;
+                       break;
+
+               case FreeRDP_NoBitmapCompressionHeader:
+                       return settings->NoBitmapCompressionHeader;
+                       break;
+
+               case FreeRDP_DesktopResize:
+                       return settings->DesktopResize;
+                       break;
+
+               case FreeRDP_DrawAllowDynamicColorFidelity:
+                       return settings->DrawAllowDynamicColorFidelity;
+                       break;
+
+               case FreeRDP_DrawAllowColorSubsampling:
+                       return settings->DrawAllowColorSubsampling;
+                       break;
+
+               case FreeRDP_DrawAllowSkipAlpha:
+                       return settings->DrawAllowSkipAlpha;
+                       break;
+
+               case FreeRDP_BitmapCacheV3Enabled:
+                       return settings->BitmapCacheV3Enabled;
+                       break;
+
+               case FreeRDP_AltSecFrameMarkerSupport:
+                       return settings->AltSecFrameMarkerSupport;
+                       break;
+
+               case FreeRDP_BitmapCacheEnabled:
+                       return settings->BitmapCacheEnabled;
+                       break;
+
+               case FreeRDP_AllowCacheWaitingList:
+                       return settings->AllowCacheWaitingList;
+                       break;
+
+               case FreeRDP_BitmapCachePersistEnabled:
+                       return settings->BitmapCachePersistEnabled;
+                       break;
+
+               case FreeRDP_ColorPointerFlag:
+                       return settings->ColorPointerFlag;
+                       break;
+
+               case FreeRDP_UnicodeInput:
+                       return settings->UnicodeInput;
+                       break;
+
+               case FreeRDP_FastPathInput:
+                       return settings->FastPathInput;
+                       break;
+
+               case FreeRDP_SoundBeepsEnabled:
+                       return settings->SoundBeepsEnabled;
+                       break;
+
+               case FreeRDP_SurfaceCommandsEnabled:
+                       return settings->SurfaceCommandsEnabled;
+                       break;
+
+               case FreeRDP_FrameMarkerCommandEnabled:
+                       return settings->FrameMarkerCommandEnabled;
+                       break;
+
+               case FreeRDP_RemoteFxOnly:
+                       return settings->RemoteFxOnly;
+                       break;
+
+               case FreeRDP_RemoteFxCodec:
+                       return settings->RemoteFxCodec;
+                       break;
+
+               case FreeRDP_RemoteFxImageCodec:
+                       return settings->RemoteFxImageCodec;
+                       break;
+
+               case FreeRDP_NSCodec:
+                       return settings->NSCodec;
+                       break;
+
+               case FreeRDP_FrameAcknowledge:
+                       return settings->FrameAcknowledge;
+                       break;
+
+               case FreeRDP_JpegCodec:
+                       return settings->JpegCodec;
+                       break;
+
+               case FreeRDP_DrawNineGridEnabled:
+                       return settings->DrawNineGridEnabled;
+                       break;
+
+               case FreeRDP_DrawGdiPlusEnabled:
+                       return settings->DrawGdiPlusEnabled;
+                       break;
+
+               case FreeRDP_DrawGdiPlusCacheEnabled:
+                       return settings->DrawGdiPlusCacheEnabled;
+                       break;
+
+               case FreeRDP_DeviceRedirection:
+                       return settings->DeviceRedirection;
+                       break;
+
+               case FreeRDP_RedirectDrives:
+                       return settings->RedirectDrives;
+                       break;
+
+               case FreeRDP_RedirectHomeDrive:
+                       return settings->RedirectHomeDrive;
+                       break;
+
+               case FreeRDP_RedirectSmartCards:
+                       return settings->RedirectSmartCards;
+                       break;
+
+               case FreeRDP_RedirectPrinters:
+                       return settings->RedirectPrinters;
+                       break;
+
+               case FreeRDP_RedirectSerialPorts:
+                       return settings->RedirectSerialPorts;
+                       break;
+
+               case FreeRDP_RedirectParallelPorts:
+                       return settings->RedirectParallelPorts;
+                       break;
+
+               case FreeRDP_RedirectClipboard:
+                       return settings->RedirectClipboard;
+                       break;
+
+               default:
+                       return -1;
+                       break;
+       }
+
+       return -1;
+}
+
+int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param)
+{
+       switch (id)
+       {
+               case FreeRDP_ServerMode:
+                       settings->ServerMode = param;
+                       break;
+
+               case FreeRDP_NetworkAutoDetect:
+                       settings->NetworkAutoDetect = param;
+                       break;
+
+               case FreeRDP_SupportAsymetricKeys:
+                       settings->SupportAsymetricKeys = param;
+                       break;
+
+               case FreeRDP_SupportErrorInfoPdu:
+                       settings->SupportErrorInfoPdu = param;
+                       break;
+
+               case FreeRDP_SupportStatusInfoPdu:
+                       settings->SupportStatusInfoPdu = param;
+                       break;
+
+               case FreeRDP_SupportMonitorLayoutPdu:
+                       settings->SupportMonitorLayoutPdu = param;
+                       break;
+
+               case FreeRDP_SupportGraphicsPipeline:
+                       settings->SupportGraphicsPipeline = param;
+                       break;
+
+               case FreeRDP_SupportDynamicTimeZone:
+                       settings->SupportDynamicTimeZone = param;
+                       break;
+
+               case FreeRDP_DisableEncryption:
+                       settings->DisableEncryption = param;
+                       break;
+
+               case FreeRDP_ConsoleSession:
+                       settings->ConsoleSession = param;
+                       break;
+
+               case FreeRDP_SpanMonitors:
+                       settings->SpanMonitors = param;
+                       break;
+
+               case FreeRDP_UseMultimon:
+                       settings->UseMultimon = param;
+                       break;
+
+               case FreeRDP_ForceMultimon:
+                       settings->ForceMultimon = param;
+                       break;
+
+               case FreeRDP_AutoLogonEnabled:
+                       settings->AutoLogonEnabled = param;
+                       break;
+
+               case FreeRDP_CompressionEnabled:
+                       settings->CompressionEnabled = param;
+                       break;
+
+               case FreeRDP_DisableCtrlAltDel:
+                       settings->DisableCtrlAltDel = param;
+                       break;
+
+               case FreeRDP_EnableWindowsKey:
+                       settings->EnableWindowsKey = param;
+                       break;
+
+               case FreeRDP_MaximizeShell:
+                       settings->MaximizeShell = param;
+                       break;
+
+               case FreeRDP_LogonNotify:
+                       settings->LogonNotify = param;
+                       break;
+
+               case FreeRDP_LogonErrors:
+                       settings->LogonErrors = param;
+                       break;
+
+               case FreeRDP_MouseAttached:
+                       settings->MouseAttached = param;
+                       break;
+
+               case FreeRDP_MouseHasWheel:
+                       settings->MouseHasWheel = param;
+                       break;
+
+               case FreeRDP_RemoteConsoleAudio:
+                       settings->RemoteConsoleAudio = param;
+                       break;
+
+               case FreeRDP_AudioPlayback:
+                       settings->AudioPlayback = param;
+                       break;
+
+               case FreeRDP_AudioCapture:
+                       settings->AudioCapture = param;
+                       break;
+
+               case FreeRDP_VideoDisable:
+                       settings->VideoDisable = param;
+                       break;
+
+               case FreeRDP_PasswordIsSmartcardPin:
+                       settings->PasswordIsSmartcardPin = param;
+                       break;
+
+               case FreeRDP_UsingSavedCredentials:
+                       settings->UsingSavedCredentials = param;
+                       break;
+
+               case FreeRDP_ForceEncryptedCsPdu:
+                       settings->ForceEncryptedCsPdu = param;
+                       break;
+
+               case FreeRDP_IPv6Enabled:
+                       settings->IPv6Enabled = param;
+                       break;
+
+               case FreeRDP_AutoReconnectionEnabled:
+                       settings->AutoReconnectionEnabled = param;
+                       break;
+
+               case FreeRDP_DynamicDaylightTimeDisabled:
+                       settings->DynamicDaylightTimeDisabled = param;
+                       break;
+
+               case FreeRDP_AllowFontSmoothing:
+                       settings->AllowFontSmoothing = param;
+                       break;
+
+               case FreeRDP_DisableWallpaper:
+                       settings->DisableWallpaper = param;
+                       break;
+
+               case FreeRDP_DisableFullWindowDrag:
+                       settings->DisableFullWindowDrag = param;
+                       break;
+
+               case FreeRDP_DisableMenuAnims:
+                       settings->DisableMenuAnims = param;
+                       break;
+
+               case FreeRDP_DisableThemes:
+                       settings->DisableThemes = param;
+                       break;
+
+               case FreeRDP_DisableCursorShadow:
+                       settings->DisableCursorShadow = param;
+                       break;
+
+               case FreeRDP_DisableCursorBlinking:
+                       settings->DisableCursorBlinking = param;
+                       break;
+
+               case FreeRDP_AllowDesktopComposition:
+                       settings->AllowDesktopComposition = param;
+                       break;
+
+               case FreeRDP_TlsSecurity:
+                       settings->TlsSecurity = param;
+                       break;
+
+               case FreeRDP_NlaSecurity:
+                       settings->NlaSecurity = param;
+                       break;
+
+               case FreeRDP_RdpSecurity:
+                       settings->RdpSecurity = param;
+                       break;
+
+               case FreeRDP_ExtSecurity:
+                       settings->ExtSecurity = param;
+                       break;
+
+               case FreeRDP_Authentication:
+                       settings->Authentication = param;
+                       break;
+
+               case FreeRDP_NegotiateSecurityLayer:
+                       settings->NegotiateSecurityLayer = param;
+                       break;
+
+               case FreeRDP_MstscCookieMode:
+                       settings->MstscCookieMode = param;
+                       break;
+
+               case FreeRDP_SendPreconnectionPdu:
+                       settings->SendPreconnectionPdu = param;
+                       break;
+
+               case FreeRDP_IgnoreCertificate:
+                       settings->IgnoreCertificate = param;
+                       break;
+
+               case FreeRDP_Workarea:
+                       settings->Workarea = param;
+                       break;
+
+               case FreeRDP_Fullscreen:
+                       settings->Fullscreen = param;
+                       break;
+
+               case FreeRDP_GrabKeyboard:
+                       settings->GrabKeyboard = param;
+                       break;
+
+               case FreeRDP_Decorations:
+                       settings->Decorations = param;
+                       break;
+
+               case FreeRDP_MouseMotion:
+                       settings->MouseMotion = param;
+                       break;
+
+               case FreeRDP_AsyncInput:
+                       settings->AsyncInput = param;
+                       break;
+
+               case FreeRDP_AsyncUpdate:
+                       settings->AsyncUpdate = param;
+                       break;
+
+               case FreeRDP_AsyncChannels:
+                       settings->AsyncChannels = param;
+                       break;
+
+               case FreeRDP_ToggleFullscreen:
+                       settings->ToggleFullscreen = param;
+                       break;
+
+               case FreeRDP_SoftwareGdi:
+                       settings->SoftwareGdi = param;
+                       break;
+
+               case FreeRDP_LocalConnection:
+                       settings->LocalConnection = param;
+                       break;
+
+               case FreeRDP_AuthenticationOnly:
+                       settings->AuthenticationOnly = param;
+                       break;
+
+               case FreeRDP_CredentialsFromStdin:
+                       settings->CredentialsFromStdin = param;
+                       break;
+
+               case FreeRDP_DumpRemoteFx:
+                       settings->DumpRemoteFx = param;
+                       break;
+
+               case FreeRDP_PlayRemoteFx:
+                       settings->PlayRemoteFx = param;
+                       break;
+
+               case FreeRDP_GatewayUsageMethod:
+                       settings->GatewayUsageMethod = param;
+                       break;
+
+               case FreeRDP_GatewayUseSameCredentials:
+                       settings->GatewayUseSameCredentials = param;
+                       break;
+
+               case FreeRDP_RemoteApplicationMode:
+                       settings->RemoteApplicationMode = param;
+                       break;
+
+               case FreeRDP_RemoteAppLanguageBarSupported:
+                       settings->RemoteAppLanguageBarSupported = param;
+                       break;
+
+               case FreeRDP_RefreshRect:
+                       settings->RefreshRect = param;
+                       break;
+
+               case FreeRDP_SuppressOutput:
+                       settings->SuppressOutput = param;
+                       break;
+
+               case FreeRDP_FastPathOutput:
+                       settings->FastPathOutput = param;
+                       break;
+
+               case FreeRDP_SaltedChecksum:
+                       settings->SaltedChecksum = param;
+                       break;
+
+               case FreeRDP_LongCredentialsSupported:
+                       settings->LongCredentialsSupported = param;
+                       break;
+
+               case FreeRDP_NoBitmapCompressionHeader:
+                       settings->NoBitmapCompressionHeader = param;
+                       break;
+
+               case FreeRDP_DesktopResize:
+                       settings->DesktopResize = param;
+                       break;
+
+               case FreeRDP_DrawAllowDynamicColorFidelity:
+                       settings->DrawAllowDynamicColorFidelity = param;
+                       break;
+
+               case FreeRDP_DrawAllowColorSubsampling:
+                       settings->DrawAllowColorSubsampling = param;
+                       break;
+
+               case FreeRDP_DrawAllowSkipAlpha:
+                       settings->DrawAllowSkipAlpha = param;
+                       break;
+
+               case FreeRDP_BitmapCacheV3Enabled:
+                       settings->BitmapCacheV3Enabled = param;
+                       break;
+
+               case FreeRDP_AltSecFrameMarkerSupport:
+                       settings->AltSecFrameMarkerSupport = param;
+                       break;
+
+               case FreeRDP_BitmapCacheEnabled:
+                       settings->BitmapCacheEnabled = param;
+                       break;
+
+               case FreeRDP_AllowCacheWaitingList:
+                       settings->AllowCacheWaitingList = param;
+                       break;
+
+               case FreeRDP_BitmapCachePersistEnabled:
+                       settings->BitmapCachePersistEnabled = param;
+                       break;
+
+               case FreeRDP_ColorPointerFlag:
+                       settings->ColorPointerFlag = param;
+                       break;
+
+               case FreeRDP_UnicodeInput:
+                       settings->UnicodeInput = param;
+                       break;
+
+               case FreeRDP_FastPathInput:
+                       settings->FastPathInput = param;
+                       break;
+
+               case FreeRDP_SoundBeepsEnabled:
+                       settings->SoundBeepsEnabled = param;
+                       break;
+
+               case FreeRDP_SurfaceCommandsEnabled:
+                       settings->SurfaceCommandsEnabled = param;
+                       break;
+
+               case FreeRDP_FrameMarkerCommandEnabled:
+                       settings->FrameMarkerCommandEnabled = param;
+                       break;
+
+               case FreeRDP_RemoteFxOnly:
+                       settings->RemoteFxOnly = param;
+                       break;
+
+               case FreeRDP_RemoteFxCodec:
+                       settings->RemoteFxCodec = param;
+                       break;
+
+               case FreeRDP_RemoteFxImageCodec:
+                       settings->RemoteFxImageCodec = param;
+                       break;
+
+               case FreeRDP_NSCodec:
+                       settings->NSCodec = param;
+                       break;
+
+               case FreeRDP_FrameAcknowledge:
+                       settings->FrameAcknowledge = param;
+                       break;
+
+               case FreeRDP_JpegCodec:
+                       settings->JpegCodec = param;
+                       break;
+
+               case FreeRDP_DrawNineGridEnabled:
+                       settings->DrawNineGridEnabled = param;
+                       break;
+
+               case FreeRDP_DrawGdiPlusEnabled:
+                       settings->DrawGdiPlusEnabled = param;
+                       break;
+
+               case FreeRDP_DrawGdiPlusCacheEnabled:
+                       settings->DrawGdiPlusCacheEnabled = param;
+                       break;
+
+               case FreeRDP_DeviceRedirection:
+                       settings->DeviceRedirection = param;
+                       break;
+
+               case FreeRDP_RedirectDrives:
+                       settings->RedirectDrives = param;
+                       break;
+
+               case FreeRDP_RedirectHomeDrive:
+                       settings->RedirectHomeDrive = param;
+                       break;
+
+               case FreeRDP_RedirectSmartCards:
+                       settings->RedirectSmartCards = param;
+                       break;
+
+               case FreeRDP_RedirectPrinters:
+                       settings->RedirectPrinters = param;
+                       break;
+
+               case FreeRDP_RedirectSerialPorts:
+                       settings->RedirectSerialPorts = param;
+                       break;
+
+               case FreeRDP_RedirectParallelPorts:
+                       settings->RedirectParallelPorts = param;
+                       break;
+
+               case FreeRDP_RedirectClipboard:
+                       settings->RedirectClipboard = param;
+                       break;
+
+               default:
+                       return -1;
+                       break;
+       }
+
+       return -1;
+}
+
+UINT32 freerdp_get_param_uint32(rdpSettings* settings, int id)
+{
+       switch (id)
+       {
+               case FreeRDP_ShareId:
+                       return settings->ShareId;
+                       break;
+
+               case FreeRDP_PduSource:
+                       return settings->PduSource;
+                       break;
+
+               case FreeRDP_ServerPort:
+                       return settings->ServerPort;
+                       break;
+
+               case FreeRDP_RdpVersion:
+                       return settings->RdpVersion;
+                       break;
+
+               case FreeRDP_DesktopWidth:
+                       return settings->DesktopWidth;
+                       break;
+
+               case FreeRDP_DesktopHeight:
+                       return settings->DesktopHeight;
+                       break;
+
+               case FreeRDP_ColorDepth:
+                       return settings->ColorDepth;
+                       break;
+
+               case FreeRDP_ConnectionType:
+                       return settings->ConnectionType;
+                       break;
+
+               case FreeRDP_ClientBuild:
+                       return settings->ClientBuild;
+                       break;
+
+               case FreeRDP_EarlyCapabilitiesFlag:
+                       return settings->EarlyCapabilitiesFlag;
+                       break;
+
+               case FreeRDP_EncryptionMethods:
+                       return settings->EncryptionMethods;
+                       break;
+
+               case FreeRDP_ExtEncryptionMethods:
+                       return settings->ExtEncryptionMethods;
+                       break;
+
+               case FreeRDP_EncryptionLevel:
+                       return settings->EncryptionLevel;
+                       break;
+
+               case FreeRDP_ChannelCount:
+                       return settings->ChannelCount;
+                       break;
+
+               case FreeRDP_ChannelDefArraySize:
+                       return settings->ChannelDefArraySize;
+                       break;
+
+               case FreeRDP_ClusterInfoFlags:
+                       return settings->ClusterInfoFlags;
+                       break;
+
+               case FreeRDP_RedirectedSessionId:
+                       return settings->RedirectedSessionId;
+                       break;
+
+               case FreeRDP_MonitorDefArraySize:
+                       return settings->MonitorDefArraySize;
+                       break;
+
+               case FreeRDP_MultitransportFlags:
+                       return settings->MultitransportFlags;
+                       break;
+
+               case FreeRDP_AutoReconnectMaxRetries:
+                       return settings->AutoReconnectMaxRetries;
+                       break;
+
+               case FreeRDP_PerformanceFlags:
+                       return settings->PerformanceFlags;
+                       break;
+
+               case FreeRDP_RequestedProtocols:
+                       return settings->RequestedProtocols;
+                       break;
+
+               case FreeRDP_SelectedProtocol:
+                       return settings->SelectedProtocol;
+                       break;
+
+               case FreeRDP_NegotiationFlags:
+                       return settings->NegotiationFlags;
+                       break;
+
+               case FreeRDP_CookieMaxLength:
+                       return settings->CookieMaxLength;
+                       break;
+
+               case FreeRDP_PreconnectionId:
+                       return settings->PreconnectionId;
+                       break;
+
+               case FreeRDP_RedirectionFlags:
+                       return settings->RedirectionFlags;
+                       break;
+
+               case FreeRDP_LoadBalanceInfoLength:
+                       return settings->LoadBalanceInfoLength;
+                       break;
+
+               case FreeRDP_RedirectionUsernameLength:
+                       return settings->RedirectionUsernameLength;
+                       break;
+
+               case FreeRDP_RedirectionDomainLength:
+                       return settings->RedirectionDomainLength;
+                       break;
+
+               case FreeRDP_RedirectionPasswordLength:
+                       return settings->RedirectionPasswordLength;
+                       break;
+
+               case FreeRDP_RedirectionTargetFQDNLength:
+                       return settings->RedirectionTargetFQDNLength;
+                       break;
+
+               case FreeRDP_RedirectionTargetNetBiosNameLength:
+                       return settings->RedirectionTargetNetBiosNameLength;
+                       break;
+
+               case FreeRDP_RedirectionTsvUrlLength:
+                       return settings->RedirectionTsvUrlLength;
+                       break;
+
+               case FreeRDP_TargetNetAddressCount:
+                       return settings->TargetNetAddressCount;
+                       break;
+
+               case FreeRDP_PercentScreen:
+                       return settings->PercentScreen;
+                       break;
+
+               case FreeRDP_GatewayPort:
+                       return settings->GatewayPort;
+                       break;
+
+               case FreeRDP_GatewayCredentialsSource:
+                       return settings->GatewayCredentialsSource;
+                       break;
+
+               case FreeRDP_RemoteAppNumIconCaches:
+                       return settings->RemoteAppNumIconCaches;
+                       break;
+
+               case FreeRDP_RemoteAppNumIconCacheEntries:
+                       return settings->RemoteAppNumIconCacheEntries;
+                       break;
+
+               case FreeRDP_ReceivedCapabilitiesSize:
+                       return settings->ReceivedCapabilitiesSize;
+                       break;
+
+               case FreeRDP_OsMajorType:
+                       return settings->OsMajorType;
+                       break;
+
+               case FreeRDP_OsMinorType:
+                       return settings->OsMinorType;
+                       break;
+
+               case FreeRDP_BitmapCacheVersion:
+                       return settings->BitmapCacheVersion;
+                       break;
+
+               case FreeRDP_BitmapCacheV2NumCells:
+                       return settings->BitmapCacheV2NumCells;
+                       break;
+
+               case FreeRDP_PointerCacheSize:
+                       return settings->PointerCacheSize;
+                       break;
+
+               case FreeRDP_KeyboardLayout:
+                       return settings->KeyboardLayout;
+                       break;
+
+               case FreeRDP_KeyboardType:
+                       return settings->KeyboardType;
+                       break;
+
+               case FreeRDP_KeyboardSubType:
+                       return settings->KeyboardSubType;
+                       break;
+
+               case FreeRDP_KeyboardFunctionKey:
+                       return settings->KeyboardFunctionKey;
+                       break;
+
+               case FreeRDP_BrushSupportLevel:
+                       return settings->BrushSupportLevel;
+                       break;
+
+               case FreeRDP_GlyphSupportLevel:
+                       return settings->GlyphSupportLevel;
+                       break;
+
+               case FreeRDP_OffscreenSupportLevel:
+                       return settings->OffscreenSupportLevel;
+                       break;
+
+               case FreeRDP_OffscreenCacheSize:
+                       return settings->OffscreenCacheSize;
+                       break;
+
+               case FreeRDP_OffscreenCacheEntries:
+                       return settings->OffscreenCacheEntries;
+                       break;
+
+               case FreeRDP_VirtualChannelCompressionFlags:
+                       return settings->VirtualChannelCompressionFlags;
+                       break;
+
+               case FreeRDP_VirtualChannelChunkSize:
+                       return settings->VirtualChannelChunkSize;
+                       break;
+
+               case FreeRDP_MultifragMaxRequestSize:
+                       return settings->MultifragMaxRequestSize;
+                       break;
+
+               case FreeRDP_LargePointerFlag:
+                       return settings->LargePointerFlag;
+                       break;
+
+               case FreeRDP_CompDeskSupportLevel:
+                       return settings->CompDeskSupportLevel;
+                       break;
+
+               case FreeRDP_RemoteFxCodecId:
+                       return settings->RemoteFxCodecId;
+                       break;
+
+               case FreeRDP_RemoteFxCodecMode:
+                       return settings->RemoteFxCodecMode;
+                       break;
+
+               case FreeRDP_NSCodecId:
+                       return settings->NSCodecId;
+                       break;
+
+               case FreeRDP_JpegCodecId:
+                       return settings->JpegCodecId;
+                       break;
+
+               case FreeRDP_JpegQuality:
+                       return settings->JpegQuality;
+                       break;
+
+               case FreeRDP_BitmapCacheV3CodecId:
+                       return settings->BitmapCacheV3CodecId;
+                       break;
+
+               case FreeRDP_DrawNineGridCacheSize:
+                       return settings->DrawNineGridCacheSize;
+                       break;
+
+               case FreeRDP_DrawNineGridCacheEntries:
+                       return settings->DrawNineGridCacheEntries;
+                       break;
+
+               case FreeRDP_DeviceCount:
+                       return settings->DeviceCount;
+                       break;
+
+               case FreeRDP_DeviceArraySize:
+                       return settings->DeviceArraySize;
+                       break;
+
+               case FreeRDP_StaticChannelCount:
+                       return settings->StaticChannelCount;
+                       break;
+
+               case FreeRDP_StaticChannelArraySize:
+                       return settings->StaticChannelArraySize;
+                       break;
+
+               case FreeRDP_DynamicChannelCount:
+                       return settings->DynamicChannelCount;
+                       break;
+
+               case FreeRDP_DynamicChannelArraySize:
+                       return settings->DynamicChannelArraySize;
+                       break;
+
+               default:
+                       return 0;
+                       break;
+       }
+
+       return 0;
+}
+
+int freerdp_set_param_uint32(rdpSettings* settings, int id, UINT32 param)
+{
+       switch (id)
+       {
+               case FreeRDP_ShareId:
+                       settings->ShareId = param;
+                       break;
+
+               case FreeRDP_PduSource:
+                       settings->PduSource = param;
+                       break;
+
+               case FreeRDP_ServerPort:
+                       settings->ServerPort = param;
+                       break;
+
+               case FreeRDP_RdpVersion:
+                       settings->RdpVersion = param;
+                       break;
+
+               case FreeRDP_DesktopWidth:
+                       settings->DesktopWidth = param;
+                       break;
+
+               case FreeRDP_DesktopHeight:
+                       settings->DesktopHeight = param;
+                       break;
+
+               case FreeRDP_ColorDepth:
+                       settings->ColorDepth = param;
+                       break;
+
+               case FreeRDP_ConnectionType:
+                       settings->ConnectionType = param;
+                       break;
+
+               case FreeRDP_ClientBuild:
+                       settings->ClientBuild = param;
+                       break;
+
+               case FreeRDP_EarlyCapabilitiesFlag:
+                       settings->EarlyCapabilitiesFlag = param;
+                       break;
+
+               case FreeRDP_EncryptionMethods:
+                       settings->EncryptionMethods = param;
+                       break;
+
+               case FreeRDP_ExtEncryptionMethods:
+                       settings->ExtEncryptionMethods = param;
+                       break;
+
+               case FreeRDP_EncryptionLevel:
+                       settings->EncryptionLevel = param;
+                       break;
+
+               case FreeRDP_ChannelCount:
+                       settings->ChannelCount = param;
+                       break;
+
+               case FreeRDP_ChannelDefArraySize:
+                       settings->ChannelDefArraySize = param;
+                       break;
+
+               case FreeRDP_ClusterInfoFlags:
+                       settings->ClusterInfoFlags = param;
+                       break;
+
+               case FreeRDP_RedirectedSessionId:
+                       settings->RedirectedSessionId = param;
+                       break;
+
+               case FreeRDP_MonitorDefArraySize:
+                       settings->MonitorDefArraySize = param;
+                       break;
+
+               case FreeRDP_MultitransportFlags:
+                       settings->MultitransportFlags = param;
+                       break;
+
+               case FreeRDP_AutoReconnectMaxRetries:
+                       settings->AutoReconnectMaxRetries = param;
+                       break;
+
+               case FreeRDP_PerformanceFlags:
+                       settings->PerformanceFlags = param;
+                       break;
+
+               case FreeRDP_RequestedProtocols:
+                       settings->RequestedProtocols = param;
+                       break;
+
+               case FreeRDP_SelectedProtocol:
+                       settings->SelectedProtocol = param;
+                       break;
+
+               case FreeRDP_NegotiationFlags:
+                       settings->NegotiationFlags = param;
+                       break;
+
+               case FreeRDP_CookieMaxLength:
+                       settings->CookieMaxLength = param;
+                       break;
+
+               case FreeRDP_PreconnectionId:
+                       settings->PreconnectionId = param;
+                       break;
+
+               case FreeRDP_RedirectionFlags:
+                       settings->RedirectionFlags = param;
+                       break;
+
+               case FreeRDP_LoadBalanceInfoLength:
+                       settings->LoadBalanceInfoLength = param;
+                       break;
+
+               case FreeRDP_RedirectionUsernameLength:
+                       settings->RedirectionUsernameLength = param;
+                       break;
+
+               case FreeRDP_RedirectionDomainLength:
+                       settings->RedirectionDomainLength = param;
+                       break;
+
+               case FreeRDP_RedirectionPasswordLength:
+                       settings->RedirectionPasswordLength = param;
+                       break;
+
+               case FreeRDP_RedirectionTargetFQDNLength:
+                       settings->RedirectionTargetFQDNLength = param;
+                       break;
+
+               case FreeRDP_RedirectionTargetNetBiosNameLength:
+                       settings->RedirectionTargetNetBiosNameLength = param;
+                       break;
+
+               case FreeRDP_RedirectionTsvUrlLength:
+                       settings->RedirectionTsvUrlLength = param;
+                       break;
+
+               case FreeRDP_TargetNetAddressCount:
+                       settings->TargetNetAddressCount = param;
+                       break;
+
+               case FreeRDP_PercentScreen:
+                       settings->PercentScreen = param;
+                       break;
+
+               case FreeRDP_GatewayPort:
+                       settings->GatewayPort = param;
+                       break;
+
+               case FreeRDP_GatewayCredentialsSource:
+                       settings->GatewayCredentialsSource = param;
+                       break;
+
+               case FreeRDP_RemoteAppNumIconCaches:
+                       settings->RemoteAppNumIconCaches = param;
+                       break;
+
+               case FreeRDP_RemoteAppNumIconCacheEntries:
+                       settings->RemoteAppNumIconCacheEntries = param;
+                       break;
+
+               case FreeRDP_ReceivedCapabilitiesSize:
+                       settings->ReceivedCapabilitiesSize = param;
+                       break;
+
+               case FreeRDP_OsMajorType:
+                       settings->OsMajorType = param;
+                       break;
+
+               case FreeRDP_OsMinorType:
+                       settings->OsMinorType = param;
+                       break;
+
+               case FreeRDP_BitmapCacheVersion:
+                       settings->BitmapCacheVersion = param;
+                       break;
+
+               case FreeRDP_BitmapCacheV2NumCells:
+                       settings->BitmapCacheV2NumCells = param;
+                       break;
+
+               case FreeRDP_PointerCacheSize:
+                       settings->PointerCacheSize = param;
+                       break;
+
+               case FreeRDP_KeyboardLayout:
+                       settings->KeyboardLayout = param;
+                       break;
+
+               case FreeRDP_KeyboardType:
+                       settings->KeyboardType = param;
+                       break;
+
+               case FreeRDP_KeyboardSubType:
+                       settings->KeyboardSubType = param;
+                       break;
+
+               case FreeRDP_KeyboardFunctionKey:
+                       settings->KeyboardFunctionKey = param;
+                       break;
+
+               case FreeRDP_BrushSupportLevel:
+                       settings->BrushSupportLevel = param;
+                       break;
+
+               case FreeRDP_GlyphSupportLevel:
+                       settings->GlyphSupportLevel = param;
+                       break;
+
+               case FreeRDP_OffscreenSupportLevel:
+                       settings->OffscreenSupportLevel = param;
+                       break;
+
+               case FreeRDP_OffscreenCacheSize:
+                       settings->OffscreenCacheSize = param;
+                       break;
+
+               case FreeRDP_OffscreenCacheEntries:
+                       settings->OffscreenCacheEntries = param;
+                       break;
+
+               case FreeRDP_VirtualChannelCompressionFlags:
+                       settings->VirtualChannelCompressionFlags = param;
+                       break;
+
+               case FreeRDP_VirtualChannelChunkSize:
+                       settings->VirtualChannelChunkSize = param;
+                       break;
+
+               case FreeRDP_MultifragMaxRequestSize:
+                       settings->MultifragMaxRequestSize = param;
+                       break;
+
+               case FreeRDP_LargePointerFlag:
+                       settings->LargePointerFlag = param;
+                       break;
+
+               case FreeRDP_CompDeskSupportLevel:
+                       settings->CompDeskSupportLevel = param;
+                       break;
+
+               case FreeRDP_RemoteFxCodecId:
+                       settings->RemoteFxCodecId = param;
+                       break;
+
+               case FreeRDP_RemoteFxCodecMode:
+                       settings->RemoteFxCodecMode = param;
+                       break;
+
+               case FreeRDP_NSCodecId:
+                       settings->NSCodecId = param;
+                       break;
+
+               case FreeRDP_JpegCodecId:
+                       settings->JpegCodecId = param;
+                       break;
+
+               case FreeRDP_JpegQuality:
+                       settings->JpegQuality = param;
+                       break;
+
+               case FreeRDP_BitmapCacheV3CodecId:
+                       settings->BitmapCacheV3CodecId = param;
+                       break;
+
+               case FreeRDP_DrawNineGridCacheSize:
+                       settings->DrawNineGridCacheSize = param;
+                       break;
+
+               case FreeRDP_DrawNineGridCacheEntries:
+                       settings->DrawNineGridCacheEntries = param;
+                       break;
+
+               case FreeRDP_DeviceCount:
+                       settings->DeviceCount = param;
+                       break;
+
+               case FreeRDP_DeviceArraySize:
+                       settings->DeviceArraySize = param;
+                       break;
+
+               case FreeRDP_StaticChannelCount:
+                       settings->StaticChannelCount = param;
+                       break;
+
+               case FreeRDP_StaticChannelArraySize:
+                       settings->StaticChannelArraySize = param;
+                       break;
+
+               case FreeRDP_DynamicChannelCount:
+                       settings->DynamicChannelCount = param;
+                       break;
+
+               case FreeRDP_DynamicChannelArraySize:
+                       settings->DynamicChannelArraySize = param;
+                       break;
+
+               default:
+                       return -1;
+                       break;
+       }
+
+       return 0;
+}
+
+char* freerdp_get_param_string(rdpSettings* settings, int id)
+{
+       switch (id)
+       {
+               case FreeRDP_ServerHostname:
+                       return settings->ServerHostname;
+                       break;
+
+               case FreeRDP_Username:
+                       return settings->Username;
+                       break;
+
+               case FreeRDP_Password:
+                       return settings->Password;
+                       break;
+
+               case FreeRDP_Domain:
+                       return settings->Domain;
+                       break;
+
+               case FreeRDP_ClientHostname:
+                       return settings->ClientHostname;
+                       break;
+
+               case FreeRDP_ClientProductId:
+                       return settings->ClientProductId;
+                       break;
+
+               case FreeRDP_AlternateShell:
+                       return settings->AlternateShell;
+                       break;
+
+               case FreeRDP_ShellWorkingDirectory:
+                       return settings->ShellWorkingDirectory;
+                       break;
+
+               case FreeRDP_ClientAddress:
+                       return settings->ClientAddress;
+                       break;
+
+               case FreeRDP_ClientDir:
+                       return settings->ClientDir;
+                       break;
+
+               case FreeRDP_DynamicDSTTimeZoneKeyName:
+                       return settings->DynamicDSTTimeZoneKeyName;
+                       break;
+
+               case FreeRDP_PreconnectionBlob:
+                       return settings->PreconnectionBlob;
+                       break;
+
+               case FreeRDP_KerberosKdc:
+                       return settings->KerberosKdc;
+                       break;
+
+               case FreeRDP_KerberosRealm:
+                       return settings->KerberosRealm;
+                       break;
+
+               case FreeRDP_CertificateName:
+                       return settings->CertificateName;
+                       break;
+
+               case FreeRDP_CertificateFile:
+                       return settings->CertificateFile;
+                       break;
+
+               case FreeRDP_PrivateKeyFile:
+                       return settings->PrivateKeyFile;
+                       break;
+
+               case FreeRDP_RdpKeyFile:
+                       return settings->RdpKeyFile;
+                       break;
+
+               case FreeRDP_WindowTitle:
+                       return settings->WindowTitle;
+                       break;
+
+               case FreeRDP_ComputerName:
+                       return settings->ComputerName;
+                       break;
+
+               case FreeRDP_ConnectionFile:
+                       return settings->ConnectionFile;
+                       break;
+
+               case FreeRDP_HomePath:
+                       return settings->HomePath;
+                       break;
+
+               case FreeRDP_ConfigPath:
+                       return settings->ConfigPath;
+                       break;
+
+               case FreeRDP_CurrentPath:
+                       return settings->CurrentPath;
+                       break;
+
+               case FreeRDP_DumpRemoteFxFile:
+                       return settings->DumpRemoteFxFile;
+                       break;
+
+               case FreeRDP_PlayRemoteFxFile:
+                       return settings->PlayRemoteFxFile;
+                       break;
+
+               case FreeRDP_GatewayHostname:
+                       return settings->GatewayHostname;
+                       break;
+
+               case FreeRDP_GatewayUsername:
+                       return settings->GatewayUsername;
+                       break;
+
+               case FreeRDP_GatewayPassword:
+                       return settings->GatewayPassword;
+                       break;
+
+               case FreeRDP_GatewayDomain:
+                       return settings->GatewayDomain;
+                       break;
+
+               case FreeRDP_RemoteApplicationName:
+                       return settings->RemoteApplicationName;
+                       break;
+
+               case FreeRDP_RemoteApplicationIcon:
+                       return settings->RemoteApplicationIcon;
+                       break;
+
+               case FreeRDP_RemoteApplicationProgram:
+                       return settings->RemoteApplicationProgram;
+                       break;
+
+               case FreeRDP_RemoteApplicationFile:
+                       return settings->RemoteApplicationFile;
+                       break;
+
+               case FreeRDP_RemoteApplicationGuid:
+                       return settings->RemoteApplicationGuid;
+                       break;
+
+               case FreeRDP_RemoteApplicationCmdLine:
+                       return settings->RemoteApplicationCmdLine;
+                       break;
+
+               case FreeRDP_ImeFileName:
+                       return settings->ImeFileName;
+                       break;
+
+               case FreeRDP_DrivesToRedirect:
+                       return settings->DrivesToRedirect;
+                       break;
+
+               default:
+                       return NULL;
+                       break;
+       }
+
+       return NULL;
+}
+
+int freerdp_set_param_string(rdpSettings* settings, int id, char* param)
+{
+       switch (id)
+       {
+               case FreeRDP_ServerHostname:
+                       settings->ServerHostname = _strdup(param);
+                       break;
+
+               case FreeRDP_Username:
+                       settings->Username = _strdup(param);
+                       break;
+
+               case FreeRDP_Password:
+                       settings->Password = _strdup(param);
+                       break;
+
+               case FreeRDP_Domain:
+                       settings->Domain = _strdup(param);
+                       break;
+
+               case FreeRDP_ClientHostname:
+                       settings->ClientHostname = _strdup(param);
+                       break;
+
+               case FreeRDP_ClientProductId:
+                       settings->ClientProductId = _strdup(param);
+                       break;
+
+               case FreeRDP_AlternateShell:
+                       settings->AlternateShell = _strdup(param);
+                       break;
+
+               case FreeRDP_ShellWorkingDirectory:
+                       settings->ShellWorkingDirectory = _strdup(param);
+                       break;
+
+               case FreeRDP_ClientAddress:
+                       settings->ClientAddress = _strdup(param);
+                       break;
+
+               case FreeRDP_ClientDir:
+                       settings->ClientDir = _strdup(param);
+                       break;
+
+               case FreeRDP_DynamicDSTTimeZoneKeyName:
+                       settings->DynamicDSTTimeZoneKeyName = _strdup(param);
+                       break;
+
+               case FreeRDP_PreconnectionBlob:
+                       settings->PreconnectionBlob = _strdup(param);
+                       break;
+
+               case FreeRDP_KerberosKdc:
+                       settings->KerberosKdc = _strdup(param);
+                       break;
+
+               case FreeRDP_KerberosRealm:
+                       settings->KerberosRealm = _strdup(param);
+                       break;
+
+               case FreeRDP_CertificateName:
+                       settings->CertificateName = _strdup(param);
+                       break;
+
+               case FreeRDP_CertificateFile:
+                       settings->CertificateFile = _strdup(param);
+                       break;
+
+               case FreeRDP_PrivateKeyFile:
+                       settings->PrivateKeyFile = _strdup(param);
+                       break;
+
+               case FreeRDP_RdpKeyFile:
+                       settings->RdpKeyFile = _strdup(param);
+                       break;
+
+               case FreeRDP_WindowTitle:
+                       settings->WindowTitle = _strdup(param);
+                       break;
+
+               case FreeRDP_ComputerName:
+                       settings->ComputerName = _strdup(param);
+                       break;
+
+               case FreeRDP_ConnectionFile:
+                       settings->ConnectionFile = _strdup(param);
+                       break;
+
+               case FreeRDP_HomePath:
+                       settings->HomePath = _strdup(param);
+                       break;
+
+               case FreeRDP_ConfigPath:
+                       settings->ConfigPath = _strdup(param);
+                       break;
+
+               case FreeRDP_CurrentPath:
+                       settings->CurrentPath = _strdup(param);
+                       break;
+
+               case FreeRDP_DumpRemoteFxFile:
+                       settings->DumpRemoteFxFile = _strdup(param);
+                       break;
+
+               case FreeRDP_PlayRemoteFxFile:
+                       settings->PlayRemoteFxFile = _strdup(param);
+                       break;
+
+               case FreeRDP_GatewayHostname:
+                       settings->GatewayHostname = _strdup(param);
+                       break;
+
+               case FreeRDP_GatewayUsername:
+                       settings->GatewayUsername = _strdup(param);
+                       break;
+
+               case FreeRDP_GatewayPassword:
+                       settings->GatewayPassword = _strdup(param);
+                       break;
+
+               case FreeRDP_GatewayDomain:
+                       settings->GatewayDomain = _strdup(param);
+                       break;
+
+               case FreeRDP_RemoteApplicationName:
+                       settings->RemoteApplicationName = _strdup(param);
+                       break;
+
+               case FreeRDP_RemoteApplicationIcon:
+                       settings->RemoteApplicationIcon = _strdup(param);
+                       break;
+
+               case FreeRDP_RemoteApplicationProgram:
+                       settings->RemoteApplicationProgram = _strdup(param);
+                       break;
+
+               case FreeRDP_RemoteApplicationFile:
+                       settings->RemoteApplicationFile = _strdup(param);
+                       break;
+
+               case FreeRDP_RemoteApplicationGuid:
+                       settings->RemoteApplicationGuid = _strdup(param);
+                       break;
+
+               case FreeRDP_RemoteApplicationCmdLine:
+                       settings->RemoteApplicationCmdLine = _strdup(param);
+                       break;
+
+               case FreeRDP_ImeFileName:
+                       settings->ImeFileName = _strdup(param);
+                       break;
+
+               case FreeRDP_DrivesToRedirect:
+                       settings->DrivesToRedirect = _strdup(param);
+                       break;
+
+               default:
+                       return -1;
+                       break;
+       }
+
+       return 0;
+}