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