FreeRDP
Loading...
Searching...
No Matches
settings_getters.c
1/* Generated by */
2
3#include "../core/settings.h"
4
5#include <winpr/assert.h>
6#include <freerdp/settings.h>
7#include <freerdp/log.h>
8
9#define TAG FREERDP_TAG("common.settings")
10
11static void free_string(char** current, BOOL cleanup)
12{
13 if (cleanup)
14 {
15 if (*current)
16 memset(*current, 0, strlen(*current));
17 free(*current);
18 (*current) = NULL;
19 }
20}
21
22static BOOL alloc_empty_string(char** current, const char* next, size_t next_len)
23{
24 if (!next && (next_len > 0))
25 {
26 *current = calloc(next_len, 1);
27 return (*current != NULL);
28 }
29 return FALSE;
30}
31
32static BOOL update_string_copy_(char** current, const char* next, size_t next_len, BOOL cleanup)
33{
34 free_string(current, cleanup);
35
36 if (alloc_empty_string(current, next, next_len))
37 return TRUE;
38
39 *current = (next ? strndup(next, next_len) : NULL);
40 return !next || (*current != NULL);
41}
42
43static BOOL update_string_(char** current, char* next, size_t next_len)
44{
45 free_string(current, TRUE);
46
47 if (alloc_empty_string(current, next, next_len))
48 return TRUE;
49
50 *current = next;
51 return !next || (*current != NULL);
52}
53
54BOOL freerdp_settings_get_bool(WINPR_ATTR_UNUSED const rdpSettings* settings,
55 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Bool id)
56{
57 WINPR_ASSERT(settings);
58
59 switch (id)
60 {
61 case FreeRDP_AadSecurity:
62 return settings->AadSecurity;
63
64 case FreeRDP_AllowCacheWaitingList:
65 return settings->AllowCacheWaitingList;
66
67 case FreeRDP_AllowDesktopComposition:
68 return settings->AllowDesktopComposition;
69
70 case FreeRDP_AllowFontSmoothing:
71 return settings->AllowFontSmoothing;
72
73 case FreeRDP_AllowUnanouncedOrdersFromServer:
74 return settings->AllowUnanouncedOrdersFromServer;
75
76 case FreeRDP_AltSecFrameMarkerSupport:
77 return settings->AltSecFrameMarkerSupport;
78
79 case FreeRDP_AsyncChannels:
80 return settings->AsyncChannels;
81
82 case FreeRDP_AsyncUpdate:
83 return settings->AsyncUpdate;
84
85 case FreeRDP_AudioCapture:
86 return settings->AudioCapture;
87
88 case FreeRDP_AudioPlayback:
89 return settings->AudioPlayback;
90
91 case FreeRDP_Authentication:
92 return settings->Authentication;
93
94 case FreeRDP_AuthenticationOnly:
95 return settings->AuthenticationOnly;
96
97 case FreeRDP_AutoAcceptCertificate:
98 return settings->AutoAcceptCertificate;
99
100 case FreeRDP_AutoDenyCertificate:
101 return settings->AutoDenyCertificate;
102
103 case FreeRDP_AutoLogonEnabled:
104 return settings->AutoLogonEnabled;
105
106 case FreeRDP_AutoReconnectionEnabled:
107 return settings->AutoReconnectionEnabled;
108
109 case FreeRDP_AutoReconnectionPacketSupported:
110 return settings->AutoReconnectionPacketSupported;
111
112 case FreeRDP_BitmapCacheEnabled:
113 return settings->BitmapCacheEnabled;
114
115 case FreeRDP_BitmapCachePersistEnabled:
116 return settings->BitmapCachePersistEnabled;
117
118 case FreeRDP_BitmapCacheV3Enabled:
119 return settings->BitmapCacheV3Enabled;
120
121 case FreeRDP_BitmapCompressionDisabled:
122 return settings->BitmapCompressionDisabled;
123
124 case FreeRDP_CertificateCallbackPreferPEM:
125 return settings->CertificateCallbackPreferPEM;
126
127 case FreeRDP_CompressionEnabled:
128 return settings->CompressionEnabled;
129
130 case FreeRDP_ConnectChildSession:
131 return settings->ConnectChildSession;
132
133 case FreeRDP_ConsoleSession:
134 return settings->ConsoleSession;
135
136 case FreeRDP_CredentialsFromStdin:
137 return settings->CredentialsFromStdin;
138
139 case FreeRDP_DeactivateClientDecoding:
140 return settings->DeactivateClientDecoding;
141
142 case FreeRDP_Decorations:
143 return settings->Decorations;
144
145 case FreeRDP_DesktopResize:
146 return settings->DesktopResize;
147
148 case FreeRDP_DeviceRedirection:
149 return settings->DeviceRedirection;
150
151 case FreeRDP_DisableCredentialsDelegation:
152 return settings->DisableCredentialsDelegation;
153
154 case FreeRDP_DisableCtrlAltDel:
155 return settings->DisableCtrlAltDel;
156
157 case FreeRDP_DisableCursorBlinking:
158 return settings->DisableCursorBlinking;
159
160 case FreeRDP_DisableCursorShadow:
161 return settings->DisableCursorShadow;
162
163 case FreeRDP_DisableFullWindowDrag:
164 return settings->DisableFullWindowDrag;
165
166 case FreeRDP_DisableMenuAnims:
167 return settings->DisableMenuAnims;
168
169 case FreeRDP_DisableRemoteAppCapsCheck:
170 return settings->DisableRemoteAppCapsCheck;
171
172 case FreeRDP_DisableThemes:
173 return settings->DisableThemes;
174
175 case FreeRDP_DisableWallpaper:
176 return settings->DisableWallpaper;
177
178 case FreeRDP_DrawAllowColorSubsampling:
179 return settings->DrawAllowColorSubsampling;
180
181 case FreeRDP_DrawAllowDynamicColorFidelity:
182 return settings->DrawAllowDynamicColorFidelity;
183
184 case FreeRDP_DrawAllowSkipAlpha:
185 return settings->DrawAllowSkipAlpha;
186
187 case FreeRDP_DrawGdiPlusCacheEnabled:
188 return settings->DrawGdiPlusCacheEnabled;
189
190 case FreeRDP_DrawGdiPlusEnabled:
191 return settings->DrawGdiPlusEnabled;
192
193 case FreeRDP_DrawNineGridEnabled:
194 return settings->DrawNineGridEnabled;
195
196 case FreeRDP_DumpRemoteFx:
197 return settings->DumpRemoteFx;
198
199 case FreeRDP_DynamicDaylightTimeDisabled:
200 return settings->DynamicDaylightTimeDisabled;
201
202 case FreeRDP_DynamicResolutionUpdate:
203 return settings->DynamicResolutionUpdate;
204
205 case FreeRDP_EmbeddedWindow:
206 return settings->EmbeddedWindow;
207
208 case FreeRDP_EnableWindowsKey:
209 return settings->EnableWindowsKey;
210
211 case FreeRDP_EncomspVirtualChannel:
212 return settings->EncomspVirtualChannel;
213
214 case FreeRDP_ExtSecurity:
215 return settings->ExtSecurity;
216
217 case FreeRDP_ExternalCertificateManagement:
218 return settings->ExternalCertificateManagement;
219
220 case FreeRDP_FIPSMode:
221 return settings->FIPSMode;
222
223 case FreeRDP_FastPathInput:
224 return settings->FastPathInput;
225
226 case FreeRDP_FastPathOutput:
227 return settings->FastPathOutput;
228
229 case FreeRDP_ForceEncryptedCsPdu:
230 return settings->ForceEncryptedCsPdu;
231
232 case FreeRDP_ForceMultimon:
233 return settings->ForceMultimon;
234
235 case FreeRDP_FrameMarkerCommandEnabled:
236 return settings->FrameMarkerCommandEnabled;
237
238 case FreeRDP_Fullscreen:
239 return settings->Fullscreen;
240
241 case FreeRDP_GatewayArmTransport:
242 return settings->GatewayArmTransport;
243
244 case FreeRDP_GatewayAvdUseTenantid:
245 return settings->GatewayAvdUseTenantid;
246
247 case FreeRDP_GatewayBypassLocal:
248 return settings->GatewayBypassLocal;
249
250 case FreeRDP_GatewayEnabled:
251 return settings->GatewayEnabled;
252
253 case FreeRDP_GatewayHttpExtAuthSspiNtlm:
254 return settings->GatewayHttpExtAuthSspiNtlm;
255
256 case FreeRDP_GatewayHttpTransport:
257 return settings->GatewayHttpTransport;
258
259 case FreeRDP_GatewayHttpUseWebsockets:
260 return settings->GatewayHttpUseWebsockets;
261
262 case FreeRDP_GatewayIgnoreRedirectionPolicy:
263 return settings->GatewayIgnoreRedirectionPolicy;
264
265 case FreeRDP_GatewayRpcTransport:
266 return settings->GatewayRpcTransport;
267
268 case FreeRDP_GatewayUdpTransport:
269 return settings->GatewayUdpTransport;
270
271 case FreeRDP_GatewayUseSameCredentials:
272 return settings->GatewayUseSameCredentials;
273
274 case FreeRDP_GfxAVC444:
275 return settings->GfxAVC444;
276
277 case FreeRDP_GfxAVC444v2:
278 return settings->GfxAVC444v2;
279
280 case FreeRDP_GfxH264:
281 return settings->GfxH264;
282
283 case FreeRDP_GfxPlanar:
284 return settings->GfxPlanar;
285
286 case FreeRDP_GfxProgressive:
287 return settings->GfxProgressive;
288
289 case FreeRDP_GfxProgressiveV2:
290 return settings->GfxProgressiveV2;
291
292 case FreeRDP_GfxSendQoeAck:
293 return settings->GfxSendQoeAck;
294
295 case FreeRDP_GfxSmallCache:
296 return settings->GfxSmallCache;
297
298 case FreeRDP_GfxSuspendFrameAck:
299 return settings->GfxSuspendFrameAck;
300
301 case FreeRDP_GfxThinClient:
302 return settings->GfxThinClient;
303
304 case FreeRDP_GrabKeyboard:
305 return settings->GrabKeyboard;
306
307 case FreeRDP_GrabMouse:
308 return settings->GrabMouse;
309
310 case FreeRDP_HasExtendedMouseEvent:
311 return settings->HasExtendedMouseEvent;
312
313 case FreeRDP_HasHorizontalWheel:
314 return settings->HasHorizontalWheel;
315
316 case FreeRDP_HasMonitorAttributes:
317 return settings->HasMonitorAttributes;
318
319 case FreeRDP_HasQoeEvent:
320 return settings->HasQoeEvent;
321
322 case FreeRDP_HasRelativeMouseEvent:
323 return settings->HasRelativeMouseEvent;
324
325 case FreeRDP_HiDefRemoteApp:
326 return settings->HiDefRemoteApp;
327
328 case FreeRDP_IPv6Enabled:
329 return settings->IPv6Enabled;
330
331 case FreeRDP_IgnoreCertificate:
332 return settings->IgnoreCertificate;
333
334 case FreeRDP_IgnoreInvalidDevices:
335 return settings->IgnoreInvalidDevices;
336
337 case FreeRDP_JpegCodec:
338 return settings->JpegCodec;
339
340 case FreeRDP_KerberosRdgIsProxy:
341 return settings->KerberosRdgIsProxy;
342
343 case FreeRDP_ListMonitors:
344 return settings->ListMonitors;
345
346 case FreeRDP_LocalConnection:
347 return settings->LocalConnection;
348
349 case FreeRDP_LogonErrors:
350 return settings->LogonErrors;
351
352 case FreeRDP_LogonNotify:
353 return settings->LogonNotify;
354
355 case FreeRDP_LongCredentialsSupported:
356 return settings->LongCredentialsSupported;
357
358 case FreeRDP_LyncRdpMode:
359 return settings->LyncRdpMode;
360
361 case FreeRDP_MaximizeShell:
362 return settings->MaximizeShell;
363
364 case FreeRDP_MouseAttached:
365 return settings->MouseAttached;
366
367 case FreeRDP_MouseHasWheel:
368 return settings->MouseHasWheel;
369
370 case FreeRDP_MouseMotion:
371 return settings->MouseMotion;
372
373 case FreeRDP_MouseUseRelativeMove:
374 return settings->MouseUseRelativeMove;
375
376 case FreeRDP_MstscCookieMode:
377 return settings->MstscCookieMode;
378
379 case FreeRDP_MultiTouchGestures:
380 return settings->MultiTouchGestures;
381
382 case FreeRDP_MultiTouchInput:
383 return settings->MultiTouchInput;
384
385 case FreeRDP_NSCodec:
386 return settings->NSCodec;
387
388 case FreeRDP_NSCodecAllowDynamicColorFidelity:
389 return settings->NSCodecAllowDynamicColorFidelity;
390
391 case FreeRDP_NSCodecAllowSubsampling:
392 return settings->NSCodecAllowSubsampling;
393
394 case FreeRDP_NegotiateSecurityLayer:
395 return settings->NegotiateSecurityLayer;
396
397 case FreeRDP_NetworkAutoDetect:
398 return settings->NetworkAutoDetect;
399
400 case FreeRDP_NlaSecurity:
401 return settings->NlaSecurity;
402
403 case FreeRDP_NoBitmapCompressionHeader:
404 return settings->NoBitmapCompressionHeader;
405
406 case FreeRDP_OldLicenseBehaviour:
407 return settings->OldLicenseBehaviour;
408
409 case FreeRDP_PasswordIsSmartcardPin:
410 return settings->PasswordIsSmartcardPin;
411
412 case FreeRDP_PercentScreenUseHeight:
413 return settings->PercentScreenUseHeight;
414
415 case FreeRDP_PercentScreenUseWidth:
416 return settings->PercentScreenUseWidth;
417
418 case FreeRDP_PlayRemoteFx:
419 return settings->PlayRemoteFx;
420
421 case FreeRDP_PreferIPv6OverIPv4:
422 return settings->PreferIPv6OverIPv4;
423
424 case FreeRDP_PrintReconnectCookie:
425 return settings->PrintReconnectCookie;
426
427 case FreeRDP_PromptForCredentials:
428 return settings->PromptForCredentials;
429
430 case FreeRDP_RdpSecurity:
431 return settings->RdpSecurity;
432
433 case FreeRDP_RdstlsSecurity:
434 return settings->RdstlsSecurity;
435
436 case FreeRDP_RedirectClipboard:
437 return settings->RedirectClipboard;
438
439 case FreeRDP_RedirectDrives:
440 return settings->RedirectDrives;
441
442 case FreeRDP_RedirectHomeDrive:
443 return settings->RedirectHomeDrive;
444
445 case FreeRDP_RedirectParallelPorts:
446 return settings->RedirectParallelPorts;
447
448 case FreeRDP_RedirectPrinters:
449 return settings->RedirectPrinters;
450
451 case FreeRDP_RedirectSerialPorts:
452 return settings->RedirectSerialPorts;
453
454 case FreeRDP_RedirectSmartCards:
455 return settings->RedirectSmartCards;
456
457 case FreeRDP_RedirectWebAuthN:
458 return settings->RedirectWebAuthN;
459
460 case FreeRDP_RefreshRect:
461 return settings->RefreshRect;
462
463 case FreeRDP_RemdeskVirtualChannel:
464 return settings->RemdeskVirtualChannel;
465
466 case FreeRDP_RemoteAppLanguageBarSupported:
467 return settings->RemoteAppLanguageBarSupported;
468
469 case FreeRDP_RemoteApplicationMode:
470 return settings->RemoteApplicationMode;
471
472 case FreeRDP_RemoteAssistanceMode:
473 return settings->RemoteAssistanceMode;
474
475 case FreeRDP_RemoteAssistanceRequestControl:
476 return settings->RemoteAssistanceRequestControl;
477
478 case FreeRDP_RemoteConsoleAudio:
479 return settings->RemoteConsoleAudio;
480
481 case FreeRDP_RemoteCredentialGuard:
482 return settings->RemoteCredentialGuard;
483
484 case FreeRDP_RemoteFxCodec:
485 return settings->RemoteFxCodec;
486
487 case FreeRDP_RemoteFxImageCodec:
488 return settings->RemoteFxImageCodec;
489
490 case FreeRDP_RemoteFxOnly:
491 return settings->RemoteFxOnly;
492
493 case FreeRDP_RestrictedAdminModeRequired:
494 return settings->RestrictedAdminModeRequired;
495
496 case FreeRDP_RestrictedAdminModeSupported:
497 return settings->RestrictedAdminModeSupported;
498
499 case FreeRDP_SaltedChecksum:
500 return settings->SaltedChecksum;
501
502 case FreeRDP_SendPreconnectionPdu:
503 return settings->SendPreconnectionPdu;
504
505 case FreeRDP_ServerLicenseRequired:
506 return settings->ServerLicenseRequired;
507
508 case FreeRDP_ServerMode:
509 return settings->ServerMode;
510
511 case FreeRDP_SmartSizing:
512 return settings->SmartSizing;
513
514 case FreeRDP_SmartcardEmulation:
515 return settings->SmartcardEmulation;
516
517 case FreeRDP_SmartcardLogon:
518 return settings->SmartcardLogon;
519
520 case FreeRDP_SoftwareGdi:
521 return settings->SoftwareGdi;
522
523 case FreeRDP_SoundBeepsEnabled:
524 return settings->SoundBeepsEnabled;
525
526 case FreeRDP_SpanMonitors:
527 return settings->SpanMonitors;
528
529 case FreeRDP_SupportAsymetricKeys:
530 return settings->SupportAsymetricKeys;
531
532 case FreeRDP_SupportDisplayControl:
533 return settings->SupportDisplayControl;
534
535 case FreeRDP_SupportDynamicChannels:
536 return settings->SupportDynamicChannels;
537
538 case FreeRDP_SupportDynamicTimeZone:
539 return settings->SupportDynamicTimeZone;
540
541 case FreeRDP_SupportEchoChannel:
542 return settings->SupportEchoChannel;
543
544 case FreeRDP_SupportEdgeActionV1:
545 return settings->SupportEdgeActionV1;
546
547 case FreeRDP_SupportEdgeActionV2:
548 return settings->SupportEdgeActionV2;
549
550 case FreeRDP_SupportErrorInfoPdu:
551 return settings->SupportErrorInfoPdu;
552
553 case FreeRDP_SupportGeometryTracking:
554 return settings->SupportGeometryTracking;
555
556 case FreeRDP_SupportGraphicsPipeline:
557 return settings->SupportGraphicsPipeline;
558
559 case FreeRDP_SupportHeartbeatPdu:
560 return settings->SupportHeartbeatPdu;
561
562 case FreeRDP_SupportMonitorLayoutPdu:
563 return settings->SupportMonitorLayoutPdu;
564
565 case FreeRDP_SupportMultitransport:
566 return settings->SupportMultitransport;
567
568 case FreeRDP_SupportSSHAgentChannel:
569 return settings->SupportSSHAgentChannel;
570
571 case FreeRDP_SupportSkipChannelJoin:
572 return settings->SupportSkipChannelJoin;
573
574 case FreeRDP_SupportStatusInfoPdu:
575 return settings->SupportStatusInfoPdu;
576
577 case FreeRDP_SupportVideoOptimized:
578 return settings->SupportVideoOptimized;
579
580 case FreeRDP_SuppressOutput:
581 return settings->SuppressOutput;
582
583 case FreeRDP_SurfaceCommandsEnabled:
584 return settings->SurfaceCommandsEnabled;
585
586 case FreeRDP_SurfaceFrameMarkerEnabled:
587 return settings->SurfaceFrameMarkerEnabled;
588
589 case FreeRDP_SuspendInput:
590 return settings->SuspendInput;
591
592 case FreeRDP_SynchronousDynamicChannels:
593 return settings->SynchronousDynamicChannels;
594
595 case FreeRDP_SynchronousStaticChannels:
596 return settings->SynchronousStaticChannels;
597
598 case FreeRDP_TcpKeepAlive:
599 return settings->TcpKeepAlive;
600
601 case FreeRDP_TlsSecurity:
602 return settings->TlsSecurity;
603
604 case FreeRDP_ToggleFullscreen:
605 return settings->ToggleFullscreen;
606
607 case FreeRDP_TransportDump:
608 return settings->TransportDump;
609
610 case FreeRDP_TransportDumpReplay:
611 return settings->TransportDumpReplay;
612
613 case FreeRDP_TransportDumpReplayNodelay:
614 return settings->TransportDumpReplayNodelay;
615
616 case FreeRDP_UnicodeInput:
617 return settings->UnicodeInput;
618
619 case FreeRDP_UnmapButtons:
620 return settings->UnmapButtons;
621
622 case FreeRDP_UseCommonStdioCallbacks:
623 return settings->UseCommonStdioCallbacks;
624
625 case FreeRDP_UseMultimon:
626 return settings->UseMultimon;
627
628 case FreeRDP_UseRdpSecurityLayer:
629 return settings->UseRdpSecurityLayer;
630
631 case FreeRDP_UsingSavedCredentials:
632 return settings->UsingSavedCredentials;
633
634 case FreeRDP_VideoDisable:
635 return settings->VideoDisable;
636
637 case FreeRDP_VmConnectMode:
638 return settings->VmConnectMode;
639
640 case FreeRDP_WaitForOutputBufferFlush:
641 return settings->WaitForOutputBufferFlush;
642
643 case FreeRDP_Workarea:
644 return settings->Workarea;
645
646 default:
647 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
650 WINPR_ASSERT(FALSE);
651 return FALSE;
652 }
653}
654
655BOOL freerdp_settings_set_bool(WINPR_ATTR_UNUSED rdpSettings* settings,
656 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Bool id, BOOL val)
657{
658 union
659 {
660 void* v;
661 const void* cv;
662 BOOL c;
663 const BOOL cc;
664 } cnv;
665 WINPR_ASSERT(settings);
666
667 cnv.c = val;
668
669 switch (id)
670 {
671 case FreeRDP_AadSecurity:
672 settings->AadSecurity = cnv.c;
673 break;
674
675 case FreeRDP_AllowCacheWaitingList:
676 settings->AllowCacheWaitingList = cnv.c;
677 break;
678
679 case FreeRDP_AllowDesktopComposition:
680 settings->AllowDesktopComposition = cnv.c;
681 break;
682
683 case FreeRDP_AllowFontSmoothing:
684 settings->AllowFontSmoothing = cnv.c;
685 break;
686
687 case FreeRDP_AllowUnanouncedOrdersFromServer:
688 settings->AllowUnanouncedOrdersFromServer = cnv.c;
689 break;
690
691 case FreeRDP_AltSecFrameMarkerSupport:
692 settings->AltSecFrameMarkerSupport = cnv.c;
693 break;
694
695 case FreeRDP_AsyncChannels:
696 settings->AsyncChannels = cnv.c;
697 break;
698
699 case FreeRDP_AsyncUpdate:
700 settings->AsyncUpdate = cnv.c;
701 break;
702
703 case FreeRDP_AudioCapture:
704 settings->AudioCapture = cnv.c;
705 break;
706
707 case FreeRDP_AudioPlayback:
708 settings->AudioPlayback = cnv.c;
709 break;
710
711 case FreeRDP_Authentication:
712 settings->Authentication = cnv.c;
713 break;
714
715 case FreeRDP_AuthenticationOnly:
716 settings->AuthenticationOnly = cnv.c;
717 break;
718
719 case FreeRDP_AutoAcceptCertificate:
720 settings->AutoAcceptCertificate = cnv.c;
721 break;
722
723 case FreeRDP_AutoDenyCertificate:
724 settings->AutoDenyCertificate = cnv.c;
725 break;
726
727 case FreeRDP_AutoLogonEnabled:
728 settings->AutoLogonEnabled = cnv.c;
729 break;
730
731 case FreeRDP_AutoReconnectionEnabled:
732 settings->AutoReconnectionEnabled = cnv.c;
733 break;
734
735 case FreeRDP_AutoReconnectionPacketSupported:
736 settings->AutoReconnectionPacketSupported = cnv.c;
737 break;
738
739 case FreeRDP_BitmapCacheEnabled:
740 settings->BitmapCacheEnabled = cnv.c;
741 break;
742
743 case FreeRDP_BitmapCachePersistEnabled:
744 settings->BitmapCachePersistEnabled = cnv.c;
745 break;
746
747 case FreeRDP_BitmapCacheV3Enabled:
748 settings->BitmapCacheV3Enabled = cnv.c;
749 break;
750
751 case FreeRDP_BitmapCompressionDisabled:
752 settings->BitmapCompressionDisabled = cnv.c;
753 break;
754
755 case FreeRDP_CertificateCallbackPreferPEM:
756 settings->CertificateCallbackPreferPEM = cnv.c;
757 break;
758
759 case FreeRDP_CompressionEnabled:
760 settings->CompressionEnabled = cnv.c;
761 break;
762
763 case FreeRDP_ConnectChildSession:
764 settings->ConnectChildSession = cnv.c;
765 break;
766
767 case FreeRDP_ConsoleSession:
768 settings->ConsoleSession = cnv.c;
769 break;
770
771 case FreeRDP_CredentialsFromStdin:
772 settings->CredentialsFromStdin = cnv.c;
773 break;
774
775 case FreeRDP_DeactivateClientDecoding:
776 settings->DeactivateClientDecoding = cnv.c;
777 break;
778
779 case FreeRDP_Decorations:
780 settings->Decorations = cnv.c;
781 break;
782
783 case FreeRDP_DesktopResize:
784 settings->DesktopResize = cnv.c;
785 break;
786
787 case FreeRDP_DeviceRedirection:
788 settings->DeviceRedirection = cnv.c;
789 break;
790
791 case FreeRDP_DisableCredentialsDelegation:
792 settings->DisableCredentialsDelegation = cnv.c;
793 break;
794
795 case FreeRDP_DisableCtrlAltDel:
796 settings->DisableCtrlAltDel = cnv.c;
797 break;
798
799 case FreeRDP_DisableCursorBlinking:
800 settings->DisableCursorBlinking = cnv.c;
801 break;
802
803 case FreeRDP_DisableCursorShadow:
804 settings->DisableCursorShadow = cnv.c;
805 break;
806
807 case FreeRDP_DisableFullWindowDrag:
808 settings->DisableFullWindowDrag = cnv.c;
809 break;
810
811 case FreeRDP_DisableMenuAnims:
812 settings->DisableMenuAnims = cnv.c;
813 break;
814
815 case FreeRDP_DisableRemoteAppCapsCheck:
816 settings->DisableRemoteAppCapsCheck = cnv.c;
817 break;
818
819 case FreeRDP_DisableThemes:
820 settings->DisableThemes = cnv.c;
821 break;
822
823 case FreeRDP_DisableWallpaper:
824 settings->DisableWallpaper = cnv.c;
825 break;
826
827 case FreeRDP_DrawAllowColorSubsampling:
828 settings->DrawAllowColorSubsampling = cnv.c;
829 break;
830
831 case FreeRDP_DrawAllowDynamicColorFidelity:
832 settings->DrawAllowDynamicColorFidelity = cnv.c;
833 break;
834
835 case FreeRDP_DrawAllowSkipAlpha:
836 settings->DrawAllowSkipAlpha = cnv.c;
837 break;
838
839 case FreeRDP_DrawGdiPlusCacheEnabled:
840 settings->DrawGdiPlusCacheEnabled = cnv.c;
841 break;
842
843 case FreeRDP_DrawGdiPlusEnabled:
844 settings->DrawGdiPlusEnabled = cnv.c;
845 break;
846
847 case FreeRDP_DrawNineGridEnabled:
848 settings->DrawNineGridEnabled = cnv.c;
849 break;
850
851 case FreeRDP_DumpRemoteFx:
852 settings->DumpRemoteFx = cnv.c;
853 break;
854
855 case FreeRDP_DynamicDaylightTimeDisabled:
856 settings->DynamicDaylightTimeDisabled = cnv.c;
857 break;
858
859 case FreeRDP_DynamicResolutionUpdate:
860 settings->DynamicResolutionUpdate = cnv.c;
861 break;
862
863 case FreeRDP_EmbeddedWindow:
864 settings->EmbeddedWindow = cnv.c;
865 break;
866
867 case FreeRDP_EnableWindowsKey:
868 settings->EnableWindowsKey = cnv.c;
869 break;
870
871 case FreeRDP_EncomspVirtualChannel:
872 settings->EncomspVirtualChannel = cnv.c;
873 break;
874
875 case FreeRDP_ExtSecurity:
876 settings->ExtSecurity = cnv.c;
877 break;
878
879 case FreeRDP_ExternalCertificateManagement:
880 settings->ExternalCertificateManagement = cnv.c;
881 break;
882
883 case FreeRDP_FIPSMode:
884 settings->FIPSMode = cnv.c;
885 break;
886
887 case FreeRDP_FastPathInput:
888 settings->FastPathInput = cnv.c;
889 break;
890
891 case FreeRDP_FastPathOutput:
892 settings->FastPathOutput = cnv.c;
893 break;
894
895 case FreeRDP_ForceEncryptedCsPdu:
896 settings->ForceEncryptedCsPdu = cnv.c;
897 break;
898
899 case FreeRDP_ForceMultimon:
900 settings->ForceMultimon = cnv.c;
901 break;
902
903 case FreeRDP_FrameMarkerCommandEnabled:
904 settings->FrameMarkerCommandEnabled = cnv.c;
905 break;
906
907 case FreeRDP_Fullscreen:
908 settings->Fullscreen = cnv.c;
909 break;
910
911 case FreeRDP_GatewayArmTransport:
912 settings->GatewayArmTransport = cnv.c;
913 break;
914
915 case FreeRDP_GatewayAvdUseTenantid:
916 settings->GatewayAvdUseTenantid = cnv.c;
917 break;
918
919 case FreeRDP_GatewayBypassLocal:
920 settings->GatewayBypassLocal = cnv.c;
921 break;
922
923 case FreeRDP_GatewayEnabled:
924 settings->GatewayEnabled = cnv.c;
925 break;
926
927 case FreeRDP_GatewayHttpExtAuthSspiNtlm:
928 settings->GatewayHttpExtAuthSspiNtlm = cnv.c;
929 break;
930
931 case FreeRDP_GatewayHttpTransport:
932 settings->GatewayHttpTransport = cnv.c;
933 break;
934
935 case FreeRDP_GatewayHttpUseWebsockets:
936 settings->GatewayHttpUseWebsockets = cnv.c;
937 break;
938
939 case FreeRDP_GatewayIgnoreRedirectionPolicy:
940 settings->GatewayIgnoreRedirectionPolicy = cnv.c;
941 break;
942
943 case FreeRDP_GatewayRpcTransport:
944 settings->GatewayRpcTransport = cnv.c;
945 break;
946
947 case FreeRDP_GatewayUdpTransport:
948 settings->GatewayUdpTransport = cnv.c;
949 break;
950
951 case FreeRDP_GatewayUseSameCredentials:
952 settings->GatewayUseSameCredentials = cnv.c;
953 break;
954
955 case FreeRDP_GfxAVC444:
956 settings->GfxAVC444 = cnv.c;
957 break;
958
959 case FreeRDP_GfxAVC444v2:
960 settings->GfxAVC444v2 = cnv.c;
961 break;
962
963 case FreeRDP_GfxH264:
964 settings->GfxH264 = cnv.c;
965 break;
966
967 case FreeRDP_GfxPlanar:
968 settings->GfxPlanar = cnv.c;
969 break;
970
971 case FreeRDP_GfxProgressive:
972 settings->GfxProgressive = cnv.c;
973 break;
974
975 case FreeRDP_GfxProgressiveV2:
976 settings->GfxProgressiveV2 = cnv.c;
977 break;
978
979 case FreeRDP_GfxSendQoeAck:
980 settings->GfxSendQoeAck = cnv.c;
981 break;
982
983 case FreeRDP_GfxSmallCache:
984 settings->GfxSmallCache = cnv.c;
985 break;
986
987 case FreeRDP_GfxSuspendFrameAck:
988 settings->GfxSuspendFrameAck = cnv.c;
989 break;
990
991 case FreeRDP_GfxThinClient:
992 settings->GfxThinClient = cnv.c;
993 break;
994
995 case FreeRDP_GrabKeyboard:
996 settings->GrabKeyboard = cnv.c;
997 break;
998
999 case FreeRDP_GrabMouse:
1000 settings->GrabMouse = cnv.c;
1001 break;
1002
1003 case FreeRDP_HasExtendedMouseEvent:
1004 settings->HasExtendedMouseEvent = cnv.c;
1005 break;
1006
1007 case FreeRDP_HasHorizontalWheel:
1008 settings->HasHorizontalWheel = cnv.c;
1009 break;
1010
1011 case FreeRDP_HasMonitorAttributes:
1012 settings->HasMonitorAttributes = cnv.c;
1013 break;
1014
1015 case FreeRDP_HasQoeEvent:
1016 settings->HasQoeEvent = cnv.c;
1017 break;
1018
1019 case FreeRDP_HasRelativeMouseEvent:
1020 settings->HasRelativeMouseEvent = cnv.c;
1021 break;
1022
1023 case FreeRDP_HiDefRemoteApp:
1024 settings->HiDefRemoteApp = cnv.c;
1025 break;
1026
1027 case FreeRDP_IPv6Enabled:
1028 settings->IPv6Enabled = cnv.c;
1029 break;
1030
1031 case FreeRDP_IgnoreCertificate:
1032 settings->IgnoreCertificate = cnv.c;
1033 break;
1034
1035 case FreeRDP_IgnoreInvalidDevices:
1036 settings->IgnoreInvalidDevices = cnv.c;
1037 break;
1038
1039 case FreeRDP_JpegCodec:
1040 settings->JpegCodec = cnv.c;
1041 break;
1042
1043 case FreeRDP_KerberosRdgIsProxy:
1044 settings->KerberosRdgIsProxy = cnv.c;
1045 break;
1046
1047 case FreeRDP_ListMonitors:
1048 settings->ListMonitors = cnv.c;
1049 break;
1050
1051 case FreeRDP_LocalConnection:
1052 settings->LocalConnection = cnv.c;
1053 break;
1054
1055 case FreeRDP_LogonErrors:
1056 settings->LogonErrors = cnv.c;
1057 break;
1058
1059 case FreeRDP_LogonNotify:
1060 settings->LogonNotify = cnv.c;
1061 break;
1062
1063 case FreeRDP_LongCredentialsSupported:
1064 settings->LongCredentialsSupported = cnv.c;
1065 break;
1066
1067 case FreeRDP_LyncRdpMode:
1068 settings->LyncRdpMode = cnv.c;
1069 break;
1070
1071 case FreeRDP_MaximizeShell:
1072 settings->MaximizeShell = cnv.c;
1073 break;
1074
1075 case FreeRDP_MouseAttached:
1076 settings->MouseAttached = cnv.c;
1077 break;
1078
1079 case FreeRDP_MouseHasWheel:
1080 settings->MouseHasWheel = cnv.c;
1081 break;
1082
1083 case FreeRDP_MouseMotion:
1084 settings->MouseMotion = cnv.c;
1085 break;
1086
1087 case FreeRDP_MouseUseRelativeMove:
1088 settings->MouseUseRelativeMove = cnv.c;
1089 break;
1090
1091 case FreeRDP_MstscCookieMode:
1092 settings->MstscCookieMode = cnv.c;
1093 break;
1094
1095 case FreeRDP_MultiTouchGestures:
1096 settings->MultiTouchGestures = cnv.c;
1097 break;
1098
1099 case FreeRDP_MultiTouchInput:
1100 settings->MultiTouchInput = cnv.c;
1101 break;
1102
1103 case FreeRDP_NSCodec:
1104 settings->NSCodec = cnv.c;
1105 break;
1106
1107 case FreeRDP_NSCodecAllowDynamicColorFidelity:
1108 settings->NSCodecAllowDynamicColorFidelity = cnv.c;
1109 break;
1110
1111 case FreeRDP_NSCodecAllowSubsampling:
1112 settings->NSCodecAllowSubsampling = cnv.c;
1113 break;
1114
1115 case FreeRDP_NegotiateSecurityLayer:
1116 settings->NegotiateSecurityLayer = cnv.c;
1117 break;
1118
1119 case FreeRDP_NetworkAutoDetect:
1120 settings->NetworkAutoDetect = cnv.c;
1121 break;
1122
1123 case FreeRDP_NlaSecurity:
1124 settings->NlaSecurity = cnv.c;
1125 break;
1126
1127 case FreeRDP_NoBitmapCompressionHeader:
1128 settings->NoBitmapCompressionHeader = cnv.c;
1129 break;
1130
1131 case FreeRDP_OldLicenseBehaviour:
1132 settings->OldLicenseBehaviour = cnv.c;
1133 break;
1134
1135 case FreeRDP_PasswordIsSmartcardPin:
1136 settings->PasswordIsSmartcardPin = cnv.c;
1137 break;
1138
1139 case FreeRDP_PercentScreenUseHeight:
1140 settings->PercentScreenUseHeight = cnv.c;
1141 break;
1142
1143 case FreeRDP_PercentScreenUseWidth:
1144 settings->PercentScreenUseWidth = cnv.c;
1145 break;
1146
1147 case FreeRDP_PlayRemoteFx:
1148 settings->PlayRemoteFx = cnv.c;
1149 break;
1150
1151 case FreeRDP_PreferIPv6OverIPv4:
1152 settings->PreferIPv6OverIPv4 = cnv.c;
1153 break;
1154
1155 case FreeRDP_PrintReconnectCookie:
1156 settings->PrintReconnectCookie = cnv.c;
1157 break;
1158
1159 case FreeRDP_PromptForCredentials:
1160 settings->PromptForCredentials = cnv.c;
1161 break;
1162
1163 case FreeRDP_RdpSecurity:
1164 settings->RdpSecurity = cnv.c;
1165 break;
1166
1167 case FreeRDP_RdstlsSecurity:
1168 settings->RdstlsSecurity = cnv.c;
1169 break;
1170
1171 case FreeRDP_RedirectClipboard:
1172 settings->RedirectClipboard = cnv.c;
1173 break;
1174
1175 case FreeRDP_RedirectDrives:
1176 settings->RedirectDrives = cnv.c;
1177 break;
1178
1179 case FreeRDP_RedirectHomeDrive:
1180 settings->RedirectHomeDrive = cnv.c;
1181 break;
1182
1183 case FreeRDP_RedirectParallelPorts:
1184 settings->RedirectParallelPorts = cnv.c;
1185 break;
1186
1187 case FreeRDP_RedirectPrinters:
1188 settings->RedirectPrinters = cnv.c;
1189 break;
1190
1191 case FreeRDP_RedirectSerialPorts:
1192 settings->RedirectSerialPorts = cnv.c;
1193 break;
1194
1195 case FreeRDP_RedirectSmartCards:
1196 settings->RedirectSmartCards = cnv.c;
1197 break;
1198
1199 case FreeRDP_RedirectWebAuthN:
1200 settings->RedirectWebAuthN = cnv.c;
1201 break;
1202
1203 case FreeRDP_RefreshRect:
1204 settings->RefreshRect = cnv.c;
1205 break;
1206
1207 case FreeRDP_RemdeskVirtualChannel:
1208 settings->RemdeskVirtualChannel = cnv.c;
1209 break;
1210
1211 case FreeRDP_RemoteAppLanguageBarSupported:
1212 settings->RemoteAppLanguageBarSupported = cnv.c;
1213 break;
1214
1215 case FreeRDP_RemoteApplicationMode:
1216 settings->RemoteApplicationMode = cnv.c;
1217 break;
1218
1219 case FreeRDP_RemoteAssistanceMode:
1220 settings->RemoteAssistanceMode = cnv.c;
1221 break;
1222
1223 case FreeRDP_RemoteAssistanceRequestControl:
1224 settings->RemoteAssistanceRequestControl = cnv.c;
1225 break;
1226
1227 case FreeRDP_RemoteConsoleAudio:
1228 settings->RemoteConsoleAudio = cnv.c;
1229 break;
1230
1231 case FreeRDP_RemoteCredentialGuard:
1232 settings->RemoteCredentialGuard = cnv.c;
1233 break;
1234
1235 case FreeRDP_RemoteFxCodec:
1236 settings->RemoteFxCodec = cnv.c;
1237 break;
1238
1239 case FreeRDP_RemoteFxImageCodec:
1240 settings->RemoteFxImageCodec = cnv.c;
1241 break;
1242
1243 case FreeRDP_RemoteFxOnly:
1244 settings->RemoteFxOnly = cnv.c;
1245 break;
1246
1247 case FreeRDP_RestrictedAdminModeRequired:
1248 settings->RestrictedAdminModeRequired = cnv.c;
1249 break;
1250
1251 case FreeRDP_RestrictedAdminModeSupported:
1252 settings->RestrictedAdminModeSupported = cnv.c;
1253 break;
1254
1255 case FreeRDP_SaltedChecksum:
1256 settings->SaltedChecksum = cnv.c;
1257 break;
1258
1259 case FreeRDP_SendPreconnectionPdu:
1260 settings->SendPreconnectionPdu = cnv.c;
1261 break;
1262
1263 case FreeRDP_ServerLicenseRequired:
1264 settings->ServerLicenseRequired = cnv.c;
1265 break;
1266
1267 case FreeRDP_ServerMode:
1268 settings->ServerMode = cnv.c;
1269 break;
1270
1271 case FreeRDP_SmartSizing:
1272 settings->SmartSizing = cnv.c;
1273 break;
1274
1275 case FreeRDP_SmartcardEmulation:
1276 settings->SmartcardEmulation = cnv.c;
1277 break;
1278
1279 case FreeRDP_SmartcardLogon:
1280 settings->SmartcardLogon = cnv.c;
1281 break;
1282
1283 case FreeRDP_SoftwareGdi:
1284 settings->SoftwareGdi = cnv.c;
1285 break;
1286
1287 case FreeRDP_SoundBeepsEnabled:
1288 settings->SoundBeepsEnabled = cnv.c;
1289 break;
1290
1291 case FreeRDP_SpanMonitors:
1292 settings->SpanMonitors = cnv.c;
1293 break;
1294
1295 case FreeRDP_SupportAsymetricKeys:
1296 settings->SupportAsymetricKeys = cnv.c;
1297 break;
1298
1299 case FreeRDP_SupportDisplayControl:
1300 settings->SupportDisplayControl = cnv.c;
1301 break;
1302
1303 case FreeRDP_SupportDynamicChannels:
1304 settings->SupportDynamicChannels = cnv.c;
1305 break;
1306
1307 case FreeRDP_SupportDynamicTimeZone:
1308 settings->SupportDynamicTimeZone = cnv.c;
1309 break;
1310
1311 case FreeRDP_SupportEchoChannel:
1312 settings->SupportEchoChannel = cnv.c;
1313 break;
1314
1315 case FreeRDP_SupportEdgeActionV1:
1316 settings->SupportEdgeActionV1 = cnv.c;
1317 break;
1318
1319 case FreeRDP_SupportEdgeActionV2:
1320 settings->SupportEdgeActionV2 = cnv.c;
1321 break;
1322
1323 case FreeRDP_SupportErrorInfoPdu:
1324 settings->SupportErrorInfoPdu = cnv.c;
1325 break;
1326
1327 case FreeRDP_SupportGeometryTracking:
1328 settings->SupportGeometryTracking = cnv.c;
1329 break;
1330
1331 case FreeRDP_SupportGraphicsPipeline:
1332 settings->SupportGraphicsPipeline = cnv.c;
1333 break;
1334
1335 case FreeRDP_SupportHeartbeatPdu:
1336 settings->SupportHeartbeatPdu = cnv.c;
1337 break;
1338
1339 case FreeRDP_SupportMonitorLayoutPdu:
1340 settings->SupportMonitorLayoutPdu = cnv.c;
1341 break;
1342
1343 case FreeRDP_SupportMultitransport:
1344 settings->SupportMultitransport = cnv.c;
1345 break;
1346
1347 case FreeRDP_SupportSSHAgentChannel:
1348 settings->SupportSSHAgentChannel = cnv.c;
1349 break;
1350
1351 case FreeRDP_SupportSkipChannelJoin:
1352 settings->SupportSkipChannelJoin = cnv.c;
1353 break;
1354
1355 case FreeRDP_SupportStatusInfoPdu:
1356 settings->SupportStatusInfoPdu = cnv.c;
1357 break;
1358
1359 case FreeRDP_SupportVideoOptimized:
1360 settings->SupportVideoOptimized = cnv.c;
1361 break;
1362
1363 case FreeRDP_SuppressOutput:
1364 settings->SuppressOutput = cnv.c;
1365 break;
1366
1367 case FreeRDP_SurfaceCommandsEnabled:
1368 settings->SurfaceCommandsEnabled = cnv.c;
1369 break;
1370
1371 case FreeRDP_SurfaceFrameMarkerEnabled:
1372 settings->SurfaceFrameMarkerEnabled = cnv.c;
1373 break;
1374
1375 case FreeRDP_SuspendInput:
1376 settings->SuspendInput = cnv.c;
1377 break;
1378
1379 case FreeRDP_SynchronousDynamicChannels:
1380 settings->SynchronousDynamicChannels = cnv.c;
1381 break;
1382
1383 case FreeRDP_SynchronousStaticChannels:
1384 settings->SynchronousStaticChannels = cnv.c;
1385 break;
1386
1387 case FreeRDP_TcpKeepAlive:
1388 settings->TcpKeepAlive = cnv.c;
1389 break;
1390
1391 case FreeRDP_TlsSecurity:
1392 settings->TlsSecurity = cnv.c;
1393 break;
1394
1395 case FreeRDP_ToggleFullscreen:
1396 settings->ToggleFullscreen = cnv.c;
1397 break;
1398
1399 case FreeRDP_TransportDump:
1400 settings->TransportDump = cnv.c;
1401 break;
1402
1403 case FreeRDP_TransportDumpReplay:
1404 settings->TransportDumpReplay = cnv.c;
1405 break;
1406
1407 case FreeRDP_TransportDumpReplayNodelay:
1408 settings->TransportDumpReplayNodelay = cnv.c;
1409 break;
1410
1411 case FreeRDP_UnicodeInput:
1412 settings->UnicodeInput = cnv.c;
1413 break;
1414
1415 case FreeRDP_UnmapButtons:
1416 settings->UnmapButtons = cnv.c;
1417 break;
1418
1419 case FreeRDP_UseCommonStdioCallbacks:
1420 settings->UseCommonStdioCallbacks = cnv.c;
1421 break;
1422
1423 case FreeRDP_UseMultimon:
1424 settings->UseMultimon = cnv.c;
1425 break;
1426
1427 case FreeRDP_UseRdpSecurityLayer:
1428 settings->UseRdpSecurityLayer = cnv.c;
1429 break;
1430
1431 case FreeRDP_UsingSavedCredentials:
1432 settings->UsingSavedCredentials = cnv.c;
1433 break;
1434
1435 case FreeRDP_VideoDisable:
1436 settings->VideoDisable = cnv.c;
1437 break;
1438
1439 case FreeRDP_VmConnectMode:
1440 settings->VmConnectMode = cnv.c;
1441 break;
1442
1443 case FreeRDP_WaitForOutputBufferFlush:
1444 settings->WaitForOutputBufferFlush = cnv.c;
1445 break;
1446
1447 case FreeRDP_Workarea:
1448 settings->Workarea = cnv.c;
1449 break;
1450
1451 default:
1452 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
1455 return FALSE;
1456 }
1457 return TRUE;
1458}
1459
1460UINT16 freerdp_settings_get_uint16(WINPR_ATTR_UNUSED const rdpSettings* settings,
1461 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt16 id)
1462{
1463 WINPR_ASSERT(settings);
1464
1465 switch (id)
1466 {
1467 case FreeRDP_CapsGeneralCompressionLevel:
1468 return settings->CapsGeneralCompressionLevel;
1469
1470 case FreeRDP_CapsGeneralCompressionTypes:
1471 return settings->CapsGeneralCompressionTypes;
1472
1473 case FreeRDP_CapsProtocolVersion:
1474 return settings->CapsProtocolVersion;
1475
1476 case FreeRDP_CapsRemoteUnshareFlag:
1477 return settings->CapsRemoteUnshareFlag;
1478
1479 case FreeRDP_CapsUpdateCapabilityFlag:
1480 return settings->CapsUpdateCapabilityFlag;
1481
1482 case FreeRDP_DesktopOrientation:
1483 return settings->DesktopOrientation;
1484
1485 case FreeRDP_OrderSupportFlags:
1486 return settings->OrderSupportFlags;
1487
1488 case FreeRDP_OrderSupportFlagsEx:
1489 return settings->OrderSupportFlagsEx;
1490
1491 case FreeRDP_ProxyPort:
1492 return settings->ProxyPort;
1493
1494 case FreeRDP_SupportedColorDepths:
1495 return settings->SupportedColorDepths;
1496
1497 case FreeRDP_TLSMaxVersion:
1498 return settings->TLSMaxVersion;
1499
1500 case FreeRDP_TLSMinVersion:
1501 return settings->TLSMinVersion;
1502
1503 case FreeRDP_TextANSICodePage:
1504 return settings->TextANSICodePage;
1505
1506 default:
1507 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
1510 WINPR_ASSERT(FALSE);
1511 return 0;
1512 }
1513}
1514
1515BOOL freerdp_settings_set_uint16(WINPR_ATTR_UNUSED rdpSettings* settings,
1516 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt16 id, UINT16 val)
1517{
1518 union
1519 {
1520 void* v;
1521 const void* cv;
1522 UINT16 c;
1523 const UINT16 cc;
1524 } cnv;
1525 WINPR_ASSERT(settings);
1526
1527 cnv.c = val;
1528
1529 switch (id)
1530 {
1531 case FreeRDP_CapsGeneralCompressionLevel:
1532 settings->CapsGeneralCompressionLevel = cnv.c;
1533 break;
1534
1535 case FreeRDP_CapsGeneralCompressionTypes:
1536 settings->CapsGeneralCompressionTypes = cnv.c;
1537 break;
1538
1539 case FreeRDP_CapsProtocolVersion:
1540 settings->CapsProtocolVersion = cnv.c;
1541 break;
1542
1543 case FreeRDP_CapsRemoteUnshareFlag:
1544 settings->CapsRemoteUnshareFlag = cnv.c;
1545 break;
1546
1547 case FreeRDP_CapsUpdateCapabilityFlag:
1548 settings->CapsUpdateCapabilityFlag = cnv.c;
1549 break;
1550
1551 case FreeRDP_DesktopOrientation:
1552 settings->DesktopOrientation = cnv.c;
1553 break;
1554
1555 case FreeRDP_OrderSupportFlags:
1556 settings->OrderSupportFlags = cnv.c;
1557 break;
1558
1559 case FreeRDP_OrderSupportFlagsEx:
1560 settings->OrderSupportFlagsEx = cnv.c;
1561 break;
1562
1563 case FreeRDP_ProxyPort:
1564 settings->ProxyPort = cnv.c;
1565 break;
1566
1567 case FreeRDP_SupportedColorDepths:
1568 settings->SupportedColorDepths = cnv.c;
1569 break;
1570
1571 case FreeRDP_TLSMaxVersion:
1572 settings->TLSMaxVersion = cnv.c;
1573 break;
1574
1575 case FreeRDP_TLSMinVersion:
1576 settings->TLSMinVersion = cnv.c;
1577 break;
1578
1579 case FreeRDP_TextANSICodePage:
1580 settings->TextANSICodePage = cnv.c;
1581 break;
1582
1583 default:
1584 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
1587 return FALSE;
1588 }
1589 return TRUE;
1590}
1591
1592INT16 freerdp_settings_get_int16(WINPR_ATTR_UNUSED const rdpSettings* settings,
1593 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int16 id)
1594{
1595 WINPR_ASSERT(settings);
1596
1597 switch (id)
1598 {
1599 default:
1600 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
1603 WINPR_ASSERT(FALSE);
1604 return 0;
1605 }
1606}
1607
1608BOOL freerdp_settings_set_int16(WINPR_ATTR_UNUSED rdpSettings* settings,
1609 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int16 id, INT16 val)
1610{
1611 union
1612 {
1613 void* v;
1614 const void* cv;
1615 INT16 c;
1616 const INT16 cc;
1617 } cnv;
1618 WINPR_ASSERT(settings);
1619
1620 cnv.c = val;
1621
1622 switch (id)
1623 {
1624 default:
1625 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
1628 return FALSE;
1629 }
1630 return TRUE;
1631}
1632
1633UINT32 freerdp_settings_get_uint32(WINPR_ATTR_UNUSED const rdpSettings* settings,
1634 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt32 id)
1635{
1636 WINPR_ASSERT(settings);
1637
1638 switch (id)
1639 {
1640 case FreeRDP_AcceptedCertLength:
1641 return settings->AcceptedCertLength;
1642
1643 case FreeRDP_AuthenticationLevel:
1644 return settings->AuthenticationLevel;
1645
1646 case FreeRDP_AutoReconnectMaxRetries:
1647 return settings->AutoReconnectMaxRetries;
1648
1649 case FreeRDP_BitmapCacheV2NumCells:
1650 return settings->BitmapCacheV2NumCells;
1651
1652 case FreeRDP_BitmapCacheV3CodecId:
1653 return settings->BitmapCacheV3CodecId;
1654
1655 case FreeRDP_BitmapCacheVersion:
1656 return settings->BitmapCacheVersion;
1657
1658 case FreeRDP_BrushSupportLevel:
1659 return settings->BrushSupportLevel;
1660
1661 case FreeRDP_ChannelCount:
1662 return settings->ChannelCount;
1663
1664 case FreeRDP_ChannelDefArraySize:
1665 return settings->ChannelDefArraySize;
1666
1667 case FreeRDP_ClientBuild:
1668 return settings->ClientBuild;
1669
1670 case FreeRDP_ClientRandomLength:
1671 return settings->ClientRandomLength;
1672
1673 case FreeRDP_ClientSessionId:
1674 return settings->ClientSessionId;
1675
1676 case FreeRDP_ClipboardFeatureMask:
1677 return settings->ClipboardFeatureMask;
1678
1679 case FreeRDP_ClusterInfoFlags:
1680 return settings->ClusterInfoFlags;
1681
1682 case FreeRDP_ColorDepth:
1683 return settings->ColorDepth;
1684
1685 case FreeRDP_ColorPointerCacheSize:
1686 return settings->ColorPointerCacheSize;
1687
1688 case FreeRDP_CompDeskSupportLevel:
1689 return settings->CompDeskSupportLevel;
1690
1691 case FreeRDP_CompressionLevel:
1692 return settings->CompressionLevel;
1693
1694 case FreeRDP_ConnectionType:
1695 return settings->ConnectionType;
1696
1697 case FreeRDP_CookieMaxLength:
1698 return settings->CookieMaxLength;
1699
1700 case FreeRDP_DesktopHeight:
1701 return settings->DesktopHeight;
1702
1703 case FreeRDP_DesktopPhysicalHeight:
1704 return settings->DesktopPhysicalHeight;
1705
1706 case FreeRDP_DesktopPhysicalWidth:
1707 return settings->DesktopPhysicalWidth;
1708
1709 case FreeRDP_DesktopPosX:
1710 return settings->DesktopPosX;
1711
1712 case FreeRDP_DesktopPosY:
1713 return settings->DesktopPosY;
1714
1715 case FreeRDP_DesktopScaleFactor:
1716 return settings->DesktopScaleFactor;
1717
1718 case FreeRDP_DesktopWidth:
1719 return settings->DesktopWidth;
1720
1721 case FreeRDP_DeviceArraySize:
1722 return settings->DeviceArraySize;
1723
1724 case FreeRDP_DeviceCount:
1725 return settings->DeviceCount;
1726
1727 case FreeRDP_DeviceScaleFactor:
1728 return settings->DeviceScaleFactor;
1729
1730 case FreeRDP_DrawNineGridCacheEntries:
1731 return settings->DrawNineGridCacheEntries;
1732
1733 case FreeRDP_DrawNineGridCacheSize:
1734 return settings->DrawNineGridCacheSize;
1735
1736 case FreeRDP_DynamicChannelArraySize:
1737 return settings->DynamicChannelArraySize;
1738
1739 case FreeRDP_DynamicChannelCount:
1740 return settings->DynamicChannelCount;
1741
1742 case FreeRDP_EarlyCapabilityFlags:
1743 return settings->EarlyCapabilityFlags;
1744
1745 case FreeRDP_EncryptionLevel:
1746 return settings->EncryptionLevel;
1747
1748 case FreeRDP_EncryptionMethods:
1749 return settings->EncryptionMethods;
1750
1751 case FreeRDP_ExtEncryptionMethods:
1752 return settings->ExtEncryptionMethods;
1753
1754 case FreeRDP_FakeMouseMotionInterval:
1755 return settings->FakeMouseMotionInterval;
1756
1757 case FreeRDP_Floatbar:
1758 return settings->Floatbar;
1759
1760 case FreeRDP_ForceIPvX:
1761 return settings->ForceIPvX;
1762
1763 case FreeRDP_FrameAcknowledge:
1764 return settings->FrameAcknowledge;
1765
1766 case FreeRDP_GatewayAcceptedCertLength:
1767 return settings->GatewayAcceptedCertLength;
1768
1769 case FreeRDP_GatewayCredentialsSource:
1770 return settings->GatewayCredentialsSource;
1771
1772 case FreeRDP_GatewayPort:
1773 return settings->GatewayPort;
1774
1775 case FreeRDP_GatewayUsageMethod:
1776 return settings->GatewayUsageMethod;
1777
1778 case FreeRDP_GfxCapsFilter:
1779 return settings->GfxCapsFilter;
1780
1781 case FreeRDP_GlyphSupportLevel:
1782 return settings->GlyphSupportLevel;
1783
1784 case FreeRDP_JpegCodecId:
1785 return settings->JpegCodecId;
1786
1787 case FreeRDP_JpegQuality:
1788 return settings->JpegQuality;
1789
1790 case FreeRDP_KeySpec:
1791 return settings->KeySpec;
1792
1793 case FreeRDP_KeyboardCodePage:
1794 return settings->KeyboardCodePage;
1795
1796 case FreeRDP_KeyboardFunctionKey:
1797 return settings->KeyboardFunctionKey;
1798
1799 case FreeRDP_KeyboardHook:
1800 return settings->KeyboardHook;
1801
1802 case FreeRDP_KeyboardLayout:
1803 return settings->KeyboardLayout;
1804
1805 case FreeRDP_KeyboardSubType:
1806 return settings->KeyboardSubType;
1807
1808 case FreeRDP_KeyboardType:
1809 return settings->KeyboardType;
1810
1811 case FreeRDP_LargePointerFlag:
1812 return settings->LargePointerFlag;
1813
1814 case FreeRDP_LoadBalanceInfoLength:
1815 return settings->LoadBalanceInfoLength;
1816
1817 case FreeRDP_MonitorAttributeFlags:
1818 return settings->MonitorAttributeFlags;
1819
1820 case FreeRDP_MonitorCount:
1821 return settings->MonitorCount;
1822
1823 case FreeRDP_MonitorDefArraySize:
1824 return settings->MonitorDefArraySize;
1825
1826 case FreeRDP_MonitorFlags:
1827 return settings->MonitorFlags;
1828
1829 case FreeRDP_MultifragMaxRequestSize:
1830 return settings->MultifragMaxRequestSize;
1831
1832 case FreeRDP_MultitransportFlags:
1833 return settings->MultitransportFlags;
1834
1835 case FreeRDP_NSCodecColorLossLevel:
1836 return settings->NSCodecColorLossLevel;
1837
1838 case FreeRDP_NSCodecId:
1839 return settings->NSCodecId;
1840
1841 case FreeRDP_NegotiationFlags:
1842 return settings->NegotiationFlags;
1843
1844 case FreeRDP_NumMonitorIds:
1845 return settings->NumMonitorIds;
1846
1847 case FreeRDP_OffscreenCacheEntries:
1848 return settings->OffscreenCacheEntries;
1849
1850 case FreeRDP_OffscreenCacheSize:
1851 return settings->OffscreenCacheSize;
1852
1853 case FreeRDP_OffscreenSupportLevel:
1854 return settings->OffscreenSupportLevel;
1855
1856 case FreeRDP_OsMajorType:
1857 return settings->OsMajorType;
1858
1859 case FreeRDP_OsMinorType:
1860 return settings->OsMinorType;
1861
1862 case FreeRDP_Password51Length:
1863 return settings->Password51Length;
1864
1865 case FreeRDP_PduSource:
1866 return settings->PduSource;
1867
1868 case FreeRDP_PercentScreen:
1869 return settings->PercentScreen;
1870
1871 case FreeRDP_PerformanceFlags:
1872 return settings->PerformanceFlags;
1873
1874 case FreeRDP_PointerCacheSize:
1875 return settings->PointerCacheSize;
1876
1877 case FreeRDP_PreconnectionId:
1878 return settings->PreconnectionId;
1879
1880 case FreeRDP_ProxyType:
1881 return settings->ProxyType;
1882
1883 case FreeRDP_RdpVersion:
1884 return settings->RdpVersion;
1885
1886 case FreeRDP_ReceivedCapabilitiesSize:
1887 return settings->ReceivedCapabilitiesSize;
1888
1889 case FreeRDP_RedirectedSessionId:
1890 return settings->RedirectedSessionId;
1891
1892 case FreeRDP_RedirectionAcceptedCertLength:
1893 return settings->RedirectionAcceptedCertLength;
1894
1895 case FreeRDP_RedirectionFlags:
1896 return settings->RedirectionFlags;
1897
1898 case FreeRDP_RedirectionGuidLength:
1899 return settings->RedirectionGuidLength;
1900
1901 case FreeRDP_RedirectionPasswordLength:
1902 return settings->RedirectionPasswordLength;
1903
1904 case FreeRDP_RedirectionPreferType:
1905 return settings->RedirectionPreferType;
1906
1907 case FreeRDP_RedirectionTsvUrlLength:
1908 return settings->RedirectionTsvUrlLength;
1909
1910 case FreeRDP_RemoteAppNumIconCacheEntries:
1911 return settings->RemoteAppNumIconCacheEntries;
1912
1913 case FreeRDP_RemoteAppNumIconCaches:
1914 return settings->RemoteAppNumIconCaches;
1915
1916 case FreeRDP_RemoteApplicationExpandCmdLine:
1917 return settings->RemoteApplicationExpandCmdLine;
1918
1919 case FreeRDP_RemoteApplicationExpandWorkingDir:
1920 return settings->RemoteApplicationExpandWorkingDir;
1921
1922 case FreeRDP_RemoteApplicationSupportLevel:
1923 return settings->RemoteApplicationSupportLevel;
1924
1925 case FreeRDP_RemoteApplicationSupportMask:
1926 return settings->RemoteApplicationSupportMask;
1927
1928 case FreeRDP_RemoteFxCaptureFlags:
1929 return settings->RemoteFxCaptureFlags;
1930
1931 case FreeRDP_RemoteFxCodecId:
1932 return settings->RemoteFxCodecId;
1933
1934 case FreeRDP_RemoteFxCodecMode:
1935 return settings->RemoteFxCodecMode;
1936
1937 case FreeRDP_RemoteFxRlgrMode:
1938 return settings->RemoteFxRlgrMode;
1939
1940 case FreeRDP_RemoteWndSupportLevel:
1941 return settings->RemoteWndSupportLevel;
1942
1943 case FreeRDP_RequestedProtocols:
1944 return settings->RequestedProtocols;
1945
1946 case FreeRDP_SelectedProtocol:
1947 return settings->SelectedProtocol;
1948
1949 case FreeRDP_ServerCertificateLength:
1950 return settings->ServerCertificateLength;
1951
1952 case FreeRDP_ServerLicenseProductIssuersCount:
1953 return settings->ServerLicenseProductIssuersCount;
1954
1955 case FreeRDP_ServerLicenseProductVersion:
1956 return settings->ServerLicenseProductVersion;
1957
1958 case FreeRDP_ServerPort:
1959 return settings->ServerPort;
1960
1961 case FreeRDP_ServerRandomLength:
1962 return settings->ServerRandomLength;
1963
1964 case FreeRDP_ShareId:
1965 return settings->ShareId;
1966
1967 case FreeRDP_SmartSizingHeight:
1968 return settings->SmartSizingHeight;
1969
1970 case FreeRDP_SmartSizingWidth:
1971 return settings->SmartSizingWidth;
1972
1973 case FreeRDP_StaticChannelArraySize:
1974 return settings->StaticChannelArraySize;
1975
1976 case FreeRDP_StaticChannelCount:
1977 return settings->StaticChannelCount;
1978
1979 case FreeRDP_SurfaceCommandsSupported:
1980 return settings->SurfaceCommandsSupported;
1981
1982 case FreeRDP_TargetNetAddressCount:
1983 return settings->TargetNetAddressCount;
1984
1985 case FreeRDP_TcpAckTimeout:
1986 return settings->TcpAckTimeout;
1987
1988 case FreeRDP_TcpConnectTimeout:
1989 return settings->TcpConnectTimeout;
1990
1991 case FreeRDP_TcpKeepAliveDelay:
1992 return settings->TcpKeepAliveDelay;
1993
1994 case FreeRDP_TcpKeepAliveInterval:
1995 return settings->TcpKeepAliveInterval;
1996
1997 case FreeRDP_TcpKeepAliveRetries:
1998 return settings->TcpKeepAliveRetries;
1999
2000 case FreeRDP_ThreadingFlags:
2001 return settings->ThreadingFlags;
2002
2003 case FreeRDP_TlsSecLevel:
2004 return settings->TlsSecLevel;
2005
2006 case FreeRDP_VCChunkSize:
2007 return settings->VCChunkSize;
2008
2009 case FreeRDP_VCFlags:
2010 return settings->VCFlags;
2011
2012#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
2013 // API Compatibility section, remove with FreeRDP 4.x
2014 case (FreeRDP_Settings_Keys_UInt32)FreeRDP_MonitorLocalShiftX:
2015 return (UINT32)settings->MonitorLocalShiftX;
2016
2017 // API Compatibility section, remove with FreeRDP 4.x
2018 case (FreeRDP_Settings_Keys_UInt32)FreeRDP_MonitorLocalShiftY:
2019 return (UINT32)settings->MonitorLocalShiftY;
2020
2021#endif
2022 default:
2023 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2026 WINPR_ASSERT(FALSE);
2027 return 0;
2028 }
2029}
2030
2031BOOL freerdp_settings_set_uint32(WINPR_ATTR_UNUSED rdpSettings* settings,
2032 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt32 id, UINT32 val)
2033{
2034 union
2035 {
2036 void* v;
2037 const void* cv;
2038 UINT32 c;
2039 const UINT32 cc;
2040 } cnv;
2041 WINPR_ASSERT(settings);
2042
2043 cnv.c = val;
2044
2045 switch (id)
2046 {
2047 case FreeRDP_AcceptedCertLength:
2048 settings->AcceptedCertLength = cnv.c;
2049 break;
2050
2051 case FreeRDP_AuthenticationLevel:
2052 settings->AuthenticationLevel = cnv.c;
2053 break;
2054
2055 case FreeRDP_AutoReconnectMaxRetries:
2056 settings->AutoReconnectMaxRetries = cnv.c;
2057 break;
2058
2059 case FreeRDP_BitmapCacheV2NumCells:
2060 settings->BitmapCacheV2NumCells = cnv.c;
2061 break;
2062
2063 case FreeRDP_BitmapCacheV3CodecId:
2064 settings->BitmapCacheV3CodecId = cnv.c;
2065 break;
2066
2067 case FreeRDP_BitmapCacheVersion:
2068 settings->BitmapCacheVersion = cnv.c;
2069 break;
2070
2071 case FreeRDP_BrushSupportLevel:
2072 settings->BrushSupportLevel = cnv.c;
2073 break;
2074
2075 case FreeRDP_ChannelCount:
2076 settings->ChannelCount = cnv.c;
2077 break;
2078
2079 case FreeRDP_ChannelDefArraySize:
2080 settings->ChannelDefArraySize = cnv.c;
2081 break;
2082
2083 case FreeRDP_ClientBuild:
2084 settings->ClientBuild = cnv.c;
2085 break;
2086
2087 case FreeRDP_ClientRandomLength:
2088 settings->ClientRandomLength = cnv.c;
2089 break;
2090
2091 case FreeRDP_ClientSessionId:
2092 settings->ClientSessionId = cnv.c;
2093 break;
2094
2095 case FreeRDP_ClipboardFeatureMask:
2096 settings->ClipboardFeatureMask = cnv.c;
2097 break;
2098
2099 case FreeRDP_ClusterInfoFlags:
2100 settings->ClusterInfoFlags = cnv.c;
2101 break;
2102
2103 case FreeRDP_ColorDepth:
2104 settings->ColorDepth = cnv.c;
2105 break;
2106
2107 case FreeRDP_ColorPointerCacheSize:
2108 settings->ColorPointerCacheSize = cnv.c;
2109 break;
2110
2111 case FreeRDP_CompDeskSupportLevel:
2112 settings->CompDeskSupportLevel = cnv.c;
2113 break;
2114
2115 case FreeRDP_CompressionLevel:
2116 settings->CompressionLevel = cnv.c;
2117 break;
2118
2119 case FreeRDP_ConnectionType:
2120 settings->ConnectionType = cnv.c;
2121 break;
2122
2123 case FreeRDP_CookieMaxLength:
2124 settings->CookieMaxLength = cnv.c;
2125 break;
2126
2127 case FreeRDP_DesktopHeight:
2128 settings->DesktopHeight = cnv.c;
2129 break;
2130
2131 case FreeRDP_DesktopPhysicalHeight:
2132 settings->DesktopPhysicalHeight = cnv.c;
2133 break;
2134
2135 case FreeRDP_DesktopPhysicalWidth:
2136 settings->DesktopPhysicalWidth = cnv.c;
2137 break;
2138
2139 case FreeRDP_DesktopPosX:
2140 settings->DesktopPosX = cnv.c;
2141 break;
2142
2143 case FreeRDP_DesktopPosY:
2144 settings->DesktopPosY = cnv.c;
2145 break;
2146
2147 case FreeRDP_DesktopScaleFactor:
2148 settings->DesktopScaleFactor = cnv.c;
2149 break;
2150
2151 case FreeRDP_DesktopWidth:
2152 settings->DesktopWidth = cnv.c;
2153 break;
2154
2155 case FreeRDP_DeviceArraySize:
2156 settings->DeviceArraySize = cnv.c;
2157 break;
2158
2159 case FreeRDP_DeviceCount:
2160 settings->DeviceCount = cnv.c;
2161 break;
2162
2163 case FreeRDP_DeviceScaleFactor:
2164 settings->DeviceScaleFactor = cnv.c;
2165 break;
2166
2167 case FreeRDP_DrawNineGridCacheEntries:
2168 settings->DrawNineGridCacheEntries = cnv.c;
2169 break;
2170
2171 case FreeRDP_DrawNineGridCacheSize:
2172 settings->DrawNineGridCacheSize = cnv.c;
2173 break;
2174
2175 case FreeRDP_DynamicChannelArraySize:
2176 settings->DynamicChannelArraySize = cnv.c;
2177 break;
2178
2179 case FreeRDP_DynamicChannelCount:
2180 settings->DynamicChannelCount = cnv.c;
2181 break;
2182
2183 case FreeRDP_EarlyCapabilityFlags:
2184 settings->EarlyCapabilityFlags = cnv.c;
2185 break;
2186
2187 case FreeRDP_EncryptionLevel:
2188 settings->EncryptionLevel = cnv.c;
2189 break;
2190
2191 case FreeRDP_EncryptionMethods:
2192 settings->EncryptionMethods = cnv.c;
2193 break;
2194
2195 case FreeRDP_ExtEncryptionMethods:
2196 settings->ExtEncryptionMethods = cnv.c;
2197 break;
2198
2199 case FreeRDP_FakeMouseMotionInterval:
2200 settings->FakeMouseMotionInterval = cnv.c;
2201 break;
2202
2203 case FreeRDP_Floatbar:
2204 settings->Floatbar = cnv.c;
2205 break;
2206
2207 case FreeRDP_ForceIPvX:
2208 settings->ForceIPvX = cnv.c;
2209 break;
2210
2211 case FreeRDP_FrameAcknowledge:
2212 settings->FrameAcknowledge = cnv.c;
2213 break;
2214
2215 case FreeRDP_GatewayAcceptedCertLength:
2216 settings->GatewayAcceptedCertLength = cnv.c;
2217 break;
2218
2219 case FreeRDP_GatewayCredentialsSource:
2220 settings->GatewayCredentialsSource = cnv.c;
2221 break;
2222
2223 case FreeRDP_GatewayPort:
2224 settings->GatewayPort = cnv.c;
2225 break;
2226
2227 case FreeRDP_GatewayUsageMethod:
2228 settings->GatewayUsageMethod = cnv.c;
2229 break;
2230
2231 case FreeRDP_GfxCapsFilter:
2232 settings->GfxCapsFilter = cnv.c;
2233 break;
2234
2235 case FreeRDP_GlyphSupportLevel:
2236 settings->GlyphSupportLevel = cnv.c;
2237 break;
2238
2239 case FreeRDP_JpegCodecId:
2240 settings->JpegCodecId = cnv.c;
2241 break;
2242
2243 case FreeRDP_JpegQuality:
2244 settings->JpegQuality = cnv.c;
2245 break;
2246
2247 case FreeRDP_KeySpec:
2248 settings->KeySpec = cnv.c;
2249 break;
2250
2251 case FreeRDP_KeyboardCodePage:
2252 settings->KeyboardCodePage = cnv.c;
2253 break;
2254
2255 case FreeRDP_KeyboardFunctionKey:
2256 settings->KeyboardFunctionKey = cnv.c;
2257 break;
2258
2259 case FreeRDP_KeyboardHook:
2260 settings->KeyboardHook = cnv.c;
2261 break;
2262
2263 case FreeRDP_KeyboardLayout:
2264 settings->KeyboardLayout = cnv.c;
2265 break;
2266
2267 case FreeRDP_KeyboardSubType:
2268 settings->KeyboardSubType = cnv.c;
2269 break;
2270
2271 case FreeRDP_KeyboardType:
2272 settings->KeyboardType = cnv.c;
2273 break;
2274
2275 case FreeRDP_LargePointerFlag:
2276 settings->LargePointerFlag = cnv.c;
2277 break;
2278
2279 case FreeRDP_LoadBalanceInfoLength:
2280 settings->LoadBalanceInfoLength = cnv.c;
2281 break;
2282
2283 case FreeRDP_MonitorAttributeFlags:
2284 settings->MonitorAttributeFlags = cnv.c;
2285 break;
2286
2287 case FreeRDP_MonitorCount:
2288 settings->MonitorCount = cnv.c;
2289 break;
2290
2291 case FreeRDP_MonitorDefArraySize:
2292 settings->MonitorDefArraySize = cnv.c;
2293 break;
2294
2295 case FreeRDP_MonitorFlags:
2296 settings->MonitorFlags = cnv.c;
2297 break;
2298
2299 case FreeRDP_MultifragMaxRequestSize:
2300 settings->MultifragMaxRequestSize = cnv.c;
2301 break;
2302
2303 case FreeRDP_MultitransportFlags:
2304 settings->MultitransportFlags = cnv.c;
2305 break;
2306
2307 case FreeRDP_NSCodecColorLossLevel:
2308 settings->NSCodecColorLossLevel = cnv.c;
2309 break;
2310
2311 case FreeRDP_NSCodecId:
2312 settings->NSCodecId = cnv.c;
2313 break;
2314
2315 case FreeRDP_NegotiationFlags:
2316 settings->NegotiationFlags = cnv.c;
2317 break;
2318
2319 case FreeRDP_NumMonitorIds:
2320 settings->NumMonitorIds = cnv.c;
2321 break;
2322
2323 case FreeRDP_OffscreenCacheEntries:
2324 settings->OffscreenCacheEntries = cnv.c;
2325 break;
2326
2327 case FreeRDP_OffscreenCacheSize:
2328 settings->OffscreenCacheSize = cnv.c;
2329 break;
2330
2331 case FreeRDP_OffscreenSupportLevel:
2332 settings->OffscreenSupportLevel = cnv.c;
2333 break;
2334
2335 case FreeRDP_OsMajorType:
2336 settings->OsMajorType = cnv.c;
2337 break;
2338
2339 case FreeRDP_OsMinorType:
2340 settings->OsMinorType = cnv.c;
2341 break;
2342
2343 case FreeRDP_Password51Length:
2344 settings->Password51Length = cnv.c;
2345 break;
2346
2347 case FreeRDP_PduSource:
2348 settings->PduSource = cnv.c;
2349 break;
2350
2351 case FreeRDP_PercentScreen:
2352 settings->PercentScreen = cnv.c;
2353 break;
2354
2355 case FreeRDP_PerformanceFlags:
2356 settings->PerformanceFlags = cnv.c;
2357 break;
2358
2359 case FreeRDP_PointerCacheSize:
2360 settings->PointerCacheSize = cnv.c;
2361 break;
2362
2363 case FreeRDP_PreconnectionId:
2364 settings->PreconnectionId = cnv.c;
2365 break;
2366
2367 case FreeRDP_ProxyType:
2368 settings->ProxyType = cnv.c;
2369 break;
2370
2371 case FreeRDP_RdpVersion:
2372 settings->RdpVersion = cnv.c;
2373 break;
2374
2375 case FreeRDP_ReceivedCapabilitiesSize:
2376 settings->ReceivedCapabilitiesSize = cnv.c;
2377 break;
2378
2379 case FreeRDP_RedirectedSessionId:
2380 settings->RedirectedSessionId = cnv.c;
2381 break;
2382
2383 case FreeRDP_RedirectionAcceptedCertLength:
2384 settings->RedirectionAcceptedCertLength = cnv.c;
2385 break;
2386
2387 case FreeRDP_RedirectionFlags:
2388 settings->RedirectionFlags = cnv.c;
2389 break;
2390
2391 case FreeRDP_RedirectionGuidLength:
2392 settings->RedirectionGuidLength = cnv.c;
2393 break;
2394
2395 case FreeRDP_RedirectionPasswordLength:
2396 settings->RedirectionPasswordLength = cnv.c;
2397 break;
2398
2399 case FreeRDP_RedirectionPreferType:
2400 settings->RedirectionPreferType = cnv.c;
2401 break;
2402
2403 case FreeRDP_RedirectionTsvUrlLength:
2404 settings->RedirectionTsvUrlLength = cnv.c;
2405 break;
2406
2407 case FreeRDP_RemoteAppNumIconCacheEntries:
2408 settings->RemoteAppNumIconCacheEntries = cnv.c;
2409 break;
2410
2411 case FreeRDP_RemoteAppNumIconCaches:
2412 settings->RemoteAppNumIconCaches = cnv.c;
2413 break;
2414
2415 case FreeRDP_RemoteApplicationExpandCmdLine:
2416 settings->RemoteApplicationExpandCmdLine = cnv.c;
2417 break;
2418
2419 case FreeRDP_RemoteApplicationExpandWorkingDir:
2420 settings->RemoteApplicationExpandWorkingDir = cnv.c;
2421 break;
2422
2423 case FreeRDP_RemoteApplicationSupportLevel:
2424 settings->RemoteApplicationSupportLevel = cnv.c;
2425 break;
2426
2427 case FreeRDP_RemoteApplicationSupportMask:
2428 settings->RemoteApplicationSupportMask = cnv.c;
2429 break;
2430
2431 case FreeRDP_RemoteFxCaptureFlags:
2432 settings->RemoteFxCaptureFlags = cnv.c;
2433 break;
2434
2435 case FreeRDP_RemoteFxCodecId:
2436 settings->RemoteFxCodecId = cnv.c;
2437 break;
2438
2439 case FreeRDP_RemoteFxCodecMode:
2440 settings->RemoteFxCodecMode = cnv.c;
2441 break;
2442
2443 case FreeRDP_RemoteFxRlgrMode:
2444 settings->RemoteFxRlgrMode = cnv.c;
2445 break;
2446
2447 case FreeRDP_RemoteWndSupportLevel:
2448 settings->RemoteWndSupportLevel = cnv.c;
2449 break;
2450
2451 case FreeRDP_RequestedProtocols:
2452 settings->RequestedProtocols = cnv.c;
2453 break;
2454
2455 case FreeRDP_SelectedProtocol:
2456 settings->SelectedProtocol = cnv.c;
2457 break;
2458
2459 case FreeRDP_ServerCertificateLength:
2460 settings->ServerCertificateLength = cnv.c;
2461 break;
2462
2463 case FreeRDP_ServerLicenseProductIssuersCount:
2464 settings->ServerLicenseProductIssuersCount = cnv.c;
2465 break;
2466
2467 case FreeRDP_ServerLicenseProductVersion:
2468 settings->ServerLicenseProductVersion = cnv.c;
2469 break;
2470
2471 case FreeRDP_ServerPort:
2472 settings->ServerPort = cnv.c;
2473 break;
2474
2475 case FreeRDP_ServerRandomLength:
2476 settings->ServerRandomLength = cnv.c;
2477 break;
2478
2479 case FreeRDP_ShareId:
2480 settings->ShareId = cnv.c;
2481 break;
2482
2483 case FreeRDP_SmartSizingHeight:
2484 settings->SmartSizingHeight = cnv.c;
2485 break;
2486
2487 case FreeRDP_SmartSizingWidth:
2488 settings->SmartSizingWidth = cnv.c;
2489 break;
2490
2491 case FreeRDP_StaticChannelArraySize:
2492 settings->StaticChannelArraySize = cnv.c;
2493 break;
2494
2495 case FreeRDP_StaticChannelCount:
2496 settings->StaticChannelCount = cnv.c;
2497 break;
2498
2499 case FreeRDP_SurfaceCommandsSupported:
2500 settings->SurfaceCommandsSupported = cnv.c;
2501 break;
2502
2503 case FreeRDP_TargetNetAddressCount:
2504 settings->TargetNetAddressCount = cnv.c;
2505 break;
2506
2507 case FreeRDP_TcpAckTimeout:
2508 settings->TcpAckTimeout = cnv.c;
2509 break;
2510
2511 case FreeRDP_TcpConnectTimeout:
2512 settings->TcpConnectTimeout = cnv.c;
2513 break;
2514
2515 case FreeRDP_TcpKeepAliveDelay:
2516 settings->TcpKeepAliveDelay = cnv.c;
2517 break;
2518
2519 case FreeRDP_TcpKeepAliveInterval:
2520 settings->TcpKeepAliveInterval = cnv.c;
2521 break;
2522
2523 case FreeRDP_TcpKeepAliveRetries:
2524 settings->TcpKeepAliveRetries = cnv.c;
2525 break;
2526
2527 case FreeRDP_ThreadingFlags:
2528 settings->ThreadingFlags = cnv.c;
2529 break;
2530
2531 case FreeRDP_TlsSecLevel:
2532 settings->TlsSecLevel = cnv.c;
2533 break;
2534
2535 case FreeRDP_VCChunkSize:
2536 settings->VCChunkSize = cnv.c;
2537 break;
2538
2539 case FreeRDP_VCFlags:
2540 settings->VCFlags = cnv.c;
2541 break;
2542
2543#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
2544 // API Compatibility section, remove with FreeRDP 4.x
2545 case FreeRDP_MonitorLocalShiftX:
2546 settings->MonitorLocalShiftX = (int32_t)cnv.c;
2547 break;
2548
2549 // API Compatibility section, remove with FreeRDP 4.x
2550 case FreeRDP_MonitorLocalShiftY:
2551 settings->MonitorLocalShiftY = (int32_t)cnv.c;
2552 break;
2553
2554#endif
2555 default:
2556 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2559 return FALSE;
2560 }
2561 return TRUE;
2562}
2563
2564INT32 freerdp_settings_get_int32(WINPR_ATTR_UNUSED const rdpSettings* settings,
2565 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int32 id)
2566{
2567 WINPR_ASSERT(settings);
2568
2569 switch (id)
2570 {
2571 case FreeRDP_MonitorLocalShiftX:
2572 return settings->MonitorLocalShiftX;
2573
2574 case FreeRDP_MonitorLocalShiftY:
2575 return settings->MonitorLocalShiftY;
2576
2577 case FreeRDP_XPan:
2578 return settings->XPan;
2579
2580 case FreeRDP_YPan:
2581 return settings->YPan;
2582
2583 default:
2584 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2587 WINPR_ASSERT(FALSE);
2588 return 0;
2589 }
2590}
2591
2592BOOL freerdp_settings_set_int32(WINPR_ATTR_UNUSED rdpSettings* settings,
2593 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int32 id, INT32 val)
2594{
2595 union
2596 {
2597 void* v;
2598 const void* cv;
2599 INT32 c;
2600 const INT32 cc;
2601 } cnv;
2602 WINPR_ASSERT(settings);
2603
2604 cnv.c = val;
2605
2606 switch (id)
2607 {
2608 case FreeRDP_MonitorLocalShiftX:
2609 settings->MonitorLocalShiftX = cnv.c;
2610 break;
2611
2612 case FreeRDP_MonitorLocalShiftY:
2613 settings->MonitorLocalShiftY = cnv.c;
2614 break;
2615
2616 case FreeRDP_XPan:
2617 settings->XPan = cnv.c;
2618 break;
2619
2620 case FreeRDP_YPan:
2621 settings->YPan = cnv.c;
2622 break;
2623
2624 default:
2625 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2628 return FALSE;
2629 }
2630 return TRUE;
2631}
2632
2633UINT64 freerdp_settings_get_uint64(WINPR_ATTR_UNUSED const rdpSettings* settings,
2634 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt64 id)
2635{
2636 WINPR_ASSERT(settings);
2637
2638 switch (id)
2639 {
2640 case FreeRDP_MonitorOverrideFlags:
2641 return settings->MonitorOverrideFlags;
2642
2643 case FreeRDP_ParentWindowId:
2644 return settings->ParentWindowId;
2645
2646 default:
2647 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2650 WINPR_ASSERT(FALSE);
2651 return 0;
2652 }
2653}
2654
2655BOOL freerdp_settings_set_uint64(WINPR_ATTR_UNUSED rdpSettings* settings,
2656 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt64 id, UINT64 val)
2657{
2658 union
2659 {
2660 void* v;
2661 const void* cv;
2662 UINT64 c;
2663 const UINT64 cc;
2664 } cnv;
2665 WINPR_ASSERT(settings);
2666
2667 cnv.c = val;
2668
2669 switch (id)
2670 {
2671 case FreeRDP_MonitorOverrideFlags:
2672 settings->MonitorOverrideFlags = cnv.c;
2673 break;
2674
2675 case FreeRDP_ParentWindowId:
2676 settings->ParentWindowId = cnv.c;
2677 break;
2678
2679 default:
2680 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2683 return FALSE;
2684 }
2685 return TRUE;
2686}
2687
2688INT64 freerdp_settings_get_int64(WINPR_ATTR_UNUSED const rdpSettings* settings,
2689 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int64 id)
2690{
2691 WINPR_ASSERT(settings);
2692
2693 switch (id)
2694 {
2695 default:
2696 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2699 WINPR_ASSERT(FALSE);
2700 return 0;
2701 }
2702}
2703
2704BOOL freerdp_settings_set_int64(WINPR_ATTR_UNUSED rdpSettings* settings,
2705 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int64 id, INT64 val)
2706{
2707 union
2708 {
2709 void* v;
2710 const void* cv;
2711 INT64 c;
2712 const INT64 cc;
2713 } cnv;
2714 WINPR_ASSERT(settings);
2715
2716 cnv.c = val;
2717
2718 switch (id)
2719 {
2720 default:
2721 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
2724 return FALSE;
2725 }
2726 return TRUE;
2727}
2728
2729const char* freerdp_settings_get_string(WINPR_ATTR_UNUSED const rdpSettings* settings,
2730 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_String id)
2731{
2732 WINPR_ASSERT(settings);
2733
2734 switch (id)
2735 {
2736 case FreeRDP_AadServerHostname:
2737 return settings->AadServerHostname;
2738
2739 case FreeRDP_AcceptedCert:
2740 return settings->AcceptedCert;
2741
2742 case FreeRDP_ActionScript:
2743 return settings->ActionScript;
2744
2745 case FreeRDP_AllowedTlsCiphers:
2746 return settings->AllowedTlsCiphers;
2747
2748 case FreeRDP_AlternateShell:
2749 return settings->AlternateShell;
2750
2751 case FreeRDP_AssistanceFile:
2752 return settings->AssistanceFile;
2753
2754 case FreeRDP_AuthenticationPackageList:
2755 return settings->AuthenticationPackageList;
2756
2757 case FreeRDP_AuthenticationServiceClass:
2758 return settings->AuthenticationServiceClass;
2759
2760 case FreeRDP_BitmapCachePersistFile:
2761 return settings->BitmapCachePersistFile;
2762
2763 case FreeRDP_CardName:
2764 return settings->CardName;
2765
2766 case FreeRDP_CertificateAcceptedFingerprints:
2767 return settings->CertificateAcceptedFingerprints;
2768
2769 case FreeRDP_CertificateName:
2770 return settings->CertificateName;
2771
2772 case FreeRDP_ClientAddress:
2773 return settings->ClientAddress;
2774
2775 case FreeRDP_ClientDir:
2776 return settings->ClientDir;
2777
2778 case FreeRDP_ClientHostname:
2779 return settings->ClientHostname;
2780
2781 case FreeRDP_ClientProductId:
2782 return settings->ClientProductId;
2783
2784 case FreeRDP_ClipboardUseSelection:
2785 return settings->ClipboardUseSelection;
2786
2787 case FreeRDP_ComputerName:
2788 return settings->ComputerName;
2789
2790 case FreeRDP_ConfigPath:
2791 return settings->ConfigPath;
2792
2793 case FreeRDP_ConnectionFile:
2794 return settings->ConnectionFile;
2795
2796 case FreeRDP_ContainerName:
2797 return settings->ContainerName;
2798
2799 case FreeRDP_CspName:
2800 return settings->CspName;
2801
2802 case FreeRDP_CurrentPath:
2803 return settings->CurrentPath;
2804
2805 case FreeRDP_Domain:
2806 return settings->Domain;
2807
2808 case FreeRDP_DrivesToRedirect:
2809 return settings->DrivesToRedirect;
2810
2811 case FreeRDP_DumpRemoteFxFile:
2812 return settings->DumpRemoteFxFile;
2813
2814 case FreeRDP_DynamicDSTTimeZoneKeyName:
2815 return settings->DynamicDSTTimeZoneKeyName;
2816
2817 case FreeRDP_GatewayAcceptedCert:
2818 return settings->GatewayAcceptedCert;
2819
2820 case FreeRDP_GatewayAccessToken:
2821 return settings->GatewayAccessToken;
2822
2823 case FreeRDP_GatewayAvdAadtenantid:
2824 return settings->GatewayAvdAadtenantid;
2825
2826 case FreeRDP_GatewayAvdAccessAadFormat:
2827 return settings->GatewayAvdAccessAadFormat;
2828
2829 case FreeRDP_GatewayAvdAccessTokenFormat:
2830 return settings->GatewayAvdAccessTokenFormat;
2831
2832 case FreeRDP_GatewayAvdActivityhint:
2833 return settings->GatewayAvdActivityhint;
2834
2835 case FreeRDP_GatewayAvdArmpath:
2836 return settings->GatewayAvdArmpath;
2837
2838 case FreeRDP_GatewayAvdClientID:
2839 return settings->GatewayAvdClientID;
2840
2841 case FreeRDP_GatewayAvdDiagnosticserviceurl:
2842 return settings->GatewayAvdDiagnosticserviceurl;
2843
2844 case FreeRDP_GatewayAvdGeo:
2845 return settings->GatewayAvdGeo;
2846
2847 case FreeRDP_GatewayAvdHubdiscoverygeourl:
2848 return settings->GatewayAvdHubdiscoverygeourl;
2849
2850 case FreeRDP_GatewayAvdScope:
2851 return settings->GatewayAvdScope;
2852
2853 case FreeRDP_GatewayAvdWvdEndpointPool:
2854 return settings->GatewayAvdWvdEndpointPool;
2855
2856 case FreeRDP_GatewayAzureActiveDirectory:
2857 return settings->GatewayAzureActiveDirectory;
2858
2859 case FreeRDP_GatewayDomain:
2860 return settings->GatewayDomain;
2861
2862 case FreeRDP_GatewayHostname:
2863 return settings->GatewayHostname;
2864
2865 case FreeRDP_GatewayHttpExtAuthBearer:
2866 return settings->GatewayHttpExtAuthBearer;
2867
2868 case FreeRDP_GatewayHttpMsUserAgent:
2869 return settings->GatewayHttpMsUserAgent;
2870
2871 case FreeRDP_GatewayHttpReferer:
2872 return settings->GatewayHttpReferer;
2873
2874 case FreeRDP_GatewayHttpUserAgent:
2875 return settings->GatewayHttpUserAgent;
2876
2877 case FreeRDP_GatewayPassword:
2878 return settings->GatewayPassword;
2879
2880 case FreeRDP_GatewayUrl:
2881 return settings->GatewayUrl;
2882
2883 case FreeRDP_GatewayUsername:
2884 return settings->GatewayUsername;
2885
2886 case FreeRDP_HomePath:
2887 return settings->HomePath;
2888
2889 case FreeRDP_ImeFileName:
2890 return settings->ImeFileName;
2891
2892 case FreeRDP_KerberosArmor:
2893 return settings->KerberosArmor;
2894
2895 case FreeRDP_KerberosCache:
2896 return settings->KerberosCache;
2897
2898 case FreeRDP_KerberosKdcUrl:
2899 return settings->KerberosKdcUrl;
2900
2901 case FreeRDP_KerberosKeytab:
2902 return settings->KerberosKeytab;
2903
2904 case FreeRDP_KerberosLifeTime:
2905 return settings->KerberosLifeTime;
2906
2907 case FreeRDP_KerberosRealm:
2908 return settings->KerberosRealm;
2909
2910 case FreeRDP_KerberosRenewableLifeTime:
2911 return settings->KerberosRenewableLifeTime;
2912
2913 case FreeRDP_KerberosStartTime:
2914 return settings->KerberosStartTime;
2915
2916 case FreeRDP_KeyboardPipeName:
2917 return settings->KeyboardPipeName;
2918
2919 case FreeRDP_KeyboardRemappingList:
2920 return settings->KeyboardRemappingList;
2921
2922 case FreeRDP_NtlmSamFile:
2923 return settings->NtlmSamFile;
2924
2925 case FreeRDP_Password:
2926 return settings->Password;
2927
2928 case FreeRDP_PasswordHash:
2929 return settings->PasswordHash;
2930
2931 case FreeRDP_Pkcs11Module:
2932 return settings->Pkcs11Module;
2933
2934 case FreeRDP_PkinitAnchors:
2935 return settings->PkinitAnchors;
2936
2937 case FreeRDP_PlayRemoteFxFile:
2938 return settings->PlayRemoteFxFile;
2939
2940 case FreeRDP_PreconnectionBlob:
2941 return settings->PreconnectionBlob;
2942
2943 case FreeRDP_ProxyHostname:
2944 return settings->ProxyHostname;
2945
2946 case FreeRDP_ProxyPassword:
2947 return settings->ProxyPassword;
2948
2949 case FreeRDP_ProxyUsername:
2950 return settings->ProxyUsername;
2951
2952 case FreeRDP_RDP2TCPArgs:
2953 return settings->RDP2TCPArgs;
2954
2955 case FreeRDP_ReaderName:
2956 return settings->ReaderName;
2957
2958 case FreeRDP_RedirectionAcceptedCert:
2959 return settings->RedirectionAcceptedCert;
2960
2961 case FreeRDP_RedirectionDomain:
2962 return settings->RedirectionDomain;
2963
2964 case FreeRDP_RedirectionTargetFQDN:
2965 return settings->RedirectionTargetFQDN;
2966
2967 case FreeRDP_RedirectionTargetNetBiosName:
2968 return settings->RedirectionTargetNetBiosName;
2969
2970 case FreeRDP_RedirectionUsername:
2971 return settings->RedirectionUsername;
2972
2973 case FreeRDP_RemoteApplicationCmdLine:
2974 return settings->RemoteApplicationCmdLine;
2975
2976 case FreeRDP_RemoteApplicationFile:
2977 return settings->RemoteApplicationFile;
2978
2979 case FreeRDP_RemoteApplicationGuid:
2980 return settings->RemoteApplicationGuid;
2981
2982 case FreeRDP_RemoteApplicationIcon:
2983 return settings->RemoteApplicationIcon;
2984
2985 case FreeRDP_RemoteApplicationName:
2986 return settings->RemoteApplicationName;
2987
2988 case FreeRDP_RemoteApplicationProgram:
2989 return settings->RemoteApplicationProgram;
2990
2991 case FreeRDP_RemoteApplicationWorkingDir:
2992 return settings->RemoteApplicationWorkingDir;
2993
2994 case FreeRDP_RemoteAssistancePassStub:
2995 return settings->RemoteAssistancePassStub;
2996
2997 case FreeRDP_RemoteAssistancePassword:
2998 return settings->RemoteAssistancePassword;
2999
3000 case FreeRDP_RemoteAssistanceRCTicket:
3001 return settings->RemoteAssistanceRCTicket;
3002
3003 case FreeRDP_RemoteAssistanceSessionId:
3004 return settings->RemoteAssistanceSessionId;
3005
3006 case FreeRDP_ServerHostname:
3007 return settings->ServerHostname;
3008
3009 case FreeRDP_ServerLicenseCompanyName:
3010 return settings->ServerLicenseCompanyName;
3011
3012 case FreeRDP_ServerLicenseProductName:
3013 return settings->ServerLicenseProductName;
3014
3015 case FreeRDP_ShellWorkingDirectory:
3016 return settings->ShellWorkingDirectory;
3017
3018 case FreeRDP_SmartcardCertificate:
3019 return settings->SmartcardCertificate;
3020
3021 case FreeRDP_SmartcardPrivateKey:
3022 return settings->SmartcardPrivateKey;
3023
3024 case FreeRDP_SspiModule:
3025 return settings->SspiModule;
3026
3027 case FreeRDP_TargetNetAddress:
3028 return settings->TargetNetAddress;
3029
3030 case FreeRDP_TerminalDescriptor:
3031 return settings->TerminalDescriptor;
3032
3033 case FreeRDP_TlsSecretsFile:
3034 return settings->TlsSecretsFile;
3035
3036 case FreeRDP_TransportDumpFile:
3037 return settings->TransportDumpFile;
3038
3039 case FreeRDP_UserSpecifiedServerName:
3040 return settings->UserSpecifiedServerName;
3041
3042 case FreeRDP_Username:
3043 return settings->Username;
3044
3045 case FreeRDP_WinSCardModule:
3046 return settings->WinSCardModule;
3047
3048 case FreeRDP_WindowTitle:
3049 return settings->WindowTitle;
3050
3051 case FreeRDP_WmClass:
3052 return settings->WmClass;
3053
3054 default:
3055 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
3058 WINPR_ASSERT(FALSE);
3059 return NULL;
3060 }
3061}
3062
3063char* freerdp_settings_get_string_writable(rdpSettings* settings, FreeRDP_Settings_Keys_String id)
3064{
3065 WINPR_ASSERT(settings);
3066
3067 switch (id)
3068 {
3069 case FreeRDP_AadServerHostname:
3070 return settings->AadServerHostname;
3071
3072 case FreeRDP_AcceptedCert:
3073 return settings->AcceptedCert;
3074
3075 case FreeRDP_ActionScript:
3076 return settings->ActionScript;
3077
3078 case FreeRDP_AllowedTlsCiphers:
3079 return settings->AllowedTlsCiphers;
3080
3081 case FreeRDP_AlternateShell:
3082 return settings->AlternateShell;
3083
3084 case FreeRDP_AssistanceFile:
3085 return settings->AssistanceFile;
3086
3087 case FreeRDP_AuthenticationPackageList:
3088 return settings->AuthenticationPackageList;
3089
3090 case FreeRDP_AuthenticationServiceClass:
3091 return settings->AuthenticationServiceClass;
3092
3093 case FreeRDP_BitmapCachePersistFile:
3094 return settings->BitmapCachePersistFile;
3095
3096 case FreeRDP_CardName:
3097 return settings->CardName;
3098
3099 case FreeRDP_CertificateAcceptedFingerprints:
3100 return settings->CertificateAcceptedFingerprints;
3101
3102 case FreeRDP_CertificateName:
3103 return settings->CertificateName;
3104
3105 case FreeRDP_ClientAddress:
3106 return settings->ClientAddress;
3107
3108 case FreeRDP_ClientDir:
3109 return settings->ClientDir;
3110
3111 case FreeRDP_ClientHostname:
3112 return settings->ClientHostname;
3113
3114 case FreeRDP_ClientProductId:
3115 return settings->ClientProductId;
3116
3117 case FreeRDP_ClipboardUseSelection:
3118 return settings->ClipboardUseSelection;
3119
3120 case FreeRDP_ComputerName:
3121 return settings->ComputerName;
3122
3123 case FreeRDP_ConfigPath:
3124 return settings->ConfigPath;
3125
3126 case FreeRDP_ConnectionFile:
3127 return settings->ConnectionFile;
3128
3129 case FreeRDP_ContainerName:
3130 return settings->ContainerName;
3131
3132 case FreeRDP_CspName:
3133 return settings->CspName;
3134
3135 case FreeRDP_CurrentPath:
3136 return settings->CurrentPath;
3137
3138 case FreeRDP_Domain:
3139 return settings->Domain;
3140
3141 case FreeRDP_DrivesToRedirect:
3142 return settings->DrivesToRedirect;
3143
3144 case FreeRDP_DumpRemoteFxFile:
3145 return settings->DumpRemoteFxFile;
3146
3147 case FreeRDP_DynamicDSTTimeZoneKeyName:
3148 return settings->DynamicDSTTimeZoneKeyName;
3149
3150 case FreeRDP_GatewayAcceptedCert:
3151 return settings->GatewayAcceptedCert;
3152
3153 case FreeRDP_GatewayAccessToken:
3154 return settings->GatewayAccessToken;
3155
3156 case FreeRDP_GatewayAvdAadtenantid:
3157 return settings->GatewayAvdAadtenantid;
3158
3159 case FreeRDP_GatewayAvdAccessAadFormat:
3160 return settings->GatewayAvdAccessAadFormat;
3161
3162 case FreeRDP_GatewayAvdAccessTokenFormat:
3163 return settings->GatewayAvdAccessTokenFormat;
3164
3165 case FreeRDP_GatewayAvdActivityhint:
3166 return settings->GatewayAvdActivityhint;
3167
3168 case FreeRDP_GatewayAvdArmpath:
3169 return settings->GatewayAvdArmpath;
3170
3171 case FreeRDP_GatewayAvdClientID:
3172 return settings->GatewayAvdClientID;
3173
3174 case FreeRDP_GatewayAvdDiagnosticserviceurl:
3175 return settings->GatewayAvdDiagnosticserviceurl;
3176
3177 case FreeRDP_GatewayAvdGeo:
3178 return settings->GatewayAvdGeo;
3179
3180 case FreeRDP_GatewayAvdHubdiscoverygeourl:
3181 return settings->GatewayAvdHubdiscoverygeourl;
3182
3183 case FreeRDP_GatewayAvdScope:
3184 return settings->GatewayAvdScope;
3185
3186 case FreeRDP_GatewayAvdWvdEndpointPool:
3187 return settings->GatewayAvdWvdEndpointPool;
3188
3189 case FreeRDP_GatewayAzureActiveDirectory:
3190 return settings->GatewayAzureActiveDirectory;
3191
3192 case FreeRDP_GatewayDomain:
3193 return settings->GatewayDomain;
3194
3195 case FreeRDP_GatewayHostname:
3196 return settings->GatewayHostname;
3197
3198 case FreeRDP_GatewayHttpExtAuthBearer:
3199 return settings->GatewayHttpExtAuthBearer;
3200
3201 case FreeRDP_GatewayHttpMsUserAgent:
3202 return settings->GatewayHttpMsUserAgent;
3203
3204 case FreeRDP_GatewayHttpReferer:
3205 return settings->GatewayHttpReferer;
3206
3207 case FreeRDP_GatewayHttpUserAgent:
3208 return settings->GatewayHttpUserAgent;
3209
3210 case FreeRDP_GatewayPassword:
3211 return settings->GatewayPassword;
3212
3213 case FreeRDP_GatewayUrl:
3214 return settings->GatewayUrl;
3215
3216 case FreeRDP_GatewayUsername:
3217 return settings->GatewayUsername;
3218
3219 case FreeRDP_HomePath:
3220 return settings->HomePath;
3221
3222 case FreeRDP_ImeFileName:
3223 return settings->ImeFileName;
3224
3225 case FreeRDP_KerberosArmor:
3226 return settings->KerberosArmor;
3227
3228 case FreeRDP_KerberosCache:
3229 return settings->KerberosCache;
3230
3231 case FreeRDP_KerberosKdcUrl:
3232 return settings->KerberosKdcUrl;
3233
3234 case FreeRDP_KerberosKeytab:
3235 return settings->KerberosKeytab;
3236
3237 case FreeRDP_KerberosLifeTime:
3238 return settings->KerberosLifeTime;
3239
3240 case FreeRDP_KerberosRealm:
3241 return settings->KerberosRealm;
3242
3243 case FreeRDP_KerberosRenewableLifeTime:
3244 return settings->KerberosRenewableLifeTime;
3245
3246 case FreeRDP_KerberosStartTime:
3247 return settings->KerberosStartTime;
3248
3249 case FreeRDP_KeyboardPipeName:
3250 return settings->KeyboardPipeName;
3251
3252 case FreeRDP_KeyboardRemappingList:
3253 return settings->KeyboardRemappingList;
3254
3255 case FreeRDP_NtlmSamFile:
3256 return settings->NtlmSamFile;
3257
3258 case FreeRDP_Password:
3259 return settings->Password;
3260
3261 case FreeRDP_PasswordHash:
3262 return settings->PasswordHash;
3263
3264 case FreeRDP_Pkcs11Module:
3265 return settings->Pkcs11Module;
3266
3267 case FreeRDP_PkinitAnchors:
3268 return settings->PkinitAnchors;
3269
3270 case FreeRDP_PlayRemoteFxFile:
3271 return settings->PlayRemoteFxFile;
3272
3273 case FreeRDP_PreconnectionBlob:
3274 return settings->PreconnectionBlob;
3275
3276 case FreeRDP_ProxyHostname:
3277 return settings->ProxyHostname;
3278
3279 case FreeRDP_ProxyPassword:
3280 return settings->ProxyPassword;
3281
3282 case FreeRDP_ProxyUsername:
3283 return settings->ProxyUsername;
3284
3285 case FreeRDP_RDP2TCPArgs:
3286 return settings->RDP2TCPArgs;
3287
3288 case FreeRDP_ReaderName:
3289 return settings->ReaderName;
3290
3291 case FreeRDP_RedirectionAcceptedCert:
3292 return settings->RedirectionAcceptedCert;
3293
3294 case FreeRDP_RedirectionDomain:
3295 return settings->RedirectionDomain;
3296
3297 case FreeRDP_RedirectionTargetFQDN:
3298 return settings->RedirectionTargetFQDN;
3299
3300 case FreeRDP_RedirectionTargetNetBiosName:
3301 return settings->RedirectionTargetNetBiosName;
3302
3303 case FreeRDP_RedirectionUsername:
3304 return settings->RedirectionUsername;
3305
3306 case FreeRDP_RemoteApplicationCmdLine:
3307 return settings->RemoteApplicationCmdLine;
3308
3309 case FreeRDP_RemoteApplicationFile:
3310 return settings->RemoteApplicationFile;
3311
3312 case FreeRDP_RemoteApplicationGuid:
3313 return settings->RemoteApplicationGuid;
3314
3315 case FreeRDP_RemoteApplicationIcon:
3316 return settings->RemoteApplicationIcon;
3317
3318 case FreeRDP_RemoteApplicationName:
3319 return settings->RemoteApplicationName;
3320
3321 case FreeRDP_RemoteApplicationProgram:
3322 return settings->RemoteApplicationProgram;
3323
3324 case FreeRDP_RemoteApplicationWorkingDir:
3325 return settings->RemoteApplicationWorkingDir;
3326
3327 case FreeRDP_RemoteAssistancePassStub:
3328 return settings->RemoteAssistancePassStub;
3329
3330 case FreeRDP_RemoteAssistancePassword:
3331 return settings->RemoteAssistancePassword;
3332
3333 case FreeRDP_RemoteAssistanceRCTicket:
3334 return settings->RemoteAssistanceRCTicket;
3335
3336 case FreeRDP_RemoteAssistanceSessionId:
3337 return settings->RemoteAssistanceSessionId;
3338
3339 case FreeRDP_ServerHostname:
3340 return settings->ServerHostname;
3341
3342 case FreeRDP_ServerLicenseCompanyName:
3343 return settings->ServerLicenseCompanyName;
3344
3345 case FreeRDP_ServerLicenseProductName:
3346 return settings->ServerLicenseProductName;
3347
3348 case FreeRDP_ShellWorkingDirectory:
3349 return settings->ShellWorkingDirectory;
3350
3351 case FreeRDP_SmartcardCertificate:
3352 return settings->SmartcardCertificate;
3353
3354 case FreeRDP_SmartcardPrivateKey:
3355 return settings->SmartcardPrivateKey;
3356
3357 case FreeRDP_SspiModule:
3358 return settings->SspiModule;
3359
3360 case FreeRDP_TargetNetAddress:
3361 return settings->TargetNetAddress;
3362
3363 case FreeRDP_TerminalDescriptor:
3364 return settings->TerminalDescriptor;
3365
3366 case FreeRDP_TlsSecretsFile:
3367 return settings->TlsSecretsFile;
3368
3369 case FreeRDP_TransportDumpFile:
3370 return settings->TransportDumpFile;
3371
3372 case FreeRDP_UserSpecifiedServerName:
3373 return settings->UserSpecifiedServerName;
3374
3375 case FreeRDP_Username:
3376 return settings->Username;
3377
3378 case FreeRDP_WinSCardModule:
3379 return settings->WinSCardModule;
3380
3381 case FreeRDP_WindowTitle:
3382 return settings->WindowTitle;
3383
3384 case FreeRDP_WmClass:
3385 return settings->WmClass;
3386
3387 default:
3388 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
3391 WINPR_ASSERT(FALSE);
3392 return NULL;
3393 }
3394}
3395
3396BOOL freerdp_settings_set_string_(WINPR_ATTR_UNUSED rdpSettings* settings,
3397 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_String id,
3398 const char* val, size_t len)
3399{
3400 union
3401 {
3402 void* v;
3403 const void* cv;
3404 char* c;
3405 const char* cc;
3406 } cnv;
3407 WINPR_ASSERT(settings);
3408
3409 cnv.cc = val;
3410
3411 switch (id)
3412 {
3413 case FreeRDP_AadServerHostname:
3414 return update_string_(&settings->AadServerHostname, cnv.c, len);
3415
3416 case FreeRDP_AcceptedCert:
3417 return update_string_(&settings->AcceptedCert, cnv.c, len);
3418
3419 case FreeRDP_ActionScript:
3420 return update_string_(&settings->ActionScript, cnv.c, len);
3421
3422 case FreeRDP_AllowedTlsCiphers:
3423 return update_string_(&settings->AllowedTlsCiphers, cnv.c, len);
3424
3425 case FreeRDP_AlternateShell:
3426 return update_string_(&settings->AlternateShell, cnv.c, len);
3427
3428 case FreeRDP_AssistanceFile:
3429 return update_string_(&settings->AssistanceFile, cnv.c, len);
3430
3431 case FreeRDP_AuthenticationPackageList:
3432 return update_string_(&settings->AuthenticationPackageList, cnv.c, len);
3433
3434 case FreeRDP_AuthenticationServiceClass:
3435 return update_string_(&settings->AuthenticationServiceClass, cnv.c, len);
3436
3437 case FreeRDP_BitmapCachePersistFile:
3438 return update_string_(&settings->BitmapCachePersistFile, cnv.c, len);
3439
3440 case FreeRDP_CardName:
3441 return update_string_(&settings->CardName, cnv.c, len);
3442
3443 case FreeRDP_CertificateAcceptedFingerprints:
3444 return update_string_(&settings->CertificateAcceptedFingerprints, cnv.c, len);
3445
3446 case FreeRDP_CertificateName:
3447 return update_string_(&settings->CertificateName, cnv.c, len);
3448
3449 case FreeRDP_ClientAddress:
3450 return update_string_(&settings->ClientAddress, cnv.c, len);
3451
3452 case FreeRDP_ClientDir:
3453 return update_string_(&settings->ClientDir, cnv.c, len);
3454
3455 case FreeRDP_ClientHostname:
3456 return update_string_(&settings->ClientHostname, cnv.c, len);
3457
3458 case FreeRDP_ClientProductId:
3459 return update_string_(&settings->ClientProductId, cnv.c, len);
3460
3461 case FreeRDP_ClipboardUseSelection:
3462 return update_string_(&settings->ClipboardUseSelection, cnv.c, len);
3463
3464 case FreeRDP_ComputerName:
3465 return update_string_(&settings->ComputerName, cnv.c, len);
3466
3467 case FreeRDP_ConfigPath:
3468 return update_string_(&settings->ConfigPath, cnv.c, len);
3469
3470 case FreeRDP_ConnectionFile:
3471 return update_string_(&settings->ConnectionFile, cnv.c, len);
3472
3473 case FreeRDP_ContainerName:
3474 return update_string_(&settings->ContainerName, cnv.c, len);
3475
3476 case FreeRDP_CspName:
3477 return update_string_(&settings->CspName, cnv.c, len);
3478
3479 case FreeRDP_CurrentPath:
3480 return update_string_(&settings->CurrentPath, cnv.c, len);
3481
3482 case FreeRDP_Domain:
3483 return update_string_(&settings->Domain, cnv.c, len);
3484
3485 case FreeRDP_DrivesToRedirect:
3486 return update_string_(&settings->DrivesToRedirect, cnv.c, len);
3487
3488 case FreeRDP_DumpRemoteFxFile:
3489 return update_string_(&settings->DumpRemoteFxFile, cnv.c, len);
3490
3491 case FreeRDP_DynamicDSTTimeZoneKeyName:
3492 return update_string_(&settings->DynamicDSTTimeZoneKeyName, cnv.c, len);
3493
3494 case FreeRDP_GatewayAcceptedCert:
3495 return update_string_(&settings->GatewayAcceptedCert, cnv.c, len);
3496
3497 case FreeRDP_GatewayAccessToken:
3498 return update_string_(&settings->GatewayAccessToken, cnv.c, len);
3499
3500 case FreeRDP_GatewayAvdAadtenantid:
3501 return update_string_(&settings->GatewayAvdAadtenantid, cnv.c, len);
3502
3503 case FreeRDP_GatewayAvdAccessAadFormat:
3504 return update_string_(&settings->GatewayAvdAccessAadFormat, cnv.c, len);
3505
3506 case FreeRDP_GatewayAvdAccessTokenFormat:
3507 return update_string_(&settings->GatewayAvdAccessTokenFormat, cnv.c, len);
3508
3509 case FreeRDP_GatewayAvdActivityhint:
3510 return update_string_(&settings->GatewayAvdActivityhint, cnv.c, len);
3511
3512 case FreeRDP_GatewayAvdArmpath:
3513 return update_string_(&settings->GatewayAvdArmpath, cnv.c, len);
3514
3515 case FreeRDP_GatewayAvdClientID:
3516 return update_string_(&settings->GatewayAvdClientID, cnv.c, len);
3517
3518 case FreeRDP_GatewayAvdDiagnosticserviceurl:
3519 return update_string_(&settings->GatewayAvdDiagnosticserviceurl, cnv.c, len);
3520
3521 case FreeRDP_GatewayAvdGeo:
3522 return update_string_(&settings->GatewayAvdGeo, cnv.c, len);
3523
3524 case FreeRDP_GatewayAvdHubdiscoverygeourl:
3525 return update_string_(&settings->GatewayAvdHubdiscoverygeourl, cnv.c, len);
3526
3527 case FreeRDP_GatewayAvdScope:
3528 return update_string_(&settings->GatewayAvdScope, cnv.c, len);
3529
3530 case FreeRDP_GatewayAvdWvdEndpointPool:
3531 return update_string_(&settings->GatewayAvdWvdEndpointPool, cnv.c, len);
3532
3533 case FreeRDP_GatewayAzureActiveDirectory:
3534 return update_string_(&settings->GatewayAzureActiveDirectory, cnv.c, len);
3535
3536 case FreeRDP_GatewayDomain:
3537 return update_string_(&settings->GatewayDomain, cnv.c, len);
3538
3539 case FreeRDP_GatewayHostname:
3540 return update_string_(&settings->GatewayHostname, cnv.c, len);
3541
3542 case FreeRDP_GatewayHttpExtAuthBearer:
3543 return update_string_(&settings->GatewayHttpExtAuthBearer, cnv.c, len);
3544
3545 case FreeRDP_GatewayHttpMsUserAgent:
3546 return update_string_(&settings->GatewayHttpMsUserAgent, cnv.c, len);
3547
3548 case FreeRDP_GatewayHttpReferer:
3549 return update_string_(&settings->GatewayHttpReferer, cnv.c, len);
3550
3551 case FreeRDP_GatewayHttpUserAgent:
3552 return update_string_(&settings->GatewayHttpUserAgent, cnv.c, len);
3553
3554 case FreeRDP_GatewayPassword:
3555 return update_string_(&settings->GatewayPassword, cnv.c, len);
3556
3557 case FreeRDP_GatewayUrl:
3558 return update_string_(&settings->GatewayUrl, cnv.c, len);
3559
3560 case FreeRDP_GatewayUsername:
3561 return update_string_(&settings->GatewayUsername, cnv.c, len);
3562
3563 case FreeRDP_HomePath:
3564 return update_string_(&settings->HomePath, cnv.c, len);
3565
3566 case FreeRDP_ImeFileName:
3567 return update_string_(&settings->ImeFileName, cnv.c, len);
3568
3569 case FreeRDP_KerberosArmor:
3570 return update_string_(&settings->KerberosArmor, cnv.c, len);
3571
3572 case FreeRDP_KerberosCache:
3573 return update_string_(&settings->KerberosCache, cnv.c, len);
3574
3575 case FreeRDP_KerberosKdcUrl:
3576 return update_string_(&settings->KerberosKdcUrl, cnv.c, len);
3577
3578 case FreeRDP_KerberosKeytab:
3579 return update_string_(&settings->KerberosKeytab, cnv.c, len);
3580
3581 case FreeRDP_KerberosLifeTime:
3582 return update_string_(&settings->KerberosLifeTime, cnv.c, len);
3583
3584 case FreeRDP_KerberosRealm:
3585 return update_string_(&settings->KerberosRealm, cnv.c, len);
3586
3587 case FreeRDP_KerberosRenewableLifeTime:
3588 return update_string_(&settings->KerberosRenewableLifeTime, cnv.c, len);
3589
3590 case FreeRDP_KerberosStartTime:
3591 return update_string_(&settings->KerberosStartTime, cnv.c, len);
3592
3593 case FreeRDP_KeyboardPipeName:
3594 return update_string_(&settings->KeyboardPipeName, cnv.c, len);
3595
3596 case FreeRDP_KeyboardRemappingList:
3597 return update_string_(&settings->KeyboardRemappingList, cnv.c, len);
3598
3599 case FreeRDP_NtlmSamFile:
3600 return update_string_(&settings->NtlmSamFile, cnv.c, len);
3601
3602 case FreeRDP_Password:
3603 return update_string_(&settings->Password, cnv.c, len);
3604
3605 case FreeRDP_PasswordHash:
3606 return update_string_(&settings->PasswordHash, cnv.c, len);
3607
3608 case FreeRDP_Pkcs11Module:
3609 return update_string_(&settings->Pkcs11Module, cnv.c, len);
3610
3611 case FreeRDP_PkinitAnchors:
3612 return update_string_(&settings->PkinitAnchors, cnv.c, len);
3613
3614 case FreeRDP_PlayRemoteFxFile:
3615 return update_string_(&settings->PlayRemoteFxFile, cnv.c, len);
3616
3617 case FreeRDP_PreconnectionBlob:
3618 return update_string_(&settings->PreconnectionBlob, cnv.c, len);
3619
3620 case FreeRDP_ProxyHostname:
3621 return update_string_(&settings->ProxyHostname, cnv.c, len);
3622
3623 case FreeRDP_ProxyPassword:
3624 return update_string_(&settings->ProxyPassword, cnv.c, len);
3625
3626 case FreeRDP_ProxyUsername:
3627 return update_string_(&settings->ProxyUsername, cnv.c, len);
3628
3629 case FreeRDP_RDP2TCPArgs:
3630 return update_string_(&settings->RDP2TCPArgs, cnv.c, len);
3631
3632 case FreeRDP_ReaderName:
3633 return update_string_(&settings->ReaderName, cnv.c, len);
3634
3635 case FreeRDP_RedirectionAcceptedCert:
3636 return update_string_(&settings->RedirectionAcceptedCert, cnv.c, len);
3637
3638 case FreeRDP_RedirectionDomain:
3639 return update_string_(&settings->RedirectionDomain, cnv.c, len);
3640
3641 case FreeRDP_RedirectionTargetFQDN:
3642 return update_string_(&settings->RedirectionTargetFQDN, cnv.c, len);
3643
3644 case FreeRDP_RedirectionTargetNetBiosName:
3645 return update_string_(&settings->RedirectionTargetNetBiosName, cnv.c, len);
3646
3647 case FreeRDP_RedirectionUsername:
3648 return update_string_(&settings->RedirectionUsername, cnv.c, len);
3649
3650 case FreeRDP_RemoteApplicationCmdLine:
3651 return update_string_(&settings->RemoteApplicationCmdLine, cnv.c, len);
3652
3653 case FreeRDP_RemoteApplicationFile:
3654 return update_string_(&settings->RemoteApplicationFile, cnv.c, len);
3655
3656 case FreeRDP_RemoteApplicationGuid:
3657 return update_string_(&settings->RemoteApplicationGuid, cnv.c, len);
3658
3659 case FreeRDP_RemoteApplicationIcon:
3660 return update_string_(&settings->RemoteApplicationIcon, cnv.c, len);
3661
3662 case FreeRDP_RemoteApplicationName:
3663 return update_string_(&settings->RemoteApplicationName, cnv.c, len);
3664
3665 case FreeRDP_RemoteApplicationProgram:
3666 return update_string_(&settings->RemoteApplicationProgram, cnv.c, len);
3667
3668 case FreeRDP_RemoteApplicationWorkingDir:
3669 return update_string_(&settings->RemoteApplicationWorkingDir, cnv.c, len);
3670
3671 case FreeRDP_RemoteAssistancePassStub:
3672 return update_string_(&settings->RemoteAssistancePassStub, cnv.c, len);
3673
3674 case FreeRDP_RemoteAssistancePassword:
3675 return update_string_(&settings->RemoteAssistancePassword, cnv.c, len);
3676
3677 case FreeRDP_RemoteAssistanceRCTicket:
3678 return update_string_(&settings->RemoteAssistanceRCTicket, cnv.c, len);
3679
3680 case FreeRDP_RemoteAssistanceSessionId:
3681 return update_string_(&settings->RemoteAssistanceSessionId, cnv.c, len);
3682
3683 case FreeRDP_ServerHostname:
3684 return update_string_(&settings->ServerHostname, cnv.c, len);
3685
3686 case FreeRDP_ServerLicenseCompanyName:
3687 return update_string_(&settings->ServerLicenseCompanyName, cnv.c, len);
3688
3689 case FreeRDP_ServerLicenseProductName:
3690 return update_string_(&settings->ServerLicenseProductName, cnv.c, len);
3691
3692 case FreeRDP_ShellWorkingDirectory:
3693 return update_string_(&settings->ShellWorkingDirectory, cnv.c, len);
3694
3695 case FreeRDP_SmartcardCertificate:
3696 return update_string_(&settings->SmartcardCertificate, cnv.c, len);
3697
3698 case FreeRDP_SmartcardPrivateKey:
3699 return update_string_(&settings->SmartcardPrivateKey, cnv.c, len);
3700
3701 case FreeRDP_SspiModule:
3702 return update_string_(&settings->SspiModule, cnv.c, len);
3703
3704 case FreeRDP_TargetNetAddress:
3705 return update_string_(&settings->TargetNetAddress, cnv.c, len);
3706
3707 case FreeRDP_TerminalDescriptor:
3708 return update_string_(&settings->TerminalDescriptor, cnv.c, len);
3709
3710 case FreeRDP_TlsSecretsFile:
3711 return update_string_(&settings->TlsSecretsFile, cnv.c, len);
3712
3713 case FreeRDP_TransportDumpFile:
3714 return update_string_(&settings->TransportDumpFile, cnv.c, len);
3715
3716 case FreeRDP_UserSpecifiedServerName:
3717 return update_string_(&settings->UserSpecifiedServerName, cnv.c, len);
3718
3719 case FreeRDP_Username:
3720 return update_string_(&settings->Username, cnv.c, len);
3721
3722 case FreeRDP_WinSCardModule:
3723 return update_string_(&settings->WinSCardModule, cnv.c, len);
3724
3725 case FreeRDP_WindowTitle:
3726 return update_string_(&settings->WindowTitle, cnv.c, len);
3727
3728 case FreeRDP_WmClass:
3729 return update_string_(&settings->WmClass, cnv.c, len);
3730
3731 default:
3732 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
3735 return FALSE;
3736 }
3737 return TRUE;
3738}
3739
3740BOOL freerdp_settings_set_string_len(rdpSettings* settings, FreeRDP_Settings_Keys_String id,
3741 const char* val, size_t len)
3742{
3743 return freerdp_settings_set_string_copy_(settings, id, val, len, TRUE);
3744}
3745
3746BOOL freerdp_settings_set_string(rdpSettings* settings, FreeRDP_Settings_Keys_String id,
3747 const char* val)
3748{
3749 size_t len = 0;
3750 if (val)
3751 len = strlen(val);
3752 return freerdp_settings_set_string_copy_(settings, id, val, len, TRUE);
3753}
3754
3755BOOL freerdp_settings_set_string_copy_(WINPR_ATTR_UNUSED rdpSettings* settings,
3756 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_String id,
3757 const char* val, size_t len, BOOL cleanup)
3758{
3759 union
3760 {
3761 void* v;
3762 const void* cv;
3763 char* c;
3764 const char* cc;
3765 } cnv;
3766 WINPR_ASSERT(settings);
3767
3768 cnv.cc = val;
3769
3770 switch (id)
3771 {
3772 case FreeRDP_AadServerHostname:
3773 return update_string_copy_(&settings->AadServerHostname, cnv.cc, len, cleanup);
3774
3775 case FreeRDP_AcceptedCert:
3776 return update_string_copy_(&settings->AcceptedCert, cnv.cc, len, cleanup);
3777
3778 case FreeRDP_ActionScript:
3779 return update_string_copy_(&settings->ActionScript, cnv.cc, len, cleanup);
3780
3781 case FreeRDP_AllowedTlsCiphers:
3782 return update_string_copy_(&settings->AllowedTlsCiphers, cnv.cc, len, cleanup);
3783
3784 case FreeRDP_AlternateShell:
3785 return update_string_copy_(&settings->AlternateShell, cnv.cc, len, cleanup);
3786
3787 case FreeRDP_AssistanceFile:
3788 return update_string_copy_(&settings->AssistanceFile, cnv.cc, len, cleanup);
3789
3790 case FreeRDP_AuthenticationPackageList:
3791 return update_string_copy_(&settings->AuthenticationPackageList, cnv.cc, len, cleanup);
3792
3793 case FreeRDP_AuthenticationServiceClass:
3794 return update_string_copy_(&settings->AuthenticationServiceClass, cnv.cc, len, cleanup);
3795
3796 case FreeRDP_BitmapCachePersistFile:
3797 return update_string_copy_(&settings->BitmapCachePersistFile, cnv.cc, len, cleanup);
3798
3799 case FreeRDP_CardName:
3800 return update_string_copy_(&settings->CardName, cnv.cc, len, cleanup);
3801
3802 case FreeRDP_CertificateAcceptedFingerprints:
3803 return update_string_copy_(&settings->CertificateAcceptedFingerprints, cnv.cc, len,
3804 cleanup);
3805
3806 case FreeRDP_CertificateName:
3807 return update_string_copy_(&settings->CertificateName, cnv.cc, len, cleanup);
3808
3809 case FreeRDP_ClientAddress:
3810 return update_string_copy_(&settings->ClientAddress, cnv.cc, len, cleanup);
3811
3812 case FreeRDP_ClientDir:
3813 return update_string_copy_(&settings->ClientDir, cnv.cc, len, cleanup);
3814
3815 case FreeRDP_ClientHostname:
3816 return update_string_copy_(&settings->ClientHostname, cnv.cc, len, cleanup);
3817
3818 case FreeRDP_ClientProductId:
3819 return update_string_copy_(&settings->ClientProductId, cnv.cc, len, cleanup);
3820
3821 case FreeRDP_ClipboardUseSelection:
3822 return update_string_copy_(&settings->ClipboardUseSelection, cnv.cc, len, cleanup);
3823
3824 case FreeRDP_ComputerName:
3825 return update_string_copy_(&settings->ComputerName, cnv.cc, len, cleanup);
3826
3827 case FreeRDP_ConfigPath:
3828 return update_string_copy_(&settings->ConfigPath, cnv.cc, len, cleanup);
3829
3830 case FreeRDP_ConnectionFile:
3831 return update_string_copy_(&settings->ConnectionFile, cnv.cc, len, cleanup);
3832
3833 case FreeRDP_ContainerName:
3834 return update_string_copy_(&settings->ContainerName, cnv.cc, len, cleanup);
3835
3836 case FreeRDP_CspName:
3837 return update_string_copy_(&settings->CspName, cnv.cc, len, cleanup);
3838
3839 case FreeRDP_CurrentPath:
3840 return update_string_copy_(&settings->CurrentPath, cnv.cc, len, cleanup);
3841
3842 case FreeRDP_Domain:
3843 return update_string_copy_(&settings->Domain, cnv.cc, len, cleanup);
3844
3845 case FreeRDP_DrivesToRedirect:
3846 return update_string_copy_(&settings->DrivesToRedirect, cnv.cc, len, cleanup);
3847
3848 case FreeRDP_DumpRemoteFxFile:
3849 return update_string_copy_(&settings->DumpRemoteFxFile, cnv.cc, len, cleanup);
3850
3851 case FreeRDP_DynamicDSTTimeZoneKeyName:
3852 return update_string_copy_(&settings->DynamicDSTTimeZoneKeyName, cnv.cc, len, cleanup);
3853
3854 case FreeRDP_GatewayAcceptedCert:
3855 return update_string_copy_(&settings->GatewayAcceptedCert, cnv.cc, len, cleanup);
3856
3857 case FreeRDP_GatewayAccessToken:
3858 return update_string_copy_(&settings->GatewayAccessToken, cnv.cc, len, cleanup);
3859
3860 case FreeRDP_GatewayAvdAadtenantid:
3861 return update_string_copy_(&settings->GatewayAvdAadtenantid, cnv.cc, len, cleanup);
3862
3863 case FreeRDP_GatewayAvdAccessAadFormat:
3864 return update_string_copy_(&settings->GatewayAvdAccessAadFormat, cnv.cc, len, cleanup);
3865
3866 case FreeRDP_GatewayAvdAccessTokenFormat:
3867 return update_string_copy_(&settings->GatewayAvdAccessTokenFormat, cnv.cc, len,
3868 cleanup);
3869
3870 case FreeRDP_GatewayAvdActivityhint:
3871 return update_string_copy_(&settings->GatewayAvdActivityhint, cnv.cc, len, cleanup);
3872
3873 case FreeRDP_GatewayAvdArmpath:
3874 return update_string_copy_(&settings->GatewayAvdArmpath, cnv.cc, len, cleanup);
3875
3876 case FreeRDP_GatewayAvdClientID:
3877 return update_string_copy_(&settings->GatewayAvdClientID, cnv.cc, len, cleanup);
3878
3879 case FreeRDP_GatewayAvdDiagnosticserviceurl:
3880 return update_string_copy_(&settings->GatewayAvdDiagnosticserviceurl, cnv.cc, len,
3881 cleanup);
3882
3883 case FreeRDP_GatewayAvdGeo:
3884 return update_string_copy_(&settings->GatewayAvdGeo, cnv.cc, len, cleanup);
3885
3886 case FreeRDP_GatewayAvdHubdiscoverygeourl:
3887 return update_string_copy_(&settings->GatewayAvdHubdiscoverygeourl, cnv.cc, len,
3888 cleanup);
3889
3890 case FreeRDP_GatewayAvdScope:
3891 return update_string_copy_(&settings->GatewayAvdScope, cnv.cc, len, cleanup);
3892
3893 case FreeRDP_GatewayAvdWvdEndpointPool:
3894 return update_string_copy_(&settings->GatewayAvdWvdEndpointPool, cnv.cc, len, cleanup);
3895
3896 case FreeRDP_GatewayAzureActiveDirectory:
3897 return update_string_copy_(&settings->GatewayAzureActiveDirectory, cnv.cc, len,
3898 cleanup);
3899
3900 case FreeRDP_GatewayDomain:
3901 return update_string_copy_(&settings->GatewayDomain, cnv.cc, len, cleanup);
3902
3903 case FreeRDP_GatewayHostname:
3904 return update_string_copy_(&settings->GatewayHostname, cnv.cc, len, cleanup);
3905
3906 case FreeRDP_GatewayHttpExtAuthBearer:
3907 return update_string_copy_(&settings->GatewayHttpExtAuthBearer, cnv.cc, len, cleanup);
3908
3909 case FreeRDP_GatewayHttpMsUserAgent:
3910 return update_string_copy_(&settings->GatewayHttpMsUserAgent, cnv.cc, len, cleanup);
3911
3912 case FreeRDP_GatewayHttpReferer:
3913 return update_string_copy_(&settings->GatewayHttpReferer, cnv.cc, len, cleanup);
3914
3915 case FreeRDP_GatewayHttpUserAgent:
3916 return update_string_copy_(&settings->GatewayHttpUserAgent, cnv.cc, len, cleanup);
3917
3918 case FreeRDP_GatewayPassword:
3919 return update_string_copy_(&settings->GatewayPassword, cnv.cc, len, cleanup);
3920
3921 case FreeRDP_GatewayUrl:
3922 return update_string_copy_(&settings->GatewayUrl, cnv.cc, len, cleanup);
3923
3924 case FreeRDP_GatewayUsername:
3925 return update_string_copy_(&settings->GatewayUsername, cnv.cc, len, cleanup);
3926
3927 case FreeRDP_HomePath:
3928 return update_string_copy_(&settings->HomePath, cnv.cc, len, cleanup);
3929
3930 case FreeRDP_ImeFileName:
3931 return update_string_copy_(&settings->ImeFileName, cnv.cc, len, cleanup);
3932
3933 case FreeRDP_KerberosArmor:
3934 return update_string_copy_(&settings->KerberosArmor, cnv.cc, len, cleanup);
3935
3936 case FreeRDP_KerberosCache:
3937 return update_string_copy_(&settings->KerberosCache, cnv.cc, len, cleanup);
3938
3939 case FreeRDP_KerberosKdcUrl:
3940 return update_string_copy_(&settings->KerberosKdcUrl, cnv.cc, len, cleanup);
3941
3942 case FreeRDP_KerberosKeytab:
3943 return update_string_copy_(&settings->KerberosKeytab, cnv.cc, len, cleanup);
3944
3945 case FreeRDP_KerberosLifeTime:
3946 return update_string_copy_(&settings->KerberosLifeTime, cnv.cc, len, cleanup);
3947
3948 case FreeRDP_KerberosRealm:
3949 return update_string_copy_(&settings->KerberosRealm, cnv.cc, len, cleanup);
3950
3951 case FreeRDP_KerberosRenewableLifeTime:
3952 return update_string_copy_(&settings->KerberosRenewableLifeTime, cnv.cc, len, cleanup);
3953
3954 case FreeRDP_KerberosStartTime:
3955 return update_string_copy_(&settings->KerberosStartTime, cnv.cc, len, cleanup);
3956
3957 case FreeRDP_KeyboardPipeName:
3958 return update_string_copy_(&settings->KeyboardPipeName, cnv.cc, len, cleanup);
3959
3960 case FreeRDP_KeyboardRemappingList:
3961 return update_string_copy_(&settings->KeyboardRemappingList, cnv.cc, len, cleanup);
3962
3963 case FreeRDP_NtlmSamFile:
3964 return update_string_copy_(&settings->NtlmSamFile, cnv.cc, len, cleanup);
3965
3966 case FreeRDP_Password:
3967 return update_string_copy_(&settings->Password, cnv.cc, len, cleanup);
3968
3969 case FreeRDP_PasswordHash:
3970 return update_string_copy_(&settings->PasswordHash, cnv.cc, len, cleanup);
3971
3972 case FreeRDP_Pkcs11Module:
3973 return update_string_copy_(&settings->Pkcs11Module, cnv.cc, len, cleanup);
3974
3975 case FreeRDP_PkinitAnchors:
3976 return update_string_copy_(&settings->PkinitAnchors, cnv.cc, len, cleanup);
3977
3978 case FreeRDP_PlayRemoteFxFile:
3979 return update_string_copy_(&settings->PlayRemoteFxFile, cnv.cc, len, cleanup);
3980
3981 case FreeRDP_PreconnectionBlob:
3982 return update_string_copy_(&settings->PreconnectionBlob, cnv.cc, len, cleanup);
3983
3984 case FreeRDP_ProxyHostname:
3985 return update_string_copy_(&settings->ProxyHostname, cnv.cc, len, cleanup);
3986
3987 case FreeRDP_ProxyPassword:
3988 return update_string_copy_(&settings->ProxyPassword, cnv.cc, len, cleanup);
3989
3990 case FreeRDP_ProxyUsername:
3991 return update_string_copy_(&settings->ProxyUsername, cnv.cc, len, cleanup);
3992
3993 case FreeRDP_RDP2TCPArgs:
3994 return update_string_copy_(&settings->RDP2TCPArgs, cnv.cc, len, cleanup);
3995
3996 case FreeRDP_ReaderName:
3997 return update_string_copy_(&settings->ReaderName, cnv.cc, len, cleanup);
3998
3999 case FreeRDP_RedirectionAcceptedCert:
4000 return update_string_copy_(&settings->RedirectionAcceptedCert, cnv.cc, len, cleanup);
4001
4002 case FreeRDP_RedirectionDomain:
4003 return update_string_copy_(&settings->RedirectionDomain, cnv.cc, len, cleanup);
4004
4005 case FreeRDP_RedirectionTargetFQDN:
4006 return update_string_copy_(&settings->RedirectionTargetFQDN, cnv.cc, len, cleanup);
4007
4008 case FreeRDP_RedirectionTargetNetBiosName:
4009 return update_string_copy_(&settings->RedirectionTargetNetBiosName, cnv.cc, len,
4010 cleanup);
4011
4012 case FreeRDP_RedirectionUsername:
4013 return update_string_copy_(&settings->RedirectionUsername, cnv.cc, len, cleanup);
4014
4015 case FreeRDP_RemoteApplicationCmdLine:
4016 return update_string_copy_(&settings->RemoteApplicationCmdLine, cnv.cc, len, cleanup);
4017
4018 case FreeRDP_RemoteApplicationFile:
4019 return update_string_copy_(&settings->RemoteApplicationFile, cnv.cc, len, cleanup);
4020
4021 case FreeRDP_RemoteApplicationGuid:
4022 return update_string_copy_(&settings->RemoteApplicationGuid, cnv.cc, len, cleanup);
4023
4024 case FreeRDP_RemoteApplicationIcon:
4025 return update_string_copy_(&settings->RemoteApplicationIcon, cnv.cc, len, cleanup);
4026
4027 case FreeRDP_RemoteApplicationName:
4028 return update_string_copy_(&settings->RemoteApplicationName, cnv.cc, len, cleanup);
4029
4030 case FreeRDP_RemoteApplicationProgram:
4031 return update_string_copy_(&settings->RemoteApplicationProgram, cnv.cc, len, cleanup);
4032
4033 case FreeRDP_RemoteApplicationWorkingDir:
4034 return update_string_copy_(&settings->RemoteApplicationWorkingDir, cnv.cc, len,
4035 cleanup);
4036
4037 case FreeRDP_RemoteAssistancePassStub:
4038 return update_string_copy_(&settings->RemoteAssistancePassStub, cnv.cc, len, cleanup);
4039
4040 case FreeRDP_RemoteAssistancePassword:
4041 return update_string_copy_(&settings->RemoteAssistancePassword, cnv.cc, len, cleanup);
4042
4043 case FreeRDP_RemoteAssistanceRCTicket:
4044 return update_string_copy_(&settings->RemoteAssistanceRCTicket, cnv.cc, len, cleanup);
4045
4046 case FreeRDP_RemoteAssistanceSessionId:
4047 return update_string_copy_(&settings->RemoteAssistanceSessionId, cnv.cc, len, cleanup);
4048
4049 case FreeRDP_ServerHostname:
4050 return update_string_copy_(&settings->ServerHostname, cnv.cc, len, cleanup);
4051
4052 case FreeRDP_ServerLicenseCompanyName:
4053 return update_string_copy_(&settings->ServerLicenseCompanyName, cnv.cc, len, cleanup);
4054
4055 case FreeRDP_ServerLicenseProductName:
4056 return update_string_copy_(&settings->ServerLicenseProductName, cnv.cc, len, cleanup);
4057
4058 case FreeRDP_ShellWorkingDirectory:
4059 return update_string_copy_(&settings->ShellWorkingDirectory, cnv.cc, len, cleanup);
4060
4061 case FreeRDP_SmartcardCertificate:
4062 return update_string_copy_(&settings->SmartcardCertificate, cnv.cc, len, cleanup);
4063
4064 case FreeRDP_SmartcardPrivateKey:
4065 return update_string_copy_(&settings->SmartcardPrivateKey, cnv.cc, len, cleanup);
4066
4067 case FreeRDP_SspiModule:
4068 return update_string_copy_(&settings->SspiModule, cnv.cc, len, cleanup);
4069
4070 case FreeRDP_TargetNetAddress:
4071 return update_string_copy_(&settings->TargetNetAddress, cnv.cc, len, cleanup);
4072
4073 case FreeRDP_TerminalDescriptor:
4074 return update_string_copy_(&settings->TerminalDescriptor, cnv.cc, len, cleanup);
4075
4076 case FreeRDP_TlsSecretsFile:
4077 return update_string_copy_(&settings->TlsSecretsFile, cnv.cc, len, cleanup);
4078
4079 case FreeRDP_TransportDumpFile:
4080 return update_string_copy_(&settings->TransportDumpFile, cnv.cc, len, cleanup);
4081
4082 case FreeRDP_UserSpecifiedServerName:
4083 return update_string_copy_(&settings->UserSpecifiedServerName, cnv.cc, len, cleanup);
4084
4085 case FreeRDP_Username:
4086 return update_string_copy_(&settings->Username, cnv.cc, len, cleanup);
4087
4088 case FreeRDP_WinSCardModule:
4089 return update_string_copy_(&settings->WinSCardModule, cnv.cc, len, cleanup);
4090
4091 case FreeRDP_WindowTitle:
4092 return update_string_copy_(&settings->WindowTitle, cnv.cc, len, cleanup);
4093
4094 case FreeRDP_WmClass:
4095 return update_string_copy_(&settings->WmClass, cnv.cc, len, cleanup);
4096
4097 default:
4098 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
4101 return FALSE;
4102 }
4103 return TRUE;
4104}
4105
4106void* freerdp_settings_get_pointer_writable(rdpSettings* settings, FreeRDP_Settings_Keys_Pointer id)
4107{
4108 WINPR_ASSERT(settings);
4109
4110 switch (id)
4111 {
4112 case FreeRDP_BitmapCacheV2CellInfo:
4113 return (void*)settings->BitmapCacheV2CellInfo;
4114
4115 case FreeRDP_ChannelDefArray:
4116 return (void*)settings->ChannelDefArray;
4117
4118 case FreeRDP_ClientAutoReconnectCookie:
4119 return (void*)settings->ClientAutoReconnectCookie;
4120
4121 case FreeRDP_ClientRandom:
4122 return (void*)settings->ClientRandom;
4123
4124 case FreeRDP_ClientTimeZone:
4125 return (void*)settings->ClientTimeZone;
4126
4127 case FreeRDP_DeviceArray:
4128 return (void*)settings->DeviceArray;
4129
4130 case FreeRDP_DynamicChannelArray:
4131 return (void*)settings->DynamicChannelArray;
4132
4133 case FreeRDP_FragCache:
4134 return (void*)settings->FragCache;
4135
4136 case FreeRDP_GlyphCache:
4137 return (void*)settings->GlyphCache;
4138
4139 case FreeRDP_LoadBalanceInfo:
4140 return (void*)settings->LoadBalanceInfo;
4141
4142 case FreeRDP_MonitorDefArray:
4143 return (void*)settings->MonitorDefArray;
4144
4145 case FreeRDP_MonitorIds:
4146 return (void*)settings->MonitorIds;
4147
4148 case FreeRDP_OrderSupport:
4149 return (void*)settings->OrderSupport;
4150
4151 case FreeRDP_Password51:
4152 return (void*)settings->Password51;
4153
4154 case FreeRDP_RdpServerCertificate:
4155 return (void*)settings->RdpServerCertificate;
4156
4157 case FreeRDP_RdpServerRsaKey:
4158 return (void*)settings->RdpServerRsaKey;
4159
4160 case FreeRDP_ReceivedCapabilities:
4161 return (void*)settings->ReceivedCapabilities;
4162
4163 case FreeRDP_ReceivedCapabilityData:
4164 return (void*)settings->ReceivedCapabilityData;
4165
4166 case FreeRDP_ReceivedCapabilityDataSizes:
4167 return (void*)settings->ReceivedCapabilityDataSizes;
4168
4169 case FreeRDP_RedirectionGuid:
4170 return (void*)settings->RedirectionGuid;
4171
4172 case FreeRDP_RedirectionPassword:
4173 return (void*)settings->RedirectionPassword;
4174
4175 case FreeRDP_RedirectionTargetCertificate:
4176 return (void*)settings->RedirectionTargetCertificate;
4177
4178 case FreeRDP_RedirectionTsvUrl:
4179 return (void*)settings->RedirectionTsvUrl;
4180
4181 case FreeRDP_ServerAutoReconnectCookie:
4182 return (void*)settings->ServerAutoReconnectCookie;
4183
4184 case FreeRDP_ServerCertificate:
4185 return (void*)settings->ServerCertificate;
4186
4187 case FreeRDP_ServerLicenseProductIssuers:
4188 return (void*)settings->ServerLicenseProductIssuers;
4189
4190 case FreeRDP_ServerRandom:
4191 return (void*)settings->ServerRandom;
4192
4193 case FreeRDP_StaticChannelArray:
4194 return (void*)settings->StaticChannelArray;
4195
4196 case FreeRDP_TargetNetAddresses:
4197 return (void*)settings->TargetNetAddresses;
4198
4199 case FreeRDP_TargetNetPorts:
4200 return (void*)settings->TargetNetPorts;
4201
4202 case FreeRDP_instance:
4203 return settings->instance;
4204
4205 default:
4206 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
4209 WINPR_ASSERT(FALSE);
4210 return NULL;
4211 }
4212}
4213
4214BOOL freerdp_settings_set_pointer(WINPR_ATTR_UNUSED rdpSettings* settings,
4215 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Pointer id,
4216 const void* val)
4217{
4218 union
4219 {
4220 void* v;
4221 const void* cv;
4222 } cnv;
4223 WINPR_ASSERT(settings);
4224
4225 cnv.cv = val;
4226
4227 switch (id)
4228 {
4229 case FreeRDP_BitmapCacheV2CellInfo:
4230 settings->BitmapCacheV2CellInfo = (BITMAP_CACHE_V2_CELL_INFO*)cnv.v;
4231 break;
4232
4233 case FreeRDP_ChannelDefArray:
4234 settings->ChannelDefArray = (CHANNEL_DEF*)cnv.v;
4235 break;
4236
4237 case FreeRDP_ClientAutoReconnectCookie:
4238 settings->ClientAutoReconnectCookie = (ARC_CS_PRIVATE_PACKET*)cnv.v;
4239 break;
4240
4241 case FreeRDP_ClientRandom:
4242 settings->ClientRandom = (BYTE*)cnv.v;
4243 break;
4244
4245 case FreeRDP_ClientTimeZone:
4246 settings->ClientTimeZone = (TIME_ZONE_INFORMATION*)cnv.v;
4247 break;
4248
4249 case FreeRDP_DeviceArray:
4250 settings->DeviceArray = (RDPDR_DEVICE**)cnv.v;
4251 break;
4252
4253 case FreeRDP_DynamicChannelArray:
4254 settings->DynamicChannelArray = (ADDIN_ARGV**)cnv.v;
4255 break;
4256
4257 case FreeRDP_FragCache:
4258 settings->FragCache = (GLYPH_CACHE_DEFINITION*)cnv.v;
4259 break;
4260
4261 case FreeRDP_GlyphCache:
4262 settings->GlyphCache = (GLYPH_CACHE_DEFINITION*)cnv.v;
4263 break;
4264
4265 case FreeRDP_LoadBalanceInfo:
4266 settings->LoadBalanceInfo = (BYTE*)cnv.v;
4267 break;
4268
4269 case FreeRDP_MonitorDefArray:
4270 settings->MonitorDefArray = (rdpMonitor*)cnv.v;
4271 break;
4272
4273 case FreeRDP_MonitorIds:
4274 settings->MonitorIds = (UINT32*)cnv.v;
4275 break;
4276
4277 case FreeRDP_OrderSupport:
4278 settings->OrderSupport = (BYTE*)cnv.v;
4279 break;
4280
4281 case FreeRDP_Password51:
4282 settings->Password51 = (BYTE*)cnv.v;
4283 break;
4284
4285 case FreeRDP_RdpServerCertificate:
4286 settings->RdpServerCertificate = (rdpCertificate*)cnv.v;
4287 break;
4288
4289 case FreeRDP_RdpServerRsaKey:
4290 settings->RdpServerRsaKey = (rdpPrivateKey*)cnv.v;
4291 break;
4292
4293 case FreeRDP_ReceivedCapabilities:
4294 settings->ReceivedCapabilities = (BYTE*)cnv.v;
4295 break;
4296
4297 case FreeRDP_ReceivedCapabilityData:
4298 settings->ReceivedCapabilityData = (BYTE**)cnv.v;
4299 break;
4300
4301 case FreeRDP_ReceivedCapabilityDataSizes:
4302 settings->ReceivedCapabilityDataSizes = (UINT32*)cnv.v;
4303 break;
4304
4305 case FreeRDP_RedirectionGuid:
4306 settings->RedirectionGuid = (BYTE*)cnv.v;
4307 break;
4308
4309 case FreeRDP_RedirectionPassword:
4310 settings->RedirectionPassword = (BYTE*)cnv.v;
4311 break;
4312
4313 case FreeRDP_RedirectionTargetCertificate:
4314 settings->RedirectionTargetCertificate = (rdpCertificate*)cnv.v;
4315 break;
4316
4317 case FreeRDP_RedirectionTsvUrl:
4318 settings->RedirectionTsvUrl = (BYTE*)cnv.v;
4319 break;
4320
4321 case FreeRDP_ServerAutoReconnectCookie:
4322 settings->ServerAutoReconnectCookie = (ARC_SC_PRIVATE_PACKET*)cnv.v;
4323 break;
4324
4325 case FreeRDP_ServerCertificate:
4326 settings->ServerCertificate = (BYTE*)cnv.v;
4327 break;
4328
4329 case FreeRDP_ServerLicenseProductIssuers:
4330 settings->ServerLicenseProductIssuers = (char**)cnv.v;
4331 break;
4332
4333 case FreeRDP_ServerRandom:
4334 settings->ServerRandom = (BYTE*)cnv.v;
4335 break;
4336
4337 case FreeRDP_StaticChannelArray:
4338 settings->StaticChannelArray = (ADDIN_ARGV**)cnv.v;
4339 break;
4340
4341 case FreeRDP_TargetNetAddresses:
4342 settings->TargetNetAddresses = (char**)cnv.v;
4343 break;
4344
4345 case FreeRDP_TargetNetPorts:
4346 settings->TargetNetPorts = (UINT32*)cnv.v;
4347 break;
4348
4349 case FreeRDP_instance:
4350 settings->instance = cnv.v;
4351 break;
4352
4353 default:
4354 WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id,
4357 return FALSE;
4358 }
4359 return TRUE;
4360}
FREERDP_API UINT32 freerdp_settings_get_uint32(const rdpSettings *settings, FreeRDP_Settings_Keys_UInt32 id)
Returns a UINT32 settings value.
BOOL freerdp_settings_set_string(rdpSettings *settings, FreeRDP_Settings_Keys_String id, const char *val)
Sets a string settings value. The param is copied.
FREERDP_API BOOL freerdp_settings_get_bool(const rdpSettings *settings, FreeRDP_Settings_Keys_Bool id)
Returns a boolean settings value.
FREERDP_API INT64 freerdp_settings_get_int64(const rdpSettings *settings, FreeRDP_Settings_Keys_Int64 id)
Returns a INT64 settings value.
FREERDP_API UINT64 freerdp_settings_get_uint64(const rdpSettings *settings, FreeRDP_Settings_Keys_UInt64 id)
Returns a UINT64 settings value.
FREERDP_API BOOL freerdp_settings_set_int32(rdpSettings *settings, FreeRDP_Settings_Keys_Int32 id, INT32 param)
Sets a INT32 settings value.
FREERDP_API UINT16 freerdp_settings_get_uint16(const rdpSettings *settings, FreeRDP_Settings_Keys_UInt16 id)
Returns a UINT16 settings value.
void * freerdp_settings_get_pointer_writable(rdpSettings *settings, FreeRDP_Settings_Keys_Pointer id)
Returns a mutable pointer settings value.
FREERDP_API BOOL freerdp_settings_set_uint64(rdpSettings *settings, FreeRDP_Settings_Keys_UInt64 id, UINT64 param)
Sets a UINT64 settings value.
FREERDP_API BOOL freerdp_settings_set_int16(rdpSettings *settings, FreeRDP_Settings_Keys_Int16 id, INT16 param)
Sets a INT16 settings value.
FREERDP_API BOOL freerdp_settings_set_int64(rdpSettings *settings, FreeRDP_Settings_Keys_Int64 id, INT64 param)
Sets a INT64 settings value.
FREERDP_API BOOL freerdp_settings_set_pointer(rdpSettings *settings, FreeRDP_Settings_Keys_Pointer id, const void *data)
Set a pointer to value data.
FREERDP_API INT32 freerdp_settings_get_int32(const rdpSettings *settings, FreeRDP_Settings_Keys_Int32 id)
Returns a INT32 settings value.
FREERDP_API const char * freerdp_settings_get_type_name_for_key(SSIZE_T key)
Returns the type name for a key.
BOOL freerdp_settings_set_string_len(rdpSettings *settings, FreeRDP_Settings_Keys_String id, const char *val, size_t len)
Sets a string settings value. The param is copied.
FREERDP_API BOOL freerdp_settings_set_uint32(rdpSettings *settings, FreeRDP_Settings_Keys_UInt32 id, UINT32 param)
Sets a UINT32 settings value.
char * freerdp_settings_get_string_writable(rdpSettings *settings, FreeRDP_Settings_Keys_String id)
Returns a string settings value.
FREERDP_API const char * freerdp_settings_get_name_for_key(SSIZE_T key)
Returns the type name for a key.
FREERDP_API const char * freerdp_settings_get_string(const rdpSettings *settings, FreeRDP_Settings_Keys_String id)
Returns a immutable string settings value.
FREERDP_API BOOL freerdp_settings_set_uint16(rdpSettings *settings, FreeRDP_Settings_Keys_UInt16 id, UINT16 param)
Sets a UINT16 settings value.
FREERDP_API INT16 freerdp_settings_get_int16(const rdpSettings *settings, FreeRDP_Settings_Keys_Int16 id)
Returns a INT16 settings value.
FREERDP_API BOOL freerdp_settings_set_bool(rdpSettings *settings, FreeRDP_Settings_Keys_Bool id, BOOL param)
Sets a BOOL settings value.