/* Generated by */ #include "../core/settings.h" #include #include #include #define TAG FREERDP_TAG("common.settings") static void free_string(char** current, BOOL cleanup) { if (cleanup) { if (*current) memset(*current, 0, strlen(*current)); free(*current); (*current) = NULL; } } static BOOL alloc_empty_string(char** current, const char* next, size_t next_len) { if (!next && (next_len > 0)) { *current = calloc(next_len, 1); return (*current != NULL); } return FALSE; } static BOOL update_string_copy_(char** current, const char* next, size_t next_len, BOOL cleanup) { free_string(current, cleanup); if (alloc_empty_string(current, next, next_len)) return TRUE; *current = (next ? strndup(next, next_len) : NULL); return !next || (*current != NULL); } static BOOL update_string_(char** current, char* next, size_t next_len) { free_string(current, TRUE); if (alloc_empty_string(current, next, next_len)) return TRUE; *current = next; return !next || (*current != NULL); } BOOL freerdp_settings_get_bool(const rdpSettings* settings, FreeRDP_Settings_Keys_Bool id) { WINPR_ASSERT(settings); switch (id) { case FreeRDP_AadSecurity: return settings->AadSecurity; case FreeRDP_AllowCacheWaitingList: return settings->AllowCacheWaitingList; case FreeRDP_AllowDesktopComposition: return settings->AllowDesktopComposition; case FreeRDP_AllowFontSmoothing: return settings->AllowFontSmoothing; case FreeRDP_AllowUnanouncedOrdersFromServer: return settings->AllowUnanouncedOrdersFromServer; case FreeRDP_AltSecFrameMarkerSupport: return settings->AltSecFrameMarkerSupport; case FreeRDP_AsyncChannels: return settings->AsyncChannels; case FreeRDP_AsyncUpdate: return settings->AsyncUpdate; case FreeRDP_AudioCapture: return settings->AudioCapture; case FreeRDP_AudioPlayback: return settings->AudioPlayback; case FreeRDP_Authentication: return settings->Authentication; case FreeRDP_AuthenticationOnly: return settings->AuthenticationOnly; case FreeRDP_AutoAcceptCertificate: return settings->AutoAcceptCertificate; case FreeRDP_AutoDenyCertificate: return settings->AutoDenyCertificate; case FreeRDP_AutoLogonEnabled: return settings->AutoLogonEnabled; case FreeRDP_AutoReconnectionEnabled: return settings->AutoReconnectionEnabled; case FreeRDP_AutoReconnectionPacketSupported: return settings->AutoReconnectionPacketSupported; case FreeRDP_BitmapCacheEnabled: return settings->BitmapCacheEnabled; case FreeRDP_BitmapCachePersistEnabled: return settings->BitmapCachePersistEnabled; case FreeRDP_BitmapCacheV3Enabled: return settings->BitmapCacheV3Enabled; case FreeRDP_BitmapCompressionDisabled: return settings->BitmapCompressionDisabled; case FreeRDP_CertificateCallbackPreferPEM: return settings->CertificateCallbackPreferPEM; case FreeRDP_CompressionEnabled: return settings->CompressionEnabled; case FreeRDP_ConnectChildSession: return settings->ConnectChildSession; case FreeRDP_ConsoleSession: return settings->ConsoleSession; case FreeRDP_CredentialsFromStdin: return settings->CredentialsFromStdin; case FreeRDP_DeactivateClientDecoding: return settings->DeactivateClientDecoding; case FreeRDP_Decorations: return settings->Decorations; case FreeRDP_DesktopResize: return settings->DesktopResize; case FreeRDP_DeviceRedirection: return settings->DeviceRedirection; case FreeRDP_DisableCredentialsDelegation: return settings->DisableCredentialsDelegation; case FreeRDP_DisableCtrlAltDel: return settings->DisableCtrlAltDel; case FreeRDP_DisableCursorBlinking: return settings->DisableCursorBlinking; case FreeRDP_DisableCursorShadow: return settings->DisableCursorShadow; case FreeRDP_DisableFullWindowDrag: return settings->DisableFullWindowDrag; case FreeRDP_DisableMenuAnims: return settings->DisableMenuAnims; case FreeRDP_DisableRemoteAppCapsCheck: return settings->DisableRemoteAppCapsCheck; case FreeRDP_DisableThemes: return settings->DisableThemes; case FreeRDP_DisableWallpaper: return settings->DisableWallpaper; case FreeRDP_DrawAllowColorSubsampling: return settings->DrawAllowColorSubsampling; case FreeRDP_DrawAllowDynamicColorFidelity: return settings->DrawAllowDynamicColorFidelity; case FreeRDP_DrawAllowSkipAlpha: return settings->DrawAllowSkipAlpha; case FreeRDP_DrawGdiPlusCacheEnabled: return settings->DrawGdiPlusCacheEnabled; case FreeRDP_DrawGdiPlusEnabled: return settings->DrawGdiPlusEnabled; case FreeRDP_DrawNineGridEnabled: return settings->DrawNineGridEnabled; case FreeRDP_DumpRemoteFx: return settings->DumpRemoteFx; case FreeRDP_DynamicDaylightTimeDisabled: return settings->DynamicDaylightTimeDisabled; case FreeRDP_DynamicResolutionUpdate: return settings->DynamicResolutionUpdate; case FreeRDP_EmbeddedWindow: return settings->EmbeddedWindow; case FreeRDP_EnableWindowsKey: return settings->EnableWindowsKey; case FreeRDP_EncomspVirtualChannel: return settings->EncomspVirtualChannel; case FreeRDP_ExtSecurity: return settings->ExtSecurity; case FreeRDP_ExternalCertificateManagement: return settings->ExternalCertificateManagement; case FreeRDP_FIPSMode: return settings->FIPSMode; case FreeRDP_FastPathInput: return settings->FastPathInput; case FreeRDP_FastPathOutput: return settings->FastPathOutput; case FreeRDP_ForceEncryptedCsPdu: return settings->ForceEncryptedCsPdu; case FreeRDP_ForceMultimon: return settings->ForceMultimon; case FreeRDP_FrameMarkerCommandEnabled: return settings->FrameMarkerCommandEnabled; case FreeRDP_Fullscreen: return settings->Fullscreen; case FreeRDP_GatewayArmTransport: return settings->GatewayArmTransport; case FreeRDP_GatewayBypassLocal: return settings->GatewayBypassLocal; case FreeRDP_GatewayEnabled: return settings->GatewayEnabled; case FreeRDP_GatewayHttpExtAuthSspiNtlm: return settings->GatewayHttpExtAuthSspiNtlm; case FreeRDP_GatewayHttpTransport: return settings->GatewayHttpTransport; case FreeRDP_GatewayHttpUseWebsockets: return settings->GatewayHttpUseWebsockets; case FreeRDP_GatewayIgnoreRedirectionPolicy: return settings->GatewayIgnoreRedirectionPolicy; case FreeRDP_GatewayRpcTransport: return settings->GatewayRpcTransport; case FreeRDP_GatewayUdpTransport: return settings->GatewayUdpTransport; case FreeRDP_GatewayUseSameCredentials: return settings->GatewayUseSameCredentials; case FreeRDP_GfxAVC444: return settings->GfxAVC444; case FreeRDP_GfxAVC444v2: return settings->GfxAVC444v2; case FreeRDP_GfxH264: return settings->GfxH264; case FreeRDP_GfxPlanar: return settings->GfxPlanar; case FreeRDP_GfxProgressive: return settings->GfxProgressive; case FreeRDP_GfxProgressiveV2: return settings->GfxProgressiveV2; case FreeRDP_GfxSendQoeAck: return settings->GfxSendQoeAck; case FreeRDP_GfxSmallCache: return settings->GfxSmallCache; case FreeRDP_GfxSuspendFrameAck: return settings->GfxSuspendFrameAck; case FreeRDP_GfxThinClient: return settings->GfxThinClient; case FreeRDP_GrabKeyboard: return settings->GrabKeyboard; case FreeRDP_GrabMouse: return settings->GrabMouse; case FreeRDP_HasExtendedMouseEvent: return settings->HasExtendedMouseEvent; case FreeRDP_HasHorizontalWheel: return settings->HasHorizontalWheel; case FreeRDP_HasMonitorAttributes: return settings->HasMonitorAttributes; case FreeRDP_HasQoeEvent: return settings->HasQoeEvent; case FreeRDP_HasRelativeMouseEvent: return settings->HasRelativeMouseEvent; case FreeRDP_HiDefRemoteApp: return settings->HiDefRemoteApp; case FreeRDP_IPv6Enabled: return settings->IPv6Enabled; case FreeRDP_IgnoreCertificate: return settings->IgnoreCertificate; case FreeRDP_IgnoreInvalidDevices: return settings->IgnoreInvalidDevices; case FreeRDP_JpegCodec: return settings->JpegCodec; case FreeRDP_KerberosRdgIsProxy: return settings->KerberosRdgIsProxy; case FreeRDP_ListMonitors: return settings->ListMonitors; case FreeRDP_LocalConnection: return settings->LocalConnection; case FreeRDP_LogonErrors: return settings->LogonErrors; case FreeRDP_LogonNotify: return settings->LogonNotify; case FreeRDP_LongCredentialsSupported: return settings->LongCredentialsSupported; case FreeRDP_LyncRdpMode: return settings->LyncRdpMode; case FreeRDP_MaximizeShell: return settings->MaximizeShell; case FreeRDP_MouseAttached: return settings->MouseAttached; case FreeRDP_MouseHasWheel: return settings->MouseHasWheel; case FreeRDP_MouseMotion: return settings->MouseMotion; case FreeRDP_MouseUseRelativeMove: return settings->MouseUseRelativeMove; case FreeRDP_MstscCookieMode: return settings->MstscCookieMode; case FreeRDP_MultiTouchGestures: return settings->MultiTouchGestures; case FreeRDP_MultiTouchInput: return settings->MultiTouchInput; case FreeRDP_NSCodec: return settings->NSCodec; case FreeRDP_NSCodecAllowDynamicColorFidelity: return settings->NSCodecAllowDynamicColorFidelity; case FreeRDP_NSCodecAllowSubsampling: return settings->NSCodecAllowSubsampling; case FreeRDP_NegotiateSecurityLayer: return settings->NegotiateSecurityLayer; case FreeRDP_NetworkAutoDetect: return settings->NetworkAutoDetect; case FreeRDP_NlaSecurity: return settings->NlaSecurity; case FreeRDP_NoBitmapCompressionHeader: return settings->NoBitmapCompressionHeader; case FreeRDP_OldLicenseBehaviour: return settings->OldLicenseBehaviour; case FreeRDP_PasswordIsSmartcardPin: return settings->PasswordIsSmartcardPin; case FreeRDP_PercentScreenUseHeight: return settings->PercentScreenUseHeight; case FreeRDP_PercentScreenUseWidth: return settings->PercentScreenUseWidth; case FreeRDP_PlayRemoteFx: return settings->PlayRemoteFx; case FreeRDP_PreferIPv6OverIPv4: return settings->PreferIPv6OverIPv4; case FreeRDP_PrintReconnectCookie: return settings->PrintReconnectCookie; case FreeRDP_PromptForCredentials: return settings->PromptForCredentials; case FreeRDP_RdpSecurity: return settings->RdpSecurity; case FreeRDP_RdstlsSecurity: return settings->RdstlsSecurity; case FreeRDP_RedirectClipboard: return settings->RedirectClipboard; case FreeRDP_RedirectDrives: return settings->RedirectDrives; case FreeRDP_RedirectHomeDrive: return settings->RedirectHomeDrive; case FreeRDP_RedirectParallelPorts: return settings->RedirectParallelPorts; case FreeRDP_RedirectPrinters: return settings->RedirectPrinters; case FreeRDP_RedirectSerialPorts: return settings->RedirectSerialPorts; case FreeRDP_RedirectSmartCards: return settings->RedirectSmartCards; case FreeRDP_RedirectWebAuthN: return settings->RedirectWebAuthN; case FreeRDP_RefreshRect: return settings->RefreshRect; case FreeRDP_RemdeskVirtualChannel: return settings->RemdeskVirtualChannel; case FreeRDP_RemoteAppLanguageBarSupported: return settings->RemoteAppLanguageBarSupported; case FreeRDP_RemoteApplicationMode: return settings->RemoteApplicationMode; case FreeRDP_RemoteAssistanceMode: return settings->RemoteAssistanceMode; case FreeRDP_RemoteAssistanceRequestControl: return settings->RemoteAssistanceRequestControl; case FreeRDP_RemoteConsoleAudio: return settings->RemoteConsoleAudio; case FreeRDP_RemoteCredentialGuard: return settings->RemoteCredentialGuard; case FreeRDP_RemoteFxCodec: return settings->RemoteFxCodec; case FreeRDP_RemoteFxImageCodec: return settings->RemoteFxImageCodec; case FreeRDP_RemoteFxOnly: return settings->RemoteFxOnly; case FreeRDP_RestrictedAdminModeRequired: return settings->RestrictedAdminModeRequired; case FreeRDP_SaltedChecksum: return settings->SaltedChecksum; case FreeRDP_SendPreconnectionPdu: return settings->SendPreconnectionPdu; case FreeRDP_ServerLicenseRequired: return settings->ServerLicenseRequired; case FreeRDP_ServerMode: return settings->ServerMode; case FreeRDP_SmartSizing: return settings->SmartSizing; case FreeRDP_SmartcardEmulation: return settings->SmartcardEmulation; case FreeRDP_SmartcardLogon: return settings->SmartcardLogon; case FreeRDP_SoftwareGdi: return settings->SoftwareGdi; case FreeRDP_SoundBeepsEnabled: return settings->SoundBeepsEnabled; case FreeRDP_SpanMonitors: return settings->SpanMonitors; case FreeRDP_SupportAsymetricKeys: return settings->SupportAsymetricKeys; case FreeRDP_SupportDisplayControl: return settings->SupportDisplayControl; case FreeRDP_SupportDynamicChannels: return settings->SupportDynamicChannels; case FreeRDP_SupportDynamicTimeZone: return settings->SupportDynamicTimeZone; case FreeRDP_SupportEchoChannel: return settings->SupportEchoChannel; case FreeRDP_SupportEdgeActionV1: return settings->SupportEdgeActionV1; case FreeRDP_SupportEdgeActionV2: return settings->SupportEdgeActionV2; case FreeRDP_SupportErrorInfoPdu: return settings->SupportErrorInfoPdu; case FreeRDP_SupportGeometryTracking: return settings->SupportGeometryTracking; case FreeRDP_SupportGraphicsPipeline: return settings->SupportGraphicsPipeline; case FreeRDP_SupportHeartbeatPdu: return settings->SupportHeartbeatPdu; case FreeRDP_SupportMonitorLayoutPdu: return settings->SupportMonitorLayoutPdu; case FreeRDP_SupportMultitransport: return settings->SupportMultitransport; case FreeRDP_SupportSSHAgentChannel: return settings->SupportSSHAgentChannel; case FreeRDP_SupportSkipChannelJoin: return settings->SupportSkipChannelJoin; case FreeRDP_SupportStatusInfoPdu: return settings->SupportStatusInfoPdu; case FreeRDP_SupportVideoOptimized: return settings->SupportVideoOptimized; case FreeRDP_SuppressOutput: return settings->SuppressOutput; case FreeRDP_SurfaceCommandsEnabled: return settings->SurfaceCommandsEnabled; case FreeRDP_SurfaceFrameMarkerEnabled: return settings->SurfaceFrameMarkerEnabled; case FreeRDP_SuspendInput: return settings->SuspendInput; case FreeRDP_SynchronousDynamicChannels: return settings->SynchronousDynamicChannels; case FreeRDP_SynchronousStaticChannels: return settings->SynchronousStaticChannels; case FreeRDP_TcpKeepAlive: return settings->TcpKeepAlive; case FreeRDP_TlsSecurity: return settings->TlsSecurity; case FreeRDP_ToggleFullscreen: return settings->ToggleFullscreen; case FreeRDP_TransportDump: return settings->TransportDump; case FreeRDP_TransportDumpReplay: return settings->TransportDumpReplay; case FreeRDP_TransportDumpReplayNodelay: return settings->TransportDumpReplayNodelay; case FreeRDP_UnicodeInput: return settings->UnicodeInput; case FreeRDP_UnmapButtons: return settings->UnmapButtons; case FreeRDP_UseCommonStdioCallbacks: return settings->UseCommonStdioCallbacks; case FreeRDP_UseMultimon: return settings->UseMultimon; case FreeRDP_UseRdpSecurityLayer: return settings->UseRdpSecurityLayer; case FreeRDP_UsingSavedCredentials: return settings->UsingSavedCredentials; case FreeRDP_VideoDisable: return settings->VideoDisable; case FreeRDP_VmConnectMode: return settings->VmConnectMode; case FreeRDP_WaitForOutputBufferFlush: return settings->WaitForOutputBufferFlush; case FreeRDP_Workarea: return settings->Workarea; default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); WINPR_ASSERT(FALSE); return FALSE; } } BOOL freerdp_settings_set_bool(rdpSettings* settings, FreeRDP_Settings_Keys_Bool id, BOOL val) { union { void* v; const void* cv; BOOL c; const BOOL cc; } cnv; WINPR_ASSERT(settings); cnv.c = val; switch (id) { case FreeRDP_AadSecurity: settings->AadSecurity = cnv.c; break; case FreeRDP_AllowCacheWaitingList: settings->AllowCacheWaitingList = cnv.c; break; case FreeRDP_AllowDesktopComposition: settings->AllowDesktopComposition = cnv.c; break; case FreeRDP_AllowFontSmoothing: settings->AllowFontSmoothing = cnv.c; break; case FreeRDP_AllowUnanouncedOrdersFromServer: settings->AllowUnanouncedOrdersFromServer = cnv.c; break; case FreeRDP_AltSecFrameMarkerSupport: settings->AltSecFrameMarkerSupport = cnv.c; break; case FreeRDP_AsyncChannels: settings->AsyncChannels = cnv.c; break; case FreeRDP_AsyncUpdate: settings->AsyncUpdate = cnv.c; break; case FreeRDP_AudioCapture: settings->AudioCapture = cnv.c; break; case FreeRDP_AudioPlayback: settings->AudioPlayback = cnv.c; break; case FreeRDP_Authentication: settings->Authentication = cnv.c; break; case FreeRDP_AuthenticationOnly: settings->AuthenticationOnly = cnv.c; break; case FreeRDP_AutoAcceptCertificate: settings->AutoAcceptCertificate = cnv.c; break; case FreeRDP_AutoDenyCertificate: settings->AutoDenyCertificate = cnv.c; break; case FreeRDP_AutoLogonEnabled: settings->AutoLogonEnabled = cnv.c; break; case FreeRDP_AutoReconnectionEnabled: settings->AutoReconnectionEnabled = cnv.c; break; case FreeRDP_AutoReconnectionPacketSupported: settings->AutoReconnectionPacketSupported = cnv.c; break; case FreeRDP_BitmapCacheEnabled: settings->BitmapCacheEnabled = cnv.c; break; case FreeRDP_BitmapCachePersistEnabled: settings->BitmapCachePersistEnabled = cnv.c; break; case FreeRDP_BitmapCacheV3Enabled: settings->BitmapCacheV3Enabled = cnv.c; break; case FreeRDP_BitmapCompressionDisabled: settings->BitmapCompressionDisabled = cnv.c; break; case FreeRDP_CertificateCallbackPreferPEM: settings->CertificateCallbackPreferPEM = cnv.c; break; case FreeRDP_CompressionEnabled: settings->CompressionEnabled = cnv.c; break; case FreeRDP_ConnectChildSession: settings->ConnectChildSession = cnv.c; break; case FreeRDP_ConsoleSession: settings->ConsoleSession = cnv.c; break; case FreeRDP_CredentialsFromStdin: settings->CredentialsFromStdin = cnv.c; break; case FreeRDP_DeactivateClientDecoding: settings->DeactivateClientDecoding = cnv.c; break; case FreeRDP_Decorations: settings->Decorations = cnv.c; break; case FreeRDP_DesktopResize: settings->DesktopResize = cnv.c; break; case FreeRDP_DeviceRedirection: settings->DeviceRedirection = cnv.c; break; case FreeRDP_DisableCredentialsDelegation: settings->DisableCredentialsDelegation = cnv.c; break; case FreeRDP_DisableCtrlAltDel: settings->DisableCtrlAltDel = cnv.c; break; case FreeRDP_DisableCursorBlinking: settings->DisableCursorBlinking = cnv.c; break; case FreeRDP_DisableCursorShadow: settings->DisableCursorShadow = cnv.c; break; case FreeRDP_DisableFullWindowDrag: settings->DisableFullWindowDrag = cnv.c; break; case FreeRDP_DisableMenuAnims: settings->DisableMenuAnims = cnv.c; break; case FreeRDP_DisableRemoteAppCapsCheck: settings->DisableRemoteAppCapsCheck = cnv.c; break; case FreeRDP_DisableThemes: settings->DisableThemes = cnv.c; break; case FreeRDP_DisableWallpaper: settings->DisableWallpaper = cnv.c; break; case FreeRDP_DrawAllowColorSubsampling: settings->DrawAllowColorSubsampling = cnv.c; break; case FreeRDP_DrawAllowDynamicColorFidelity: settings->DrawAllowDynamicColorFidelity = cnv.c; break; case FreeRDP_DrawAllowSkipAlpha: settings->DrawAllowSkipAlpha = cnv.c; break; case FreeRDP_DrawGdiPlusCacheEnabled: settings->DrawGdiPlusCacheEnabled = cnv.c; break; case FreeRDP_DrawGdiPlusEnabled: settings->DrawGdiPlusEnabled = cnv.c; break; case FreeRDP_DrawNineGridEnabled: settings->DrawNineGridEnabled = cnv.c; break; case FreeRDP_DumpRemoteFx: settings->DumpRemoteFx = cnv.c; break; case FreeRDP_DynamicDaylightTimeDisabled: settings->DynamicDaylightTimeDisabled = cnv.c; break; case FreeRDP_DynamicResolutionUpdate: settings->DynamicResolutionUpdate = cnv.c; break; case FreeRDP_EmbeddedWindow: settings->EmbeddedWindow = cnv.c; break; case FreeRDP_EnableWindowsKey: settings->EnableWindowsKey = cnv.c; break; case FreeRDP_EncomspVirtualChannel: settings->EncomspVirtualChannel = cnv.c; break; case FreeRDP_ExtSecurity: settings->ExtSecurity = cnv.c; break; case FreeRDP_ExternalCertificateManagement: settings->ExternalCertificateManagement = cnv.c; break; case FreeRDP_FIPSMode: settings->FIPSMode = cnv.c; break; case FreeRDP_FastPathInput: settings->FastPathInput = cnv.c; break; case FreeRDP_FastPathOutput: settings->FastPathOutput = cnv.c; break; case FreeRDP_ForceEncryptedCsPdu: settings->ForceEncryptedCsPdu = cnv.c; break; case FreeRDP_ForceMultimon: settings->ForceMultimon = cnv.c; break; case FreeRDP_FrameMarkerCommandEnabled: settings->FrameMarkerCommandEnabled = cnv.c; break; case FreeRDP_Fullscreen: settings->Fullscreen = cnv.c; break; case FreeRDP_GatewayArmTransport: settings->GatewayArmTransport = cnv.c; break; case FreeRDP_GatewayBypassLocal: settings->GatewayBypassLocal = cnv.c; break; case FreeRDP_GatewayEnabled: settings->GatewayEnabled = cnv.c; break; case FreeRDP_GatewayHttpExtAuthSspiNtlm: settings->GatewayHttpExtAuthSspiNtlm = cnv.c; break; case FreeRDP_GatewayHttpTransport: settings->GatewayHttpTransport = cnv.c; break; case FreeRDP_GatewayHttpUseWebsockets: settings->GatewayHttpUseWebsockets = cnv.c; break; case FreeRDP_GatewayIgnoreRedirectionPolicy: settings->GatewayIgnoreRedirectionPolicy = cnv.c; break; case FreeRDP_GatewayRpcTransport: settings->GatewayRpcTransport = cnv.c; break; case FreeRDP_GatewayUdpTransport: settings->GatewayUdpTransport = cnv.c; break; case FreeRDP_GatewayUseSameCredentials: settings->GatewayUseSameCredentials = cnv.c; break; case FreeRDP_GfxAVC444: settings->GfxAVC444 = cnv.c; break; case FreeRDP_GfxAVC444v2: settings->GfxAVC444v2 = cnv.c; break; case FreeRDP_GfxH264: settings->GfxH264 = cnv.c; break; case FreeRDP_GfxPlanar: settings->GfxPlanar = cnv.c; break; case FreeRDP_GfxProgressive: settings->GfxProgressive = cnv.c; break; case FreeRDP_GfxProgressiveV2: settings->GfxProgressiveV2 = cnv.c; break; case FreeRDP_GfxSendQoeAck: settings->GfxSendQoeAck = cnv.c; break; case FreeRDP_GfxSmallCache: settings->GfxSmallCache = cnv.c; break; case FreeRDP_GfxSuspendFrameAck: settings->GfxSuspendFrameAck = cnv.c; break; case FreeRDP_GfxThinClient: settings->GfxThinClient = cnv.c; break; case FreeRDP_GrabKeyboard: settings->GrabKeyboard = cnv.c; break; case FreeRDP_GrabMouse: settings->GrabMouse = cnv.c; break; case FreeRDP_HasExtendedMouseEvent: settings->HasExtendedMouseEvent = cnv.c; break; case FreeRDP_HasHorizontalWheel: settings->HasHorizontalWheel = cnv.c; break; case FreeRDP_HasMonitorAttributes: settings->HasMonitorAttributes = cnv.c; break; case FreeRDP_HasQoeEvent: settings->HasQoeEvent = cnv.c; break; case FreeRDP_HasRelativeMouseEvent: settings->HasRelativeMouseEvent = cnv.c; break; case FreeRDP_HiDefRemoteApp: settings->HiDefRemoteApp = cnv.c; break; case FreeRDP_IPv6Enabled: settings->IPv6Enabled = cnv.c; break; case FreeRDP_IgnoreCertificate: settings->IgnoreCertificate = cnv.c; break; case FreeRDP_IgnoreInvalidDevices: settings->IgnoreInvalidDevices = cnv.c; break; case FreeRDP_JpegCodec: settings->JpegCodec = cnv.c; break; case FreeRDP_KerberosRdgIsProxy: settings->KerberosRdgIsProxy = cnv.c; break; case FreeRDP_ListMonitors: settings->ListMonitors = cnv.c; break; case FreeRDP_LocalConnection: settings->LocalConnection = cnv.c; break; case FreeRDP_LogonErrors: settings->LogonErrors = cnv.c; break; case FreeRDP_LogonNotify: settings->LogonNotify = cnv.c; break; case FreeRDP_LongCredentialsSupported: settings->LongCredentialsSupported = cnv.c; break; case FreeRDP_LyncRdpMode: settings->LyncRdpMode = cnv.c; break; case FreeRDP_MaximizeShell: settings->MaximizeShell = cnv.c; break; case FreeRDP_MouseAttached: settings->MouseAttached = cnv.c; break; case FreeRDP_MouseHasWheel: settings->MouseHasWheel = cnv.c; break; case FreeRDP_MouseMotion: settings->MouseMotion = cnv.c; break; case FreeRDP_MouseUseRelativeMove: settings->MouseUseRelativeMove = cnv.c; break; case FreeRDP_MstscCookieMode: settings->MstscCookieMode = cnv.c; break; case FreeRDP_MultiTouchGestures: settings->MultiTouchGestures = cnv.c; break; case FreeRDP_MultiTouchInput: settings->MultiTouchInput = cnv.c; break; case FreeRDP_NSCodec: settings->NSCodec = cnv.c; break; case FreeRDP_NSCodecAllowDynamicColorFidelity: settings->NSCodecAllowDynamicColorFidelity = cnv.c; break; case FreeRDP_NSCodecAllowSubsampling: settings->NSCodecAllowSubsampling = cnv.c; break; case FreeRDP_NegotiateSecurityLayer: settings->NegotiateSecurityLayer = cnv.c; break; case FreeRDP_NetworkAutoDetect: settings->NetworkAutoDetect = cnv.c; break; case FreeRDP_NlaSecurity: settings->NlaSecurity = cnv.c; break; case FreeRDP_NoBitmapCompressionHeader: settings->NoBitmapCompressionHeader = cnv.c; break; case FreeRDP_OldLicenseBehaviour: settings->OldLicenseBehaviour = cnv.c; break; case FreeRDP_PasswordIsSmartcardPin: settings->PasswordIsSmartcardPin = cnv.c; break; case FreeRDP_PercentScreenUseHeight: settings->PercentScreenUseHeight = cnv.c; break; case FreeRDP_PercentScreenUseWidth: settings->PercentScreenUseWidth = cnv.c; break; case FreeRDP_PlayRemoteFx: settings->PlayRemoteFx = cnv.c; break; case FreeRDP_PreferIPv6OverIPv4: settings->PreferIPv6OverIPv4 = cnv.c; break; case FreeRDP_PrintReconnectCookie: settings->PrintReconnectCookie = cnv.c; break; case FreeRDP_PromptForCredentials: settings->PromptForCredentials = cnv.c; break; case FreeRDP_RdpSecurity: settings->RdpSecurity = cnv.c; break; case FreeRDP_RdstlsSecurity: settings->RdstlsSecurity = cnv.c; break; case FreeRDP_RedirectClipboard: settings->RedirectClipboard = cnv.c; break; case FreeRDP_RedirectDrives: settings->RedirectDrives = cnv.c; break; case FreeRDP_RedirectHomeDrive: settings->RedirectHomeDrive = cnv.c; break; case FreeRDP_RedirectParallelPorts: settings->RedirectParallelPorts = cnv.c; break; case FreeRDP_RedirectPrinters: settings->RedirectPrinters = cnv.c; break; case FreeRDP_RedirectSerialPorts: settings->RedirectSerialPorts = cnv.c; break; case FreeRDP_RedirectSmartCards: settings->RedirectSmartCards = cnv.c; break; case FreeRDP_RedirectWebAuthN: settings->RedirectWebAuthN = cnv.c; break; case FreeRDP_RefreshRect: settings->RefreshRect = cnv.c; break; case FreeRDP_RemdeskVirtualChannel: settings->RemdeskVirtualChannel = cnv.c; break; case FreeRDP_RemoteAppLanguageBarSupported: settings->RemoteAppLanguageBarSupported = cnv.c; break; case FreeRDP_RemoteApplicationMode: settings->RemoteApplicationMode = cnv.c; break; case FreeRDP_RemoteAssistanceMode: settings->RemoteAssistanceMode = cnv.c; break; case FreeRDP_RemoteAssistanceRequestControl: settings->RemoteAssistanceRequestControl = cnv.c; break; case FreeRDP_RemoteConsoleAudio: settings->RemoteConsoleAudio = cnv.c; break; case FreeRDP_RemoteCredentialGuard: settings->RemoteCredentialGuard = cnv.c; break; case FreeRDP_RemoteFxCodec: settings->RemoteFxCodec = cnv.c; break; case FreeRDP_RemoteFxImageCodec: settings->RemoteFxImageCodec = cnv.c; break; case FreeRDP_RemoteFxOnly: settings->RemoteFxOnly = cnv.c; break; case FreeRDP_RestrictedAdminModeRequired: settings->RestrictedAdminModeRequired = cnv.c; break; case FreeRDP_SaltedChecksum: settings->SaltedChecksum = cnv.c; break; case FreeRDP_SendPreconnectionPdu: settings->SendPreconnectionPdu = cnv.c; break; case FreeRDP_ServerLicenseRequired: settings->ServerLicenseRequired = cnv.c; break; case FreeRDP_ServerMode: settings->ServerMode = cnv.c; break; case FreeRDP_SmartSizing: settings->SmartSizing = cnv.c; break; case FreeRDP_SmartcardEmulation: settings->SmartcardEmulation = cnv.c; break; case FreeRDP_SmartcardLogon: settings->SmartcardLogon = cnv.c; break; case FreeRDP_SoftwareGdi: settings->SoftwareGdi = cnv.c; break; case FreeRDP_SoundBeepsEnabled: settings->SoundBeepsEnabled = cnv.c; break; case FreeRDP_SpanMonitors: settings->SpanMonitors = cnv.c; break; case FreeRDP_SupportAsymetricKeys: settings->SupportAsymetricKeys = cnv.c; break; case FreeRDP_SupportDisplayControl: settings->SupportDisplayControl = cnv.c; break; case FreeRDP_SupportDynamicChannels: settings->SupportDynamicChannels = cnv.c; break; case FreeRDP_SupportDynamicTimeZone: settings->SupportDynamicTimeZone = cnv.c; break; case FreeRDP_SupportEchoChannel: settings->SupportEchoChannel = cnv.c; break; case FreeRDP_SupportEdgeActionV1: settings->SupportEdgeActionV1 = cnv.c; break; case FreeRDP_SupportEdgeActionV2: settings->SupportEdgeActionV2 = cnv.c; break; case FreeRDP_SupportErrorInfoPdu: settings->SupportErrorInfoPdu = cnv.c; break; case FreeRDP_SupportGeometryTracking: settings->SupportGeometryTracking = cnv.c; break; case FreeRDP_SupportGraphicsPipeline: settings->SupportGraphicsPipeline = cnv.c; break; case FreeRDP_SupportHeartbeatPdu: settings->SupportHeartbeatPdu = cnv.c; break; case FreeRDP_SupportMonitorLayoutPdu: settings->SupportMonitorLayoutPdu = cnv.c; break; case FreeRDP_SupportMultitransport: settings->SupportMultitransport = cnv.c; break; case FreeRDP_SupportSSHAgentChannel: settings->SupportSSHAgentChannel = cnv.c; break; case FreeRDP_SupportSkipChannelJoin: settings->SupportSkipChannelJoin = cnv.c; break; case FreeRDP_SupportStatusInfoPdu: settings->SupportStatusInfoPdu = cnv.c; break; case FreeRDP_SupportVideoOptimized: settings->SupportVideoOptimized = cnv.c; break; case FreeRDP_SuppressOutput: settings->SuppressOutput = cnv.c; break; case FreeRDP_SurfaceCommandsEnabled: settings->SurfaceCommandsEnabled = cnv.c; break; case FreeRDP_SurfaceFrameMarkerEnabled: settings->SurfaceFrameMarkerEnabled = cnv.c; break; case FreeRDP_SuspendInput: settings->SuspendInput = cnv.c; break; case FreeRDP_SynchronousDynamicChannels: settings->SynchronousDynamicChannels = cnv.c; break; case FreeRDP_SynchronousStaticChannels: settings->SynchronousStaticChannels = cnv.c; break; case FreeRDP_TcpKeepAlive: settings->TcpKeepAlive = cnv.c; break; case FreeRDP_TlsSecurity: settings->TlsSecurity = cnv.c; break; case FreeRDP_ToggleFullscreen: settings->ToggleFullscreen = cnv.c; break; case FreeRDP_TransportDump: settings->TransportDump = cnv.c; break; case FreeRDP_TransportDumpReplay: settings->TransportDumpReplay = cnv.c; break; case FreeRDP_TransportDumpReplayNodelay: settings->TransportDumpReplayNodelay = cnv.c; break; case FreeRDP_UnicodeInput: settings->UnicodeInput = cnv.c; break; case FreeRDP_UnmapButtons: settings->UnmapButtons = cnv.c; break; case FreeRDP_UseCommonStdioCallbacks: settings->UseCommonStdioCallbacks = cnv.c; break; case FreeRDP_UseMultimon: settings->UseMultimon = cnv.c; break; case FreeRDP_UseRdpSecurityLayer: settings->UseRdpSecurityLayer = cnv.c; break; case FreeRDP_UsingSavedCredentials: settings->UsingSavedCredentials = cnv.c; break; case FreeRDP_VideoDisable: settings->VideoDisable = cnv.c; break; case FreeRDP_VmConnectMode: settings->VmConnectMode = cnv.c; break; case FreeRDP_WaitForOutputBufferFlush: settings->WaitForOutputBufferFlush = cnv.c; break; case FreeRDP_Workarea: settings->Workarea = cnv.c; break; default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); return FALSE; } return TRUE; } UINT16 freerdp_settings_get_uint16(const rdpSettings* settings, FreeRDP_Settings_Keys_UInt16 id) { WINPR_ASSERT(settings); switch (id) { case FreeRDP_CapsGeneralCompressionLevel: return settings->CapsGeneralCompressionLevel; case FreeRDP_CapsGeneralCompressionTypes: return settings->CapsGeneralCompressionTypes; case FreeRDP_CapsProtocolVersion: return settings->CapsProtocolVersion; case FreeRDP_CapsRemoteUnshareFlag: return settings->CapsRemoteUnshareFlag; case FreeRDP_CapsUpdateCapabilityFlag: return settings->CapsUpdateCapabilityFlag; case FreeRDP_DesktopOrientation: return settings->DesktopOrientation; case FreeRDP_OrderSupportFlags: return settings->OrderSupportFlags; case FreeRDP_OrderSupportFlagsEx: return settings->OrderSupportFlagsEx; case FreeRDP_ProxyPort: return settings->ProxyPort; case FreeRDP_SupportedColorDepths: return settings->SupportedColorDepths; case FreeRDP_TLSMaxVersion: return settings->TLSMaxVersion; case FreeRDP_TLSMinVersion: return settings->TLSMinVersion; case FreeRDP_TextANSICodePage: return settings->TextANSICodePage; default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); WINPR_ASSERT(FALSE); return 0; } } BOOL freerdp_settings_set_uint16(rdpSettings* settings, FreeRDP_Settings_Keys_UInt16 id, UINT16 val) { union { void* v; const void* cv; UINT16 c; const UINT16 cc; } cnv; WINPR_ASSERT(settings); cnv.c = val; switch (id) { case FreeRDP_CapsGeneralCompressionLevel: settings->CapsGeneralCompressionLevel = cnv.c; break; case FreeRDP_CapsGeneralCompressionTypes: settings->CapsGeneralCompressionTypes = cnv.c; break; case FreeRDP_CapsProtocolVersion: settings->CapsProtocolVersion = cnv.c; break; case FreeRDP_CapsRemoteUnshareFlag: settings->CapsRemoteUnshareFlag = cnv.c; break; case FreeRDP_CapsUpdateCapabilityFlag: settings->CapsUpdateCapabilityFlag = cnv.c; break; case FreeRDP_DesktopOrientation: settings->DesktopOrientation = cnv.c; break; case FreeRDP_OrderSupportFlags: settings->OrderSupportFlags = cnv.c; break; case FreeRDP_OrderSupportFlagsEx: settings->OrderSupportFlagsEx = cnv.c; break; case FreeRDP_ProxyPort: settings->ProxyPort = cnv.c; break; case FreeRDP_SupportedColorDepths: settings->SupportedColorDepths = cnv.c; break; case FreeRDP_TLSMaxVersion: settings->TLSMaxVersion = cnv.c; break; case FreeRDP_TLSMinVersion: settings->TLSMinVersion = cnv.c; break; case FreeRDP_TextANSICodePage: settings->TextANSICodePage = cnv.c; break; default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); return FALSE; } return TRUE; } INT16 freerdp_settings_get_int16(const rdpSettings* settings, FreeRDP_Settings_Keys_Int16 id) { WINPR_ASSERT(settings); switch (id) { default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); WINPR_ASSERT(FALSE); return 0; } } BOOL freerdp_settings_set_int16(rdpSettings* settings, FreeRDP_Settings_Keys_Int16 id, INT16 val) { union { void* v; const void* cv; INT16 c; const INT16 cc; } cnv; WINPR_ASSERT(settings); cnv.c = val; switch (id) { default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); return FALSE; } return TRUE; } UINT32 freerdp_settings_get_uint32(const rdpSettings* settings, FreeRDP_Settings_Keys_UInt32 id) { WINPR_ASSERT(settings); switch (id) { case FreeRDP_AcceptedCertLength: return settings->AcceptedCertLength; case FreeRDP_AuthenticationLevel: return settings->AuthenticationLevel; case FreeRDP_AutoReconnectMaxRetries: return settings->AutoReconnectMaxRetries; case FreeRDP_BitmapCacheV2NumCells: return settings->BitmapCacheV2NumCells; case FreeRDP_BitmapCacheV3CodecId: return settings->BitmapCacheV3CodecId; case FreeRDP_BitmapCacheVersion: return settings->BitmapCacheVersion; case FreeRDP_BrushSupportLevel: return settings->BrushSupportLevel; case FreeRDP_ChannelCount: return settings->ChannelCount; case FreeRDP_ChannelDefArraySize: return settings->ChannelDefArraySize; case FreeRDP_ClientBuild: return settings->ClientBuild; case FreeRDP_ClientRandomLength: return settings->ClientRandomLength; case FreeRDP_ClientSessionId: return settings->ClientSessionId; case FreeRDP_ClipboardFeatureMask: return settings->ClipboardFeatureMask; case FreeRDP_ClusterInfoFlags: return settings->ClusterInfoFlags; case FreeRDP_ColorDepth: return settings->ColorDepth; case FreeRDP_ColorPointerCacheSize: return settings->ColorPointerCacheSize; case FreeRDP_CompDeskSupportLevel: return settings->CompDeskSupportLevel; case FreeRDP_CompressionLevel: return settings->CompressionLevel; case FreeRDP_ConnectionType: return settings->ConnectionType; case FreeRDP_CookieMaxLength: return settings->CookieMaxLength; case FreeRDP_DesktopHeight: return settings->DesktopHeight; case FreeRDP_DesktopPhysicalHeight: return settings->DesktopPhysicalHeight; case FreeRDP_DesktopPhysicalWidth: return settings->DesktopPhysicalWidth; case FreeRDP_DesktopPosX: return settings->DesktopPosX; case FreeRDP_DesktopPosY: return settings->DesktopPosY; case FreeRDP_DesktopScaleFactor: return settings->DesktopScaleFactor; case FreeRDP_DesktopWidth: return settings->DesktopWidth; case FreeRDP_DeviceArraySize: return settings->DeviceArraySize; case FreeRDP_DeviceCount: return settings->DeviceCount; case FreeRDP_DeviceScaleFactor: return settings->DeviceScaleFactor; case FreeRDP_DrawNineGridCacheEntries: return settings->DrawNineGridCacheEntries; case FreeRDP_DrawNineGridCacheSize: return settings->DrawNineGridCacheSize; case FreeRDP_DynamicChannelArraySize: return settings->DynamicChannelArraySize; case FreeRDP_DynamicChannelCount: return settings->DynamicChannelCount; case FreeRDP_EarlyCapabilityFlags: return settings->EarlyCapabilityFlags; case FreeRDP_EncryptionLevel: return settings->EncryptionLevel; case FreeRDP_EncryptionMethods: return settings->EncryptionMethods; case FreeRDP_ExtEncryptionMethods: return settings->ExtEncryptionMethods; case FreeRDP_FakeMouseMotionInterval: return settings->FakeMouseMotionInterval; case FreeRDP_Floatbar: return settings->Floatbar; case FreeRDP_ForceIPvX: return settings->ForceIPvX; case FreeRDP_FrameAcknowledge: return settings->FrameAcknowledge; case FreeRDP_GatewayAcceptedCertLength: return settings->GatewayAcceptedCertLength; case FreeRDP_GatewayCredentialsSource: return settings->GatewayCredentialsSource; case FreeRDP_GatewayPort: return settings->GatewayPort; case FreeRDP_GatewayUsageMethod: return settings->GatewayUsageMethod; case FreeRDP_GfxCapsFilter: return settings->GfxCapsFilter; case FreeRDP_GlyphSupportLevel: return settings->GlyphSupportLevel; case FreeRDP_JpegCodecId: return settings->JpegCodecId; case FreeRDP_JpegQuality: return settings->JpegQuality; case FreeRDP_KeySpec: return settings->KeySpec; case FreeRDP_KeyboardCodePage: return settings->KeyboardCodePage; case FreeRDP_KeyboardFunctionKey: return settings->KeyboardFunctionKey; case FreeRDP_KeyboardHook: return settings->KeyboardHook; case FreeRDP_KeyboardLayout: return settings->KeyboardLayout; case FreeRDP_KeyboardSubType: return settings->KeyboardSubType; case FreeRDP_KeyboardType: return settings->KeyboardType; case FreeRDP_LargePointerFlag: return settings->LargePointerFlag; case FreeRDP_LoadBalanceInfoLength: return settings->LoadBalanceInfoLength; case FreeRDP_MonitorAttributeFlags: return settings->MonitorAttributeFlags; case FreeRDP_MonitorCount: return settings->MonitorCount; case FreeRDP_MonitorDefArraySize: return settings->MonitorDefArraySize; case FreeRDP_MonitorFlags: return settings->MonitorFlags; case FreeRDP_MonitorLocalShiftX: return settings->MonitorLocalShiftX; case FreeRDP_MonitorLocalShiftY: return settings->MonitorLocalShiftY; case FreeRDP_MultifragMaxRequestSize: return settings->MultifragMaxRequestSize; case FreeRDP_MultitransportFlags: return settings->MultitransportFlags; case FreeRDP_NSCodecColorLossLevel: return settings->NSCodecColorLossLevel; case FreeRDP_NSCodecId: return settings->NSCodecId; case FreeRDP_NegotiationFlags: return settings->NegotiationFlags; case FreeRDP_NumMonitorIds: return settings->NumMonitorIds; case FreeRDP_OffscreenCacheEntries: return settings->OffscreenCacheEntries; case FreeRDP_OffscreenCacheSize: return settings->OffscreenCacheSize; case FreeRDP_OffscreenSupportLevel: return settings->OffscreenSupportLevel; case FreeRDP_OsMajorType: return settings->OsMajorType; case FreeRDP_OsMinorType: return settings->OsMinorType; case FreeRDP_Password51Length: return settings->Password51Length; case FreeRDP_PduSource: return settings->PduSource; case FreeRDP_PercentScreen: return settings->PercentScreen; case FreeRDP_PerformanceFlags: return settings->PerformanceFlags; case FreeRDP_PointerCacheSize: return settings->PointerCacheSize; case FreeRDP_PreconnectionId: return settings->PreconnectionId; case FreeRDP_ProxyType: return settings->ProxyType; case FreeRDP_RdpVersion: return settings->RdpVersion; case FreeRDP_ReceivedCapabilitiesSize: return settings->ReceivedCapabilitiesSize; case FreeRDP_RedirectedSessionId: return settings->RedirectedSessionId; case FreeRDP_RedirectionAcceptedCertLength: return settings->RedirectionAcceptedCertLength; case FreeRDP_RedirectionFlags: return settings->RedirectionFlags; case FreeRDP_RedirectionGuidLength: return settings->RedirectionGuidLength; case FreeRDP_RedirectionPasswordLength: return settings->RedirectionPasswordLength; case FreeRDP_RedirectionPreferType: return settings->RedirectionPreferType; case FreeRDP_RedirectionTsvUrlLength: return settings->RedirectionTsvUrlLength; case FreeRDP_RemoteAppNumIconCacheEntries: return settings->RemoteAppNumIconCacheEntries; case FreeRDP_RemoteAppNumIconCaches: return settings->RemoteAppNumIconCaches; case FreeRDP_RemoteApplicationExpandCmdLine: return settings->RemoteApplicationExpandCmdLine; case FreeRDP_RemoteApplicationExpandWorkingDir: return settings->RemoteApplicationExpandWorkingDir; case FreeRDP_RemoteApplicationSupportLevel: return settings->RemoteApplicationSupportLevel; case FreeRDP_RemoteApplicationSupportMask: return settings->RemoteApplicationSupportMask; case FreeRDP_RemoteFxCaptureFlags: return settings->RemoteFxCaptureFlags; case FreeRDP_RemoteFxCodecId: return settings->RemoteFxCodecId; case FreeRDP_RemoteFxCodecMode: return settings->RemoteFxCodecMode; case FreeRDP_RemoteFxRlgrMode: return settings->RemoteFxRlgrMode; case FreeRDP_RemoteWndSupportLevel: return settings->RemoteWndSupportLevel; case FreeRDP_RequestedProtocols: return settings->RequestedProtocols; case FreeRDP_SelectedProtocol: return settings->SelectedProtocol; case FreeRDP_ServerCertificateLength: return settings->ServerCertificateLength; case FreeRDP_ServerLicenseProductIssuersCount: return settings->ServerLicenseProductIssuersCount; case FreeRDP_ServerLicenseProductVersion: return settings->ServerLicenseProductVersion; case FreeRDP_ServerPort: return settings->ServerPort; case FreeRDP_ServerRandomLength: return settings->ServerRandomLength; case FreeRDP_ShareId: return settings->ShareId; case FreeRDP_SmartSizingHeight: return settings->SmartSizingHeight; case FreeRDP_SmartSizingWidth: return settings->SmartSizingWidth; case FreeRDP_StaticChannelArraySize: return settings->StaticChannelArraySize; case FreeRDP_StaticChannelCount: return settings->StaticChannelCount; case FreeRDP_SurfaceCommandsSupported: return settings->SurfaceCommandsSupported; case FreeRDP_TargetNetAddressCount: return settings->TargetNetAddressCount; case FreeRDP_TcpAckTimeout: return settings->TcpAckTimeout; case FreeRDP_TcpConnectTimeout: return settings->TcpConnectTimeout; case FreeRDP_TcpKeepAliveDelay: return settings->TcpKeepAliveDelay; case FreeRDP_TcpKeepAliveInterval: return settings->TcpKeepAliveInterval; case FreeRDP_TcpKeepAliveRetries: return settings->TcpKeepAliveRetries; case FreeRDP_ThreadingFlags: return settings->ThreadingFlags; case FreeRDP_TlsSecLevel: return settings->TlsSecLevel; case FreeRDP_VCChunkSize: return settings->VCChunkSize; case FreeRDP_VCFlags: return settings->VCFlags; default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); WINPR_ASSERT(FALSE); return 0; } } BOOL freerdp_settings_set_uint32(rdpSettings* settings, FreeRDP_Settings_Keys_UInt32 id, UINT32 val) { union { void* v; const void* cv; UINT32 c; const UINT32 cc; } cnv; WINPR_ASSERT(settings); cnv.c = val; switch (id) { case FreeRDP_AcceptedCertLength: settings->AcceptedCertLength = cnv.c; break; case FreeRDP_AuthenticationLevel: settings->AuthenticationLevel = cnv.c; break; case FreeRDP_AutoReconnectMaxRetries: settings->AutoReconnectMaxRetries = cnv.c; break; case FreeRDP_BitmapCacheV2NumCells: settings->BitmapCacheV2NumCells = cnv.c; break; case FreeRDP_BitmapCacheV3CodecId: settings->BitmapCacheV3CodecId = cnv.c; break; case FreeRDP_BitmapCacheVersion: settings->BitmapCacheVersion = cnv.c; break; case FreeRDP_BrushSupportLevel: settings->BrushSupportLevel = cnv.c; break; case FreeRDP_ChannelCount: settings->ChannelCount = cnv.c; break; case FreeRDP_ChannelDefArraySize: settings->ChannelDefArraySize = cnv.c; break; case FreeRDP_ClientBuild: settings->ClientBuild = cnv.c; break; case FreeRDP_ClientRandomLength: settings->ClientRandomLength = cnv.c; break; case FreeRDP_ClientSessionId: settings->ClientSessionId = cnv.c; break; case FreeRDP_ClipboardFeatureMask: settings->ClipboardFeatureMask = cnv.c; break; case FreeRDP_ClusterInfoFlags: settings->ClusterInfoFlags = cnv.c; break; case FreeRDP_ColorDepth: settings->ColorDepth = cnv.c; break; case FreeRDP_ColorPointerCacheSize: settings->ColorPointerCacheSize = cnv.c; break; case FreeRDP_CompDeskSupportLevel: settings->CompDeskSupportLevel = cnv.c; break; case FreeRDP_CompressionLevel: settings->CompressionLevel = cnv.c; break; case FreeRDP_ConnectionType: settings->ConnectionType = cnv.c; break; case FreeRDP_CookieMaxLength: settings->CookieMaxLength = cnv.c; break; case FreeRDP_DesktopHeight: settings->DesktopHeight = cnv.c; break; case FreeRDP_DesktopPhysicalHeight: settings->DesktopPhysicalHeight = cnv.c; break; case FreeRDP_DesktopPhysicalWidth: settings->DesktopPhysicalWidth = cnv.c; break; case FreeRDP_DesktopPosX: settings->DesktopPosX = cnv.c; break; case FreeRDP_DesktopPosY: settings->DesktopPosY = cnv.c; break; case FreeRDP_DesktopScaleFactor: settings->DesktopScaleFactor = cnv.c; break; case FreeRDP_DesktopWidth: settings->DesktopWidth = cnv.c; break; case FreeRDP_DeviceArraySize: settings->DeviceArraySize = cnv.c; break; case FreeRDP_DeviceCount: settings->DeviceCount = cnv.c; break; case FreeRDP_DeviceScaleFactor: settings->DeviceScaleFactor = cnv.c; break; case FreeRDP_DrawNineGridCacheEntries: settings->DrawNineGridCacheEntries = cnv.c; break; case FreeRDP_DrawNineGridCacheSize: settings->DrawNineGridCacheSize = cnv.c; break; case FreeRDP_DynamicChannelArraySize: settings->DynamicChannelArraySize = cnv.c; break; case FreeRDP_DynamicChannelCount: settings->DynamicChannelCount = cnv.c; break; case FreeRDP_EarlyCapabilityFlags: settings->EarlyCapabilityFlags = cnv.c; break; case FreeRDP_EncryptionLevel: settings->EncryptionLevel = cnv.c; break; case FreeRDP_EncryptionMethods: settings->EncryptionMethods = cnv.c; break; case FreeRDP_ExtEncryptionMethods: settings->ExtEncryptionMethods = cnv.c; break; case FreeRDP_FakeMouseMotionInterval: settings->FakeMouseMotionInterval = cnv.c; break; case FreeRDP_Floatbar: settings->Floatbar = cnv.c; break; case FreeRDP_ForceIPvX: settings->ForceIPvX = cnv.c; break; case FreeRDP_FrameAcknowledge: settings->FrameAcknowledge = cnv.c; break; case FreeRDP_GatewayAcceptedCertLength: settings->GatewayAcceptedCertLength = cnv.c; break; case FreeRDP_GatewayCredentialsSource: settings->GatewayCredentialsSource = cnv.c; break; case FreeRDP_GatewayPort: settings->GatewayPort = cnv.c; break; case FreeRDP_GatewayUsageMethod: settings->GatewayUsageMethod = cnv.c; break; case FreeRDP_GfxCapsFilter: settings->GfxCapsFilter = cnv.c; break; case FreeRDP_GlyphSupportLevel: settings->GlyphSupportLevel = cnv.c; break; case FreeRDP_JpegCodecId: settings->JpegCodecId = cnv.c; break; case FreeRDP_JpegQuality: settings->JpegQuality = cnv.c; break; case FreeRDP_KeySpec: settings->KeySpec = cnv.c; break; case FreeRDP_KeyboardCodePage: settings->KeyboardCodePage = cnv.c; break; case FreeRDP_KeyboardFunctionKey: settings->KeyboardFunctionKey = cnv.c; break; case FreeRDP_KeyboardHook: settings->KeyboardHook = cnv.c; break; case FreeRDP_KeyboardLayout: settings->KeyboardLayout = cnv.c; break; case FreeRDP_KeyboardSubType: settings->KeyboardSubType = cnv.c; break; case FreeRDP_KeyboardType: settings->KeyboardType = cnv.c; break; case FreeRDP_LargePointerFlag: settings->LargePointerFlag = cnv.c; break; case FreeRDP_LoadBalanceInfoLength: settings->LoadBalanceInfoLength = cnv.c; break; case FreeRDP_MonitorAttributeFlags: settings->MonitorAttributeFlags = cnv.c; break; case FreeRDP_MonitorCount: settings->MonitorCount = cnv.c; break; case FreeRDP_MonitorDefArraySize: settings->MonitorDefArraySize = cnv.c; break; case FreeRDP_MonitorFlags: settings->MonitorFlags = cnv.c; break; case FreeRDP_MonitorLocalShiftX: settings->MonitorLocalShiftX = cnv.c; break; case FreeRDP_MonitorLocalShiftY: settings->MonitorLocalShiftY = cnv.c; break; case FreeRDP_MultifragMaxRequestSize: settings->MultifragMaxRequestSize = cnv.c; break; case FreeRDP_MultitransportFlags: settings->MultitransportFlags = cnv.c; break; case FreeRDP_NSCodecColorLossLevel: settings->NSCodecColorLossLevel = cnv.c; break; case FreeRDP_NSCodecId: settings->NSCodecId = cnv.c; break; case FreeRDP_NegotiationFlags: settings->NegotiationFlags = cnv.c; break; case FreeRDP_NumMonitorIds: settings->NumMonitorIds = cnv.c; break; case FreeRDP_OffscreenCacheEntries: settings->OffscreenCacheEntries = cnv.c; break; case FreeRDP_OffscreenCacheSize: settings->OffscreenCacheSize = cnv.c; break; case FreeRDP_OffscreenSupportLevel: settings->OffscreenSupportLevel = cnv.c; break; case FreeRDP_OsMajorType: settings->OsMajorType = cnv.c; break; case FreeRDP_OsMinorType: settings->OsMinorType = cnv.c; break; case FreeRDP_Password51Length: settings->Password51Length = cnv.c; break; case FreeRDP_PduSource: settings->PduSource = cnv.c; break; case FreeRDP_PercentScreen: settings->PercentScreen = cnv.c; break; case FreeRDP_PerformanceFlags: settings->PerformanceFlags = cnv.c; break; case FreeRDP_PointerCacheSize: settings->PointerCacheSize = cnv.c; break; case FreeRDP_PreconnectionId: settings->PreconnectionId = cnv.c; break; case FreeRDP_ProxyType: settings->ProxyType = cnv.c; break; case FreeRDP_RdpVersion: settings->RdpVersion = cnv.c; break; case FreeRDP_ReceivedCapabilitiesSize: settings->ReceivedCapabilitiesSize = cnv.c; break; case FreeRDP_RedirectedSessionId: settings->RedirectedSessionId = cnv.c; break; case FreeRDP_RedirectionAcceptedCertLength: settings->RedirectionAcceptedCertLength = cnv.c; break; case FreeRDP_RedirectionFlags: settings->RedirectionFlags = cnv.c; break; case FreeRDP_RedirectionGuidLength: settings->RedirectionGuidLength = cnv.c; break; case FreeRDP_RedirectionPasswordLength: settings->RedirectionPasswordLength = cnv.c; break; case FreeRDP_RedirectionPreferType: settings->RedirectionPreferType = cnv.c; break; case FreeRDP_RedirectionTsvUrlLength: settings->RedirectionTsvUrlLength = cnv.c; break; case FreeRDP_RemoteAppNumIconCacheEntries: settings->RemoteAppNumIconCacheEntries = cnv.c; break; case FreeRDP_RemoteAppNumIconCaches: settings->RemoteAppNumIconCaches = cnv.c; break; case FreeRDP_RemoteApplicationExpandCmdLine: settings->RemoteApplicationExpandCmdLine = cnv.c; break; case FreeRDP_RemoteApplicationExpandWorkingDir: settings->RemoteApplicationExpandWorkingDir = cnv.c; break; case FreeRDP_RemoteApplicationSupportLevel: settings->RemoteApplicationSupportLevel = cnv.c; break; case FreeRDP_RemoteApplicationSupportMask: settings->RemoteApplicationSupportMask = cnv.c; break; case FreeRDP_RemoteFxCaptureFlags: settings->RemoteFxCaptureFlags = cnv.c; break; case FreeRDP_RemoteFxCodecId: settings->RemoteFxCodecId = cnv.c; break; case FreeRDP_RemoteFxCodecMode: settings->RemoteFxCodecMode = cnv.c; break; case FreeRDP_RemoteFxRlgrMode: settings->RemoteFxRlgrMode = cnv.c; break; case FreeRDP_RemoteWndSupportLevel: settings->RemoteWndSupportLevel = cnv.c; break; case FreeRDP_RequestedProtocols: settings->RequestedProtocols = cnv.c; break; case FreeRDP_SelectedProtocol: settings->SelectedProtocol = cnv.c; break; case FreeRDP_ServerCertificateLength: settings->ServerCertificateLength = cnv.c; break; case FreeRDP_ServerLicenseProductIssuersCount: settings->ServerLicenseProductIssuersCount = cnv.c; break; case FreeRDP_ServerLicenseProductVersion: settings->ServerLicenseProductVersion = cnv.c; break; case FreeRDP_ServerPort: settings->ServerPort = cnv.c; break; case FreeRDP_ServerRandomLength: settings->ServerRandomLength = cnv.c; break; case FreeRDP_ShareId: settings->ShareId = cnv.c; break; case FreeRDP_SmartSizingHeight: settings->SmartSizingHeight = cnv.c; break; case FreeRDP_SmartSizingWidth: settings->SmartSizingWidth = cnv.c; break; case FreeRDP_StaticChannelArraySize: settings->StaticChannelArraySize = cnv.c; break; case FreeRDP_StaticChannelCount: settings->StaticChannelCount = cnv.c; break; case FreeRDP_SurfaceCommandsSupported: settings->SurfaceCommandsSupported = cnv.c; break; case FreeRDP_TargetNetAddressCount: settings->TargetNetAddressCount = cnv.c; break; case FreeRDP_TcpAckTimeout: settings->TcpAckTimeout = cnv.c; break; case FreeRDP_TcpConnectTimeout: settings->TcpConnectTimeout = cnv.c; break; case FreeRDP_TcpKeepAliveDelay: settings->TcpKeepAliveDelay = cnv.c; break; case FreeRDP_TcpKeepAliveInterval: settings->TcpKeepAliveInterval = cnv.c; break; case FreeRDP_TcpKeepAliveRetries: settings->TcpKeepAliveRetries = cnv.c; break; case FreeRDP_ThreadingFlags: settings->ThreadingFlags = cnv.c; break; case FreeRDP_TlsSecLevel: settings->TlsSecLevel = cnv.c; break; case FreeRDP_VCChunkSize: settings->VCChunkSize = cnv.c; break; case FreeRDP_VCFlags: settings->VCFlags = cnv.c; break; default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); return FALSE; } return TRUE; } INT32 freerdp_settings_get_int32(const rdpSettings* settings, FreeRDP_Settings_Keys_Int32 id) { WINPR_ASSERT(settings); switch (id) { case FreeRDP_XPan: return settings->XPan; case FreeRDP_YPan: return settings->YPan; default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); WINPR_ASSERT(FALSE); return 0; } } BOOL freerdp_settings_set_int32(rdpSettings* settings, FreeRDP_Settings_Keys_Int32 id, INT32 val) { union { void* v; const void* cv; INT32 c; const INT32 cc; } cnv; WINPR_ASSERT(settings); cnv.c = val; switch (id) { case FreeRDP_XPan: settings->XPan = cnv.c; break; case FreeRDP_YPan: settings->YPan = cnv.c; break; default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); return FALSE; } return TRUE; } UINT64 freerdp_settings_get_uint64(const rdpSettings* settings, FreeRDP_Settings_Keys_UInt64 id) { WINPR_ASSERT(settings); switch (id) { case FreeRDP_ParentWindowId: return settings->ParentWindowId; default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); WINPR_ASSERT(FALSE); return 0; } } BOOL freerdp_settings_set_uint64(rdpSettings* settings, FreeRDP_Settings_Keys_UInt64 id, UINT64 val) { union { void* v; const void* cv; UINT64 c; const UINT64 cc; } cnv; WINPR_ASSERT(settings); cnv.c = val; switch (id) { case FreeRDP_ParentWindowId: settings->ParentWindowId = cnv.c; break; default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); return FALSE; } return TRUE; } INT64 freerdp_settings_get_int64(const rdpSettings* settings, FreeRDP_Settings_Keys_Int64 id) { WINPR_ASSERT(settings); switch (id) { default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); WINPR_ASSERT(FALSE); return 0; } } BOOL freerdp_settings_set_int64(rdpSettings* settings, FreeRDP_Settings_Keys_Int64 id, INT64 val) { union { void* v; const void* cv; INT64 c; const INT64 cc; } cnv; WINPR_ASSERT(settings); cnv.c = val; switch (id) { default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); return FALSE; } return TRUE; } const char* freerdp_settings_get_string(const rdpSettings* settings, FreeRDP_Settings_Keys_String id) { WINPR_ASSERT(settings); switch (id) { case FreeRDP_AadServerHostname: return settings->AadServerHostname; case FreeRDP_AcceptedCert: return settings->AcceptedCert; case FreeRDP_ActionScript: return settings->ActionScript; case FreeRDP_AllowedTlsCiphers: return settings->AllowedTlsCiphers; case FreeRDP_AlternateShell: return settings->AlternateShell; case FreeRDP_AssistanceFile: return settings->AssistanceFile; case FreeRDP_AuthenticationPackageList: return settings->AuthenticationPackageList; case FreeRDP_AuthenticationServiceClass: return settings->AuthenticationServiceClass; case FreeRDP_BitmapCachePersistFile: return settings->BitmapCachePersistFile; case FreeRDP_CardName: return settings->CardName; case FreeRDP_CertificateAcceptedFingerprints: return settings->CertificateAcceptedFingerprints; case FreeRDP_CertificateName: return settings->CertificateName; case FreeRDP_ClientAddress: return settings->ClientAddress; case FreeRDP_ClientDir: return settings->ClientDir; case FreeRDP_ClientHostname: return settings->ClientHostname; case FreeRDP_ClientProductId: return settings->ClientProductId; case FreeRDP_ClipboardUseSelection: return settings->ClipboardUseSelection; case FreeRDP_ComputerName: return settings->ComputerName; case FreeRDP_ConfigPath: return settings->ConfigPath; case FreeRDP_ConnectionFile: return settings->ConnectionFile; case FreeRDP_ContainerName: return settings->ContainerName; case FreeRDP_CspName: return settings->CspName; case FreeRDP_CurrentPath: return settings->CurrentPath; case FreeRDP_Domain: return settings->Domain; case FreeRDP_DrivesToRedirect: return settings->DrivesToRedirect; case FreeRDP_DumpRemoteFxFile: return settings->DumpRemoteFxFile; case FreeRDP_DynamicDSTTimeZoneKeyName: return settings->DynamicDSTTimeZoneKeyName; case FreeRDP_GatewayAcceptedCert: return settings->GatewayAcceptedCert; case FreeRDP_GatewayAccessToken: return settings->GatewayAccessToken; case FreeRDP_GatewayAvdAadtenantid: return settings->GatewayAvdAadtenantid; case FreeRDP_GatewayAvdActivityhint: return settings->GatewayAvdActivityhint; case FreeRDP_GatewayAvdArmpath: return settings->GatewayAvdArmpath; case FreeRDP_GatewayAvdDiagnosticserviceurl: return settings->GatewayAvdDiagnosticserviceurl; case FreeRDP_GatewayAvdGeo: return settings->GatewayAvdGeo; case FreeRDP_GatewayAvdHubdiscoverygeourl: return settings->GatewayAvdHubdiscoverygeourl; case FreeRDP_GatewayAvdWvdEndpointPool: return settings->GatewayAvdWvdEndpointPool; case FreeRDP_GatewayDomain: return settings->GatewayDomain; case FreeRDP_GatewayHostname: return settings->GatewayHostname; case FreeRDP_GatewayHttpExtAuthBearer: return settings->GatewayHttpExtAuthBearer; case FreeRDP_GatewayPassword: return settings->GatewayPassword; case FreeRDP_GatewayUrl: return settings->GatewayUrl; case FreeRDP_GatewayUsername: return settings->GatewayUsername; case FreeRDP_HomePath: return settings->HomePath; case FreeRDP_ImeFileName: return settings->ImeFileName; case FreeRDP_KerberosArmor: return settings->KerberosArmor; case FreeRDP_KerberosCache: return settings->KerberosCache; case FreeRDP_KerberosKdcUrl: return settings->KerberosKdcUrl; case FreeRDP_KerberosKeytab: return settings->KerberosKeytab; case FreeRDP_KerberosLifeTime: return settings->KerberosLifeTime; case FreeRDP_KerberosRealm: return settings->KerberosRealm; case FreeRDP_KerberosRenewableLifeTime: return settings->KerberosRenewableLifeTime; case FreeRDP_KerberosStartTime: return settings->KerberosStartTime; case FreeRDP_KeyboardPipeName: return settings->KeyboardPipeName; case FreeRDP_KeyboardRemappingList: return settings->KeyboardRemappingList; case FreeRDP_NtlmSamFile: return settings->NtlmSamFile; case FreeRDP_Password: return settings->Password; case FreeRDP_PasswordHash: return settings->PasswordHash; case FreeRDP_Pkcs11Module: return settings->Pkcs11Module; case FreeRDP_PkinitAnchors: return settings->PkinitAnchors; case FreeRDP_PlayRemoteFxFile: return settings->PlayRemoteFxFile; case FreeRDP_PreconnectionBlob: return settings->PreconnectionBlob; case FreeRDP_ProxyHostname: return settings->ProxyHostname; case FreeRDP_ProxyPassword: return settings->ProxyPassword; case FreeRDP_ProxyUsername: return settings->ProxyUsername; case FreeRDP_RDP2TCPArgs: return settings->RDP2TCPArgs; case FreeRDP_ReaderName: return settings->ReaderName; case FreeRDP_RedirectionAcceptedCert: return settings->RedirectionAcceptedCert; case FreeRDP_RedirectionDomain: return settings->RedirectionDomain; case FreeRDP_RedirectionTargetFQDN: return settings->RedirectionTargetFQDN; case FreeRDP_RedirectionTargetNetBiosName: return settings->RedirectionTargetNetBiosName; case FreeRDP_RedirectionUsername: return settings->RedirectionUsername; case FreeRDP_RemoteApplicationCmdLine: return settings->RemoteApplicationCmdLine; case FreeRDP_RemoteApplicationFile: return settings->RemoteApplicationFile; case FreeRDP_RemoteApplicationGuid: return settings->RemoteApplicationGuid; case FreeRDP_RemoteApplicationIcon: return settings->RemoteApplicationIcon; case FreeRDP_RemoteApplicationName: return settings->RemoteApplicationName; case FreeRDP_RemoteApplicationProgram: return settings->RemoteApplicationProgram; case FreeRDP_RemoteApplicationWorkingDir: return settings->RemoteApplicationWorkingDir; case FreeRDP_RemoteAssistancePassStub: return settings->RemoteAssistancePassStub; case FreeRDP_RemoteAssistancePassword: return settings->RemoteAssistancePassword; case FreeRDP_RemoteAssistanceRCTicket: return settings->RemoteAssistanceRCTicket; case FreeRDP_RemoteAssistanceSessionId: return settings->RemoteAssistanceSessionId; case FreeRDP_ServerHostname: return settings->ServerHostname; case FreeRDP_ServerLicenseCompanyName: return settings->ServerLicenseCompanyName; case FreeRDP_ServerLicenseProductName: return settings->ServerLicenseProductName; case FreeRDP_ShellWorkingDirectory: return settings->ShellWorkingDirectory; case FreeRDP_SmartcardCertificate: return settings->SmartcardCertificate; case FreeRDP_SmartcardPrivateKey: return settings->SmartcardPrivateKey; case FreeRDP_SspiModule: return settings->SspiModule; case FreeRDP_TargetNetAddress: return settings->TargetNetAddress; case FreeRDP_TerminalDescriptor: return settings->TerminalDescriptor; case FreeRDP_TlsSecretsFile: return settings->TlsSecretsFile; case FreeRDP_TransportDumpFile: return settings->TransportDumpFile; case FreeRDP_UserSpecifiedServerName: return settings->UserSpecifiedServerName; case FreeRDP_Username: return settings->Username; case FreeRDP_WinSCardModule: return settings->WinSCardModule; case FreeRDP_WindowTitle: return settings->WindowTitle; case FreeRDP_WmClass: return settings->WmClass; default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); WINPR_ASSERT(FALSE); return NULL; } } char* freerdp_settings_get_string_writable(rdpSettings* settings, FreeRDP_Settings_Keys_String id) { WINPR_ASSERT(settings); switch (id) { case FreeRDP_AadServerHostname: return settings->AadServerHostname; case FreeRDP_AcceptedCert: return settings->AcceptedCert; case FreeRDP_ActionScript: return settings->ActionScript; case FreeRDP_AllowedTlsCiphers: return settings->AllowedTlsCiphers; case FreeRDP_AlternateShell: return settings->AlternateShell; case FreeRDP_AssistanceFile: return settings->AssistanceFile; case FreeRDP_AuthenticationPackageList: return settings->AuthenticationPackageList; case FreeRDP_AuthenticationServiceClass: return settings->AuthenticationServiceClass; case FreeRDP_BitmapCachePersistFile: return settings->BitmapCachePersistFile; case FreeRDP_CardName: return settings->CardName; case FreeRDP_CertificateAcceptedFingerprints: return settings->CertificateAcceptedFingerprints; case FreeRDP_CertificateName: return settings->CertificateName; case FreeRDP_ClientAddress: return settings->ClientAddress; case FreeRDP_ClientDir: return settings->ClientDir; case FreeRDP_ClientHostname: return settings->ClientHostname; case FreeRDP_ClientProductId: return settings->ClientProductId; case FreeRDP_ClipboardUseSelection: return settings->ClipboardUseSelection; case FreeRDP_ComputerName: return settings->ComputerName; case FreeRDP_ConfigPath: return settings->ConfigPath; case FreeRDP_ConnectionFile: return settings->ConnectionFile; case FreeRDP_ContainerName: return settings->ContainerName; case FreeRDP_CspName: return settings->CspName; case FreeRDP_CurrentPath: return settings->CurrentPath; case FreeRDP_Domain: return settings->Domain; case FreeRDP_DrivesToRedirect: return settings->DrivesToRedirect; case FreeRDP_DumpRemoteFxFile: return settings->DumpRemoteFxFile; case FreeRDP_DynamicDSTTimeZoneKeyName: return settings->DynamicDSTTimeZoneKeyName; case FreeRDP_GatewayAcceptedCert: return settings->GatewayAcceptedCert; case FreeRDP_GatewayAccessToken: return settings->GatewayAccessToken; case FreeRDP_GatewayAvdAadtenantid: return settings->GatewayAvdAadtenantid; case FreeRDP_GatewayAvdActivityhint: return settings->GatewayAvdActivityhint; case FreeRDP_GatewayAvdArmpath: return settings->GatewayAvdArmpath; case FreeRDP_GatewayAvdDiagnosticserviceurl: return settings->GatewayAvdDiagnosticserviceurl; case FreeRDP_GatewayAvdGeo: return settings->GatewayAvdGeo; case FreeRDP_GatewayAvdHubdiscoverygeourl: return settings->GatewayAvdHubdiscoverygeourl; case FreeRDP_GatewayAvdWvdEndpointPool: return settings->GatewayAvdWvdEndpointPool; case FreeRDP_GatewayDomain: return settings->GatewayDomain; case FreeRDP_GatewayHostname: return settings->GatewayHostname; case FreeRDP_GatewayHttpExtAuthBearer: return settings->GatewayHttpExtAuthBearer; case FreeRDP_GatewayPassword: return settings->GatewayPassword; case FreeRDP_GatewayUrl: return settings->GatewayUrl; case FreeRDP_GatewayUsername: return settings->GatewayUsername; case FreeRDP_HomePath: return settings->HomePath; case FreeRDP_ImeFileName: return settings->ImeFileName; case FreeRDP_KerberosArmor: return settings->KerberosArmor; case FreeRDP_KerberosCache: return settings->KerberosCache; case FreeRDP_KerberosKdcUrl: return settings->KerberosKdcUrl; case FreeRDP_KerberosKeytab: return settings->KerberosKeytab; case FreeRDP_KerberosLifeTime: return settings->KerberosLifeTime; case FreeRDP_KerberosRealm: return settings->KerberosRealm; case FreeRDP_KerberosRenewableLifeTime: return settings->KerberosRenewableLifeTime; case FreeRDP_KerberosStartTime: return settings->KerberosStartTime; case FreeRDP_KeyboardPipeName: return settings->KeyboardPipeName; case FreeRDP_KeyboardRemappingList: return settings->KeyboardRemappingList; case FreeRDP_NtlmSamFile: return settings->NtlmSamFile; case FreeRDP_Password: return settings->Password; case FreeRDP_PasswordHash: return settings->PasswordHash; case FreeRDP_Pkcs11Module: return settings->Pkcs11Module; case FreeRDP_PkinitAnchors: return settings->PkinitAnchors; case FreeRDP_PlayRemoteFxFile: return settings->PlayRemoteFxFile; case FreeRDP_PreconnectionBlob: return settings->PreconnectionBlob; case FreeRDP_ProxyHostname: return settings->ProxyHostname; case FreeRDP_ProxyPassword: return settings->ProxyPassword; case FreeRDP_ProxyUsername: return settings->ProxyUsername; case FreeRDP_RDP2TCPArgs: return settings->RDP2TCPArgs; case FreeRDP_ReaderName: return settings->ReaderName; case FreeRDP_RedirectionAcceptedCert: return settings->RedirectionAcceptedCert; case FreeRDP_RedirectionDomain: return settings->RedirectionDomain; case FreeRDP_RedirectionTargetFQDN: return settings->RedirectionTargetFQDN; case FreeRDP_RedirectionTargetNetBiosName: return settings->RedirectionTargetNetBiosName; case FreeRDP_RedirectionUsername: return settings->RedirectionUsername; case FreeRDP_RemoteApplicationCmdLine: return settings->RemoteApplicationCmdLine; case FreeRDP_RemoteApplicationFile: return settings->RemoteApplicationFile; case FreeRDP_RemoteApplicationGuid: return settings->RemoteApplicationGuid; case FreeRDP_RemoteApplicationIcon: return settings->RemoteApplicationIcon; case FreeRDP_RemoteApplicationName: return settings->RemoteApplicationName; case FreeRDP_RemoteApplicationProgram: return settings->RemoteApplicationProgram; case FreeRDP_RemoteApplicationWorkingDir: return settings->RemoteApplicationWorkingDir; case FreeRDP_RemoteAssistancePassStub: return settings->RemoteAssistancePassStub; case FreeRDP_RemoteAssistancePassword: return settings->RemoteAssistancePassword; case FreeRDP_RemoteAssistanceRCTicket: return settings->RemoteAssistanceRCTicket; case FreeRDP_RemoteAssistanceSessionId: return settings->RemoteAssistanceSessionId; case FreeRDP_ServerHostname: return settings->ServerHostname; case FreeRDP_ServerLicenseCompanyName: return settings->ServerLicenseCompanyName; case FreeRDP_ServerLicenseProductName: return settings->ServerLicenseProductName; case FreeRDP_ShellWorkingDirectory: return settings->ShellWorkingDirectory; case FreeRDP_SmartcardCertificate: return settings->SmartcardCertificate; case FreeRDP_SmartcardPrivateKey: return settings->SmartcardPrivateKey; case FreeRDP_SspiModule: return settings->SspiModule; case FreeRDP_TargetNetAddress: return settings->TargetNetAddress; case FreeRDP_TerminalDescriptor: return settings->TerminalDescriptor; case FreeRDP_TlsSecretsFile: return settings->TlsSecretsFile; case FreeRDP_TransportDumpFile: return settings->TransportDumpFile; case FreeRDP_UserSpecifiedServerName: return settings->UserSpecifiedServerName; case FreeRDP_Username: return settings->Username; case FreeRDP_WinSCardModule: return settings->WinSCardModule; case FreeRDP_WindowTitle: return settings->WindowTitle; case FreeRDP_WmClass: return settings->WmClass; default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); WINPR_ASSERT(FALSE); return NULL; } } BOOL freerdp_settings_set_string_(rdpSettings* settings, FreeRDP_Settings_Keys_String id, const char* val, size_t len) { union { void* v; const void* cv; char* c; const char* cc; } cnv; WINPR_ASSERT(settings); cnv.cc = val; switch (id) { case FreeRDP_AadServerHostname: return update_string_(&settings->AadServerHostname, cnv.c, len); case FreeRDP_AcceptedCert: return update_string_(&settings->AcceptedCert, cnv.c, len); case FreeRDP_ActionScript: return update_string_(&settings->ActionScript, cnv.c, len); case FreeRDP_AllowedTlsCiphers: return update_string_(&settings->AllowedTlsCiphers, cnv.c, len); case FreeRDP_AlternateShell: return update_string_(&settings->AlternateShell, cnv.c, len); case FreeRDP_AssistanceFile: return update_string_(&settings->AssistanceFile, cnv.c, len); case FreeRDP_AuthenticationPackageList: return update_string_(&settings->AuthenticationPackageList, cnv.c, len); case FreeRDP_AuthenticationServiceClass: return update_string_(&settings->AuthenticationServiceClass, cnv.c, len); case FreeRDP_BitmapCachePersistFile: return update_string_(&settings->BitmapCachePersistFile, cnv.c, len); case FreeRDP_CardName: return update_string_(&settings->CardName, cnv.c, len); case FreeRDP_CertificateAcceptedFingerprints: return update_string_(&settings->CertificateAcceptedFingerprints, cnv.c, len); case FreeRDP_CertificateName: return update_string_(&settings->CertificateName, cnv.c, len); case FreeRDP_ClientAddress: return update_string_(&settings->ClientAddress, cnv.c, len); case FreeRDP_ClientDir: return update_string_(&settings->ClientDir, cnv.c, len); case FreeRDP_ClientHostname: return update_string_(&settings->ClientHostname, cnv.c, len); case FreeRDP_ClientProductId: return update_string_(&settings->ClientProductId, cnv.c, len); case FreeRDP_ClipboardUseSelection: return update_string_(&settings->ClipboardUseSelection, cnv.c, len); case FreeRDP_ComputerName: return update_string_(&settings->ComputerName, cnv.c, len); case FreeRDP_ConfigPath: return update_string_(&settings->ConfigPath, cnv.c, len); case FreeRDP_ConnectionFile: return update_string_(&settings->ConnectionFile, cnv.c, len); case FreeRDP_ContainerName: return update_string_(&settings->ContainerName, cnv.c, len); case FreeRDP_CspName: return update_string_(&settings->CspName, cnv.c, len); case FreeRDP_CurrentPath: return update_string_(&settings->CurrentPath, cnv.c, len); case FreeRDP_Domain: return update_string_(&settings->Domain, cnv.c, len); case FreeRDP_DrivesToRedirect: return update_string_(&settings->DrivesToRedirect, cnv.c, len); case FreeRDP_DumpRemoteFxFile: return update_string_(&settings->DumpRemoteFxFile, cnv.c, len); case FreeRDP_DynamicDSTTimeZoneKeyName: return update_string_(&settings->DynamicDSTTimeZoneKeyName, cnv.c, len); case FreeRDP_GatewayAcceptedCert: return update_string_(&settings->GatewayAcceptedCert, cnv.c, len); case FreeRDP_GatewayAccessToken: return update_string_(&settings->GatewayAccessToken, cnv.c, len); case FreeRDP_GatewayAvdAadtenantid: return update_string_(&settings->GatewayAvdAadtenantid, cnv.c, len); case FreeRDP_GatewayAvdActivityhint: return update_string_(&settings->GatewayAvdActivityhint, cnv.c, len); case FreeRDP_GatewayAvdArmpath: return update_string_(&settings->GatewayAvdArmpath, cnv.c, len); case FreeRDP_GatewayAvdDiagnosticserviceurl: return update_string_(&settings->GatewayAvdDiagnosticserviceurl, cnv.c, len); case FreeRDP_GatewayAvdGeo: return update_string_(&settings->GatewayAvdGeo, cnv.c, len); case FreeRDP_GatewayAvdHubdiscoverygeourl: return update_string_(&settings->GatewayAvdHubdiscoverygeourl, cnv.c, len); case FreeRDP_GatewayAvdWvdEndpointPool: return update_string_(&settings->GatewayAvdWvdEndpointPool, cnv.c, len); case FreeRDP_GatewayDomain: return update_string_(&settings->GatewayDomain, cnv.c, len); case FreeRDP_GatewayHostname: return update_string_(&settings->GatewayHostname, cnv.c, len); case FreeRDP_GatewayHttpExtAuthBearer: return update_string_(&settings->GatewayHttpExtAuthBearer, cnv.c, len); case FreeRDP_GatewayPassword: return update_string_(&settings->GatewayPassword, cnv.c, len); case FreeRDP_GatewayUrl: return update_string_(&settings->GatewayUrl, cnv.c, len); case FreeRDP_GatewayUsername: return update_string_(&settings->GatewayUsername, cnv.c, len); case FreeRDP_HomePath: return update_string_(&settings->HomePath, cnv.c, len); case FreeRDP_ImeFileName: return update_string_(&settings->ImeFileName, cnv.c, len); case FreeRDP_KerberosArmor: return update_string_(&settings->KerberosArmor, cnv.c, len); case FreeRDP_KerberosCache: return update_string_(&settings->KerberosCache, cnv.c, len); case FreeRDP_KerberosKdcUrl: return update_string_(&settings->KerberosKdcUrl, cnv.c, len); case FreeRDP_KerberosKeytab: return update_string_(&settings->KerberosKeytab, cnv.c, len); case FreeRDP_KerberosLifeTime: return update_string_(&settings->KerberosLifeTime, cnv.c, len); case FreeRDP_KerberosRealm: return update_string_(&settings->KerberosRealm, cnv.c, len); case FreeRDP_KerberosRenewableLifeTime: return update_string_(&settings->KerberosRenewableLifeTime, cnv.c, len); case FreeRDP_KerberosStartTime: return update_string_(&settings->KerberosStartTime, cnv.c, len); case FreeRDP_KeyboardPipeName: return update_string_(&settings->KeyboardPipeName, cnv.c, len); case FreeRDP_KeyboardRemappingList: return update_string_(&settings->KeyboardRemappingList, cnv.c, len); case FreeRDP_NtlmSamFile: return update_string_(&settings->NtlmSamFile, cnv.c, len); case FreeRDP_Password: return update_string_(&settings->Password, cnv.c, len); case FreeRDP_PasswordHash: return update_string_(&settings->PasswordHash, cnv.c, len); case FreeRDP_Pkcs11Module: return update_string_(&settings->Pkcs11Module, cnv.c, len); case FreeRDP_PkinitAnchors: return update_string_(&settings->PkinitAnchors, cnv.c, len); case FreeRDP_PlayRemoteFxFile: return update_string_(&settings->PlayRemoteFxFile, cnv.c, len); case FreeRDP_PreconnectionBlob: return update_string_(&settings->PreconnectionBlob, cnv.c, len); case FreeRDP_ProxyHostname: return update_string_(&settings->ProxyHostname, cnv.c, len); case FreeRDP_ProxyPassword: return update_string_(&settings->ProxyPassword, cnv.c, len); case FreeRDP_ProxyUsername: return update_string_(&settings->ProxyUsername, cnv.c, len); case FreeRDP_RDP2TCPArgs: return update_string_(&settings->RDP2TCPArgs, cnv.c, len); case FreeRDP_ReaderName: return update_string_(&settings->ReaderName, cnv.c, len); case FreeRDP_RedirectionAcceptedCert: return update_string_(&settings->RedirectionAcceptedCert, cnv.c, len); case FreeRDP_RedirectionDomain: return update_string_(&settings->RedirectionDomain, cnv.c, len); case FreeRDP_RedirectionTargetFQDN: return update_string_(&settings->RedirectionTargetFQDN, cnv.c, len); case FreeRDP_RedirectionTargetNetBiosName: return update_string_(&settings->RedirectionTargetNetBiosName, cnv.c, len); case FreeRDP_RedirectionUsername: return update_string_(&settings->RedirectionUsername, cnv.c, len); case FreeRDP_RemoteApplicationCmdLine: return update_string_(&settings->RemoteApplicationCmdLine, cnv.c, len); case FreeRDP_RemoteApplicationFile: return update_string_(&settings->RemoteApplicationFile, cnv.c, len); case FreeRDP_RemoteApplicationGuid: return update_string_(&settings->RemoteApplicationGuid, cnv.c, len); case FreeRDP_RemoteApplicationIcon: return update_string_(&settings->RemoteApplicationIcon, cnv.c, len); case FreeRDP_RemoteApplicationName: return update_string_(&settings->RemoteApplicationName, cnv.c, len); case FreeRDP_RemoteApplicationProgram: return update_string_(&settings->RemoteApplicationProgram, cnv.c, len); case FreeRDP_RemoteApplicationWorkingDir: return update_string_(&settings->RemoteApplicationWorkingDir, cnv.c, len); case FreeRDP_RemoteAssistancePassStub: return update_string_(&settings->RemoteAssistancePassStub, cnv.c, len); case FreeRDP_RemoteAssistancePassword: return update_string_(&settings->RemoteAssistancePassword, cnv.c, len); case FreeRDP_RemoteAssistanceRCTicket: return update_string_(&settings->RemoteAssistanceRCTicket, cnv.c, len); case FreeRDP_RemoteAssistanceSessionId: return update_string_(&settings->RemoteAssistanceSessionId, cnv.c, len); case FreeRDP_ServerHostname: return update_string_(&settings->ServerHostname, cnv.c, len); case FreeRDP_ServerLicenseCompanyName: return update_string_(&settings->ServerLicenseCompanyName, cnv.c, len); case FreeRDP_ServerLicenseProductName: return update_string_(&settings->ServerLicenseProductName, cnv.c, len); case FreeRDP_ShellWorkingDirectory: return update_string_(&settings->ShellWorkingDirectory, cnv.c, len); case FreeRDP_SmartcardCertificate: return update_string_(&settings->SmartcardCertificate, cnv.c, len); case FreeRDP_SmartcardPrivateKey: return update_string_(&settings->SmartcardPrivateKey, cnv.c, len); case FreeRDP_SspiModule: return update_string_(&settings->SspiModule, cnv.c, len); case FreeRDP_TargetNetAddress: return update_string_(&settings->TargetNetAddress, cnv.c, len); case FreeRDP_TerminalDescriptor: return update_string_(&settings->TerminalDescriptor, cnv.c, len); case FreeRDP_TlsSecretsFile: return update_string_(&settings->TlsSecretsFile, cnv.c, len); case FreeRDP_TransportDumpFile: return update_string_(&settings->TransportDumpFile, cnv.c, len); case FreeRDP_UserSpecifiedServerName: return update_string_(&settings->UserSpecifiedServerName, cnv.c, len); case FreeRDP_Username: return update_string_(&settings->Username, cnv.c, len); case FreeRDP_WinSCardModule: return update_string_(&settings->WinSCardModule, cnv.c, len); case FreeRDP_WindowTitle: return update_string_(&settings->WindowTitle, cnv.c, len); case FreeRDP_WmClass: return update_string_(&settings->WmClass, cnv.c, len); default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); return FALSE; } return TRUE; } BOOL freerdp_settings_set_string_len(rdpSettings* settings, FreeRDP_Settings_Keys_String id, const char* val, size_t len) { return freerdp_settings_set_string_copy_(settings, id, val, len, TRUE); } BOOL freerdp_settings_set_string(rdpSettings* settings, FreeRDP_Settings_Keys_String id, const char* val) { size_t len = 0; if (val) len = strlen(val); return freerdp_settings_set_string_copy_(settings, id, val, len, TRUE); } BOOL freerdp_settings_set_string_copy_(rdpSettings* settings, FreeRDP_Settings_Keys_String id, const char* val, size_t len, BOOL cleanup) { union { void* v; const void* cv; char* c; const char* cc; } cnv; WINPR_ASSERT(settings); cnv.cc = val; switch (id) { case FreeRDP_AadServerHostname: return update_string_copy_(&settings->AadServerHostname, cnv.cc, len, cleanup); case FreeRDP_AcceptedCert: return update_string_copy_(&settings->AcceptedCert, cnv.cc, len, cleanup); case FreeRDP_ActionScript: return update_string_copy_(&settings->ActionScript, cnv.cc, len, cleanup); case FreeRDP_AllowedTlsCiphers: return update_string_copy_(&settings->AllowedTlsCiphers, cnv.cc, len, cleanup); case FreeRDP_AlternateShell: return update_string_copy_(&settings->AlternateShell, cnv.cc, len, cleanup); case FreeRDP_AssistanceFile: return update_string_copy_(&settings->AssistanceFile, cnv.cc, len, cleanup); case FreeRDP_AuthenticationPackageList: return update_string_copy_(&settings->AuthenticationPackageList, cnv.cc, len, cleanup); case FreeRDP_AuthenticationServiceClass: return update_string_copy_(&settings->AuthenticationServiceClass, cnv.cc, len, cleanup); case FreeRDP_BitmapCachePersistFile: return update_string_copy_(&settings->BitmapCachePersistFile, cnv.cc, len, cleanup); case FreeRDP_CardName: return update_string_copy_(&settings->CardName, cnv.cc, len, cleanup); case FreeRDP_CertificateAcceptedFingerprints: return update_string_copy_(&settings->CertificateAcceptedFingerprints, cnv.cc, len, cleanup); case FreeRDP_CertificateName: return update_string_copy_(&settings->CertificateName, cnv.cc, len, cleanup); case FreeRDP_ClientAddress: return update_string_copy_(&settings->ClientAddress, cnv.cc, len, cleanup); case FreeRDP_ClientDir: return update_string_copy_(&settings->ClientDir, cnv.cc, len, cleanup); case FreeRDP_ClientHostname: return update_string_copy_(&settings->ClientHostname, cnv.cc, len, cleanup); case FreeRDP_ClientProductId: return update_string_copy_(&settings->ClientProductId, cnv.cc, len, cleanup); case FreeRDP_ClipboardUseSelection: return update_string_copy_(&settings->ClipboardUseSelection, cnv.cc, len, cleanup); case FreeRDP_ComputerName: return update_string_copy_(&settings->ComputerName, cnv.cc, len, cleanup); case FreeRDP_ConfigPath: return update_string_copy_(&settings->ConfigPath, cnv.cc, len, cleanup); case FreeRDP_ConnectionFile: return update_string_copy_(&settings->ConnectionFile, cnv.cc, len, cleanup); case FreeRDP_ContainerName: return update_string_copy_(&settings->ContainerName, cnv.cc, len, cleanup); case FreeRDP_CspName: return update_string_copy_(&settings->CspName, cnv.cc, len, cleanup); case FreeRDP_CurrentPath: return update_string_copy_(&settings->CurrentPath, cnv.cc, len, cleanup); case FreeRDP_Domain: return update_string_copy_(&settings->Domain, cnv.cc, len, cleanup); case FreeRDP_DrivesToRedirect: return update_string_copy_(&settings->DrivesToRedirect, cnv.cc, len, cleanup); case FreeRDP_DumpRemoteFxFile: return update_string_copy_(&settings->DumpRemoteFxFile, cnv.cc, len, cleanup); case FreeRDP_DynamicDSTTimeZoneKeyName: return update_string_copy_(&settings->DynamicDSTTimeZoneKeyName, cnv.cc, len, cleanup); case FreeRDP_GatewayAcceptedCert: return update_string_copy_(&settings->GatewayAcceptedCert, cnv.cc, len, cleanup); case FreeRDP_GatewayAccessToken: return update_string_copy_(&settings->GatewayAccessToken, cnv.cc, len, cleanup); case FreeRDP_GatewayAvdAadtenantid: return update_string_copy_(&settings->GatewayAvdAadtenantid, cnv.cc, len, cleanup); case FreeRDP_GatewayAvdActivityhint: return update_string_copy_(&settings->GatewayAvdActivityhint, cnv.cc, len, cleanup); case FreeRDP_GatewayAvdArmpath: return update_string_copy_(&settings->GatewayAvdArmpath, cnv.cc, len, cleanup); case FreeRDP_GatewayAvdDiagnosticserviceurl: return update_string_copy_(&settings->GatewayAvdDiagnosticserviceurl, cnv.cc, len, cleanup); case FreeRDP_GatewayAvdGeo: return update_string_copy_(&settings->GatewayAvdGeo, cnv.cc, len, cleanup); case FreeRDP_GatewayAvdHubdiscoverygeourl: return update_string_copy_(&settings->GatewayAvdHubdiscoverygeourl, cnv.cc, len, cleanup); case FreeRDP_GatewayAvdWvdEndpointPool: return update_string_copy_(&settings->GatewayAvdWvdEndpointPool, cnv.cc, len, cleanup); case FreeRDP_GatewayDomain: return update_string_copy_(&settings->GatewayDomain, cnv.cc, len, cleanup); case FreeRDP_GatewayHostname: return update_string_copy_(&settings->GatewayHostname, cnv.cc, len, cleanup); case FreeRDP_GatewayHttpExtAuthBearer: return update_string_copy_(&settings->GatewayHttpExtAuthBearer, cnv.cc, len, cleanup); case FreeRDP_GatewayPassword: return update_string_copy_(&settings->GatewayPassword, cnv.cc, len, cleanup); case FreeRDP_GatewayUrl: return update_string_copy_(&settings->GatewayUrl, cnv.cc, len, cleanup); case FreeRDP_GatewayUsername: return update_string_copy_(&settings->GatewayUsername, cnv.cc, len, cleanup); case FreeRDP_HomePath: return update_string_copy_(&settings->HomePath, cnv.cc, len, cleanup); case FreeRDP_ImeFileName: return update_string_copy_(&settings->ImeFileName, cnv.cc, len, cleanup); case FreeRDP_KerberosArmor: return update_string_copy_(&settings->KerberosArmor, cnv.cc, len, cleanup); case FreeRDP_KerberosCache: return update_string_copy_(&settings->KerberosCache, cnv.cc, len, cleanup); case FreeRDP_KerberosKdcUrl: return update_string_copy_(&settings->KerberosKdcUrl, cnv.cc, len, cleanup); case FreeRDP_KerberosKeytab: return update_string_copy_(&settings->KerberosKeytab, cnv.cc, len, cleanup); case FreeRDP_KerberosLifeTime: return update_string_copy_(&settings->KerberosLifeTime, cnv.cc, len, cleanup); case FreeRDP_KerberosRealm: return update_string_copy_(&settings->KerberosRealm, cnv.cc, len, cleanup); case FreeRDP_KerberosRenewableLifeTime: return update_string_copy_(&settings->KerberosRenewableLifeTime, cnv.cc, len, cleanup); case FreeRDP_KerberosStartTime: return update_string_copy_(&settings->KerberosStartTime, cnv.cc, len, cleanup); case FreeRDP_KeyboardPipeName: return update_string_copy_(&settings->KeyboardPipeName, cnv.cc, len, cleanup); case FreeRDP_KeyboardRemappingList: return update_string_copy_(&settings->KeyboardRemappingList, cnv.cc, len, cleanup); case FreeRDP_NtlmSamFile: return update_string_copy_(&settings->NtlmSamFile, cnv.cc, len, cleanup); case FreeRDP_Password: return update_string_copy_(&settings->Password, cnv.cc, len, cleanup); case FreeRDP_PasswordHash: return update_string_copy_(&settings->PasswordHash, cnv.cc, len, cleanup); case FreeRDP_Pkcs11Module: return update_string_copy_(&settings->Pkcs11Module, cnv.cc, len, cleanup); case FreeRDP_PkinitAnchors: return update_string_copy_(&settings->PkinitAnchors, cnv.cc, len, cleanup); case FreeRDP_PlayRemoteFxFile: return update_string_copy_(&settings->PlayRemoteFxFile, cnv.cc, len, cleanup); case FreeRDP_PreconnectionBlob: return update_string_copy_(&settings->PreconnectionBlob, cnv.cc, len, cleanup); case FreeRDP_ProxyHostname: return update_string_copy_(&settings->ProxyHostname, cnv.cc, len, cleanup); case FreeRDP_ProxyPassword: return update_string_copy_(&settings->ProxyPassword, cnv.cc, len, cleanup); case FreeRDP_ProxyUsername: return update_string_copy_(&settings->ProxyUsername, cnv.cc, len, cleanup); case FreeRDP_RDP2TCPArgs: return update_string_copy_(&settings->RDP2TCPArgs, cnv.cc, len, cleanup); case FreeRDP_ReaderName: return update_string_copy_(&settings->ReaderName, cnv.cc, len, cleanup); case FreeRDP_RedirectionAcceptedCert: return update_string_copy_(&settings->RedirectionAcceptedCert, cnv.cc, len, cleanup); case FreeRDP_RedirectionDomain: return update_string_copy_(&settings->RedirectionDomain, cnv.cc, len, cleanup); case FreeRDP_RedirectionTargetFQDN: return update_string_copy_(&settings->RedirectionTargetFQDN, cnv.cc, len, cleanup); case FreeRDP_RedirectionTargetNetBiosName: return update_string_copy_(&settings->RedirectionTargetNetBiosName, cnv.cc, len, cleanup); case FreeRDP_RedirectionUsername: return update_string_copy_(&settings->RedirectionUsername, cnv.cc, len, cleanup); case FreeRDP_RemoteApplicationCmdLine: return update_string_copy_(&settings->RemoteApplicationCmdLine, cnv.cc, len, cleanup); case FreeRDP_RemoteApplicationFile: return update_string_copy_(&settings->RemoteApplicationFile, cnv.cc, len, cleanup); case FreeRDP_RemoteApplicationGuid: return update_string_copy_(&settings->RemoteApplicationGuid, cnv.cc, len, cleanup); case FreeRDP_RemoteApplicationIcon: return update_string_copy_(&settings->RemoteApplicationIcon, cnv.cc, len, cleanup); case FreeRDP_RemoteApplicationName: return update_string_copy_(&settings->RemoteApplicationName, cnv.cc, len, cleanup); case FreeRDP_RemoteApplicationProgram: return update_string_copy_(&settings->RemoteApplicationProgram, cnv.cc, len, cleanup); case FreeRDP_RemoteApplicationWorkingDir: return update_string_copy_(&settings->RemoteApplicationWorkingDir, cnv.cc, len, cleanup); case FreeRDP_RemoteAssistancePassStub: return update_string_copy_(&settings->RemoteAssistancePassStub, cnv.cc, len, cleanup); case FreeRDP_RemoteAssistancePassword: return update_string_copy_(&settings->RemoteAssistancePassword, cnv.cc, len, cleanup); case FreeRDP_RemoteAssistanceRCTicket: return update_string_copy_(&settings->RemoteAssistanceRCTicket, cnv.cc, len, cleanup); case FreeRDP_RemoteAssistanceSessionId: return update_string_copy_(&settings->RemoteAssistanceSessionId, cnv.cc, len, cleanup); case FreeRDP_ServerHostname: return update_string_copy_(&settings->ServerHostname, cnv.cc, len, cleanup); case FreeRDP_ServerLicenseCompanyName: return update_string_copy_(&settings->ServerLicenseCompanyName, cnv.cc, len, cleanup); case FreeRDP_ServerLicenseProductName: return update_string_copy_(&settings->ServerLicenseProductName, cnv.cc, len, cleanup); case FreeRDP_ShellWorkingDirectory: return update_string_copy_(&settings->ShellWorkingDirectory, cnv.cc, len, cleanup); case FreeRDP_SmartcardCertificate: return update_string_copy_(&settings->SmartcardCertificate, cnv.cc, len, cleanup); case FreeRDP_SmartcardPrivateKey: return update_string_copy_(&settings->SmartcardPrivateKey, cnv.cc, len, cleanup); case FreeRDP_SspiModule: return update_string_copy_(&settings->SspiModule, cnv.cc, len, cleanup); case FreeRDP_TargetNetAddress: return update_string_copy_(&settings->TargetNetAddress, cnv.cc, len, cleanup); case FreeRDP_TerminalDescriptor: return update_string_copy_(&settings->TerminalDescriptor, cnv.cc, len, cleanup); case FreeRDP_TlsSecretsFile: return update_string_copy_(&settings->TlsSecretsFile, cnv.cc, len, cleanup); case FreeRDP_TransportDumpFile: return update_string_copy_(&settings->TransportDumpFile, cnv.cc, len, cleanup); case FreeRDP_UserSpecifiedServerName: return update_string_copy_(&settings->UserSpecifiedServerName, cnv.cc, len, cleanup); case FreeRDP_Username: return update_string_copy_(&settings->Username, cnv.cc, len, cleanup); case FreeRDP_WinSCardModule: return update_string_copy_(&settings->WinSCardModule, cnv.cc, len, cleanup); case FreeRDP_WindowTitle: return update_string_copy_(&settings->WindowTitle, cnv.cc, len, cleanup); case FreeRDP_WmClass: return update_string_copy_(&settings->WmClass, cnv.cc, len, cleanup); default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); return FALSE; } return TRUE; } void* freerdp_settings_get_pointer_writable(rdpSettings* settings, FreeRDP_Settings_Keys_Pointer id) { WINPR_ASSERT(settings); switch (id) { case FreeRDP_BitmapCacheV2CellInfo: return settings->BitmapCacheV2CellInfo; case FreeRDP_ChannelDefArray: return settings->ChannelDefArray; case FreeRDP_ClientAutoReconnectCookie: return settings->ClientAutoReconnectCookie; case FreeRDP_ClientRandom: return settings->ClientRandom; case FreeRDP_ClientTimeZone: return settings->ClientTimeZone; case FreeRDP_DeviceArray: return settings->DeviceArray; case FreeRDP_DynamicChannelArray: return settings->DynamicChannelArray; case FreeRDP_FragCache: return settings->FragCache; case FreeRDP_GlyphCache: return settings->GlyphCache; case FreeRDP_LoadBalanceInfo: return settings->LoadBalanceInfo; case FreeRDP_MonitorDefArray: return settings->MonitorDefArray; case FreeRDP_MonitorIds: return settings->MonitorIds; case FreeRDP_OrderSupport: return settings->OrderSupport; case FreeRDP_Password51: return settings->Password51; case FreeRDP_RdpServerCertificate: return settings->RdpServerCertificate; case FreeRDP_RdpServerRsaKey: return settings->RdpServerRsaKey; case FreeRDP_ReceivedCapabilities: return settings->ReceivedCapabilities; case FreeRDP_ReceivedCapabilityData: return settings->ReceivedCapabilityData; case FreeRDP_ReceivedCapabilityDataSizes: return settings->ReceivedCapabilityDataSizes; case FreeRDP_RedirectionGuid: return settings->RedirectionGuid; case FreeRDP_RedirectionPassword: return settings->RedirectionPassword; case FreeRDP_RedirectionTargetCertificate: return settings->RedirectionTargetCertificate; case FreeRDP_RedirectionTsvUrl: return settings->RedirectionTsvUrl; case FreeRDP_ServerAutoReconnectCookie: return settings->ServerAutoReconnectCookie; case FreeRDP_ServerCertificate: return settings->ServerCertificate; case FreeRDP_ServerLicenseProductIssuers: return settings->ServerLicenseProductIssuers; case FreeRDP_ServerRandom: return settings->ServerRandom; case FreeRDP_StaticChannelArray: return settings->StaticChannelArray; case FreeRDP_TargetNetAddresses: return settings->TargetNetAddresses; case FreeRDP_TargetNetPorts: return settings->TargetNetPorts; case FreeRDP_instance: return settings->instance; default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); WINPR_ASSERT(FALSE); return NULL; } } BOOL freerdp_settings_set_pointer(rdpSettings* settings, FreeRDP_Settings_Keys_Pointer id, const void* val) { union { void* v; const void* cv; } cnv; WINPR_ASSERT(settings); cnv.cv = val; switch (id) { case FreeRDP_BitmapCacheV2CellInfo: settings->BitmapCacheV2CellInfo = cnv.v; break; case FreeRDP_ChannelDefArray: settings->ChannelDefArray = cnv.v; break; case FreeRDP_ClientAutoReconnectCookie: settings->ClientAutoReconnectCookie = cnv.v; break; case FreeRDP_ClientRandom: settings->ClientRandom = cnv.v; break; case FreeRDP_ClientTimeZone: settings->ClientTimeZone = cnv.v; break; case FreeRDP_DeviceArray: settings->DeviceArray = cnv.v; break; case FreeRDP_DynamicChannelArray: settings->DynamicChannelArray = cnv.v; break; case FreeRDP_FragCache: settings->FragCache = cnv.v; break; case FreeRDP_GlyphCache: settings->GlyphCache = cnv.v; break; case FreeRDP_LoadBalanceInfo: settings->LoadBalanceInfo = cnv.v; break; case FreeRDP_MonitorDefArray: settings->MonitorDefArray = cnv.v; break; case FreeRDP_MonitorIds: settings->MonitorIds = cnv.v; break; case FreeRDP_OrderSupport: settings->OrderSupport = cnv.v; break; case FreeRDP_Password51: settings->Password51 = cnv.v; break; case FreeRDP_RdpServerCertificate: settings->RdpServerCertificate = cnv.v; break; case FreeRDP_RdpServerRsaKey: settings->RdpServerRsaKey = cnv.v; break; case FreeRDP_ReceivedCapabilities: settings->ReceivedCapabilities = cnv.v; break; case FreeRDP_ReceivedCapabilityData: settings->ReceivedCapabilityData = cnv.v; break; case FreeRDP_ReceivedCapabilityDataSizes: settings->ReceivedCapabilityDataSizes = cnv.v; break; case FreeRDP_RedirectionGuid: settings->RedirectionGuid = cnv.v; break; case FreeRDP_RedirectionPassword: settings->RedirectionPassword = cnv.v; break; case FreeRDP_RedirectionTargetCertificate: settings->RedirectionTargetCertificate = cnv.v; break; case FreeRDP_RedirectionTsvUrl: settings->RedirectionTsvUrl = cnv.v; break; case FreeRDP_ServerAutoReconnectCookie: settings->ServerAutoReconnectCookie = cnv.v; break; case FreeRDP_ServerCertificate: settings->ServerCertificate = cnv.v; break; case FreeRDP_ServerLicenseProductIssuers: settings->ServerLicenseProductIssuers = cnv.v; break; case FreeRDP_ServerRandom: settings->ServerRandom = cnv.v; break; case FreeRDP_StaticChannelArray: settings->StaticChannelArray = cnv.v; break; case FreeRDP_TargetNetAddresses: settings->TargetNetAddresses = cnv.v; break; case FreeRDP_TargetNetPorts: settings->TargetNetPorts = cnv.v; break; case FreeRDP_instance: settings->instance = cnv.v; break; default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id)); return FALSE; } return TRUE; }