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