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