FreeRDP
Loading...
Searching...
No Matches
freerdp.h
1
22#ifndef FREERDP_H
23#define FREERDP_H
24
25#include <winpr/stream.h>
26#include <winpr/sspi.h>
27
28#include <freerdp/api.h>
29#include <freerdp/types.h>
30#include <freerdp/error.h>
31#include <freerdp/event.h>
32
33#include <freerdp/settings.h>
34
35#include <freerdp/gdi/gdi.h>
36#include <freerdp/codecs.h>
37#include <freerdp/metrics.h>
38#include <freerdp/extension.h>
39#include <freerdp/heartbeat.h>
40#include <freerdp/message.h>
41#include <freerdp/autodetect.h>
42#include <freerdp/streamdump.h>
43
44#ifdef __cplusplus
45extern "C"
46{
47#endif
48
49 typedef struct rdp_rdp rdpRdp;
50 typedef struct rdp_rail rdpRail;
51 typedef struct rdp_cache rdpCache;
52
53 typedef struct rdp_client_context rdpClientContext;
54 typedef struct rdp_client_entry_points_v1 RDP_CLIENT_ENTRY_POINTS_V1;
55 typedef RDP_CLIENT_ENTRY_POINTS_V1 RDP_CLIENT_ENTRY_POINTS;
56
57#include <freerdp/utils/smartcardlogon.h>
58#include <freerdp/update.h>
59#include <freerdp/input.h>
60#include <freerdp/graphics.h>
61
62#define MCS_BASE_CHANNEL_ID 1001
63#define MCS_GLOBAL_CHANNEL_ID 1003
64
65/* Flags used by certificate callbacks */
66#define VERIFY_CERT_FLAG_NONE 0x00
67#define VERIFY_CERT_FLAG_LEGACY 0x02
68#define VERIFY_CERT_FLAG_REDIRECT 0x10
69#define VERIFY_CERT_FLAG_GATEWAY 0x20
70#define VERIFY_CERT_FLAG_CHANGED 0x40
71#define VERIFY_CERT_FLAG_MISMATCH 0x80
72#define VERIFY_CERT_FLAG_MATCH_LEGACY_SHA1 0x100
73#define VERIFY_CERT_FLAG_FP_IS_PEM 0x200
74
75/* Message types used by gateway messaging callback */
76#define GATEWAY_MESSAGE_CONSENT 1
77#define GATEWAY_MESSAGE_SERVICE 2
78
79 typedef enum
80 {
81 AUTH_NLA,
82 AUTH_TLS,
83 AUTH_RDP,
84 GW_AUTH_HTTP,
85 GW_AUTH_RDG,
86 GW_AUTH_RPC,
87 AUTH_SMARTCARD_PIN,
88 AUTH_RDSTLS,
89 AUTH_FIDO_PIN
90 } rdp_auth_reason;
91
92 typedef BOOL (*pContextNew)(freerdp* instance, rdpContext* context);
93 typedef void (*pContextFree)(freerdp* instance, rdpContext* context);
94
95 typedef BOOL (*pConnectCallback)(freerdp* instance);
96 typedef void (*pPostDisconnect)(freerdp* instance);
97
98#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
112 typedef BOOL (*pAuthenticate)(freerdp* instance, char** username, char** password,
113 char** domain);
114#endif
115
137 typedef BOOL (*pAuthenticateEx)(freerdp* instance, char** username, char** password,
138 char** domain, rdp_auth_reason reason);
139
158 typedef BOOL (*pChooseSmartcard)(freerdp* instance, SmartcardCertInfo** cert_list, DWORD count,
159 DWORD* choice, BOOL gateway);
160
161 typedef enum
162 {
163 ACCESS_TOKEN_TYPE_AAD,
164 ACCESS_TOKEN_TYPE_AVD
165 } AccessTokenType;
166
177 typedef BOOL (*pGetAccessToken)(freerdp* instance, AccessTokenType tokenType, char** token,
178 size_t count, ...);
179
193 typedef BOOL (*pGetCommonAccessToken)(rdpContext* context, AccessTokenType tokenType,
194 char** token, size_t count, ...);
195
207 typedef SSIZE_T (*pRetryDialog)(freerdp* instance, const char* what, size_t current,
208 void* userarg);
209
225#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
226 WINPR_DEPRECATED_VAR("Use pVerifyCertificateEx",
227 typedef DWORD (*pVerifyCertificate)(
228 freerdp* instance, const char* common_name, const char* subject,
229 const char* issuer, const char* fingerprint, BOOL host_mismatch));
230#endif
231
247 typedef DWORD (*pVerifyCertificateEx)(freerdp* instance, const char* host, UINT16 port,
248 const char* common_name, const char* subject,
249 const char* issuer, const char* fingerprint, DWORD flags);
250
266#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
267 WINPR_DEPRECATED_VAR("Use pVerifyChangedCertificateEx",
268 typedef DWORD (*pVerifyChangedCertificate)(
269 freerdp* instance, const char* common_name, const char* subject,
270 const char* issuer, const char* new_fingerprint,
271 const char* old_subject, const char* old_issuer,
272 const char* old_fingerprint));
273#endif
274
295 typedef DWORD (*pVerifyChangedCertificateEx)(freerdp* instance, const char* host, UINT16 port,
296 const char* common_name, const char* subject,
297 const char* issuer, const char* new_fingerprint,
298 const char* old_subject, const char* old_issuer,
299 const char* old_fingerprint, DWORD flags);
300
314 typedef int (*pVerifyX509Certificate)(freerdp* instance, const BYTE* data, size_t length,
315 const char* hostname, UINT16 port, DWORD flags);
316
317 typedef int (*pLogonErrorInfo)(freerdp* instance, UINT32 data, UINT32 type);
318
319 typedef BOOL (*pSendChannelData)(freerdp* instance, UINT16 channelId, const BYTE* data,
320 size_t size);
321 typedef BOOL (*pSendChannelPacket)(freerdp* instance, UINT16 channelId, size_t totalSize,
322 UINT32 flags, const BYTE* data, size_t chunkSize);
323 typedef BOOL (*pReceiveChannelData)(freerdp* instance, UINT16 channelId, const BYTE* data,
324 size_t size, UINT32 flags, size_t totalSize);
325
326 /* type can be one of the GATEWAY_MESSAGE_ type defines */
327 typedef BOOL (*pPresentGatewayMessage)(freerdp* instance, UINT32 type, BOOL isDisplayMandatory,
328 BOOL isConsentMandatory, size_t length,
329 const WCHAR* message);
330
337 {
338 ALIGN64 freerdp* instance;
342 ALIGN64 freerdp_peer* peer;
346 ALIGN64 BOOL ServerMode;
348 ALIGN64 UINT32 LastError; /* 3 */
349
350 UINT64 paddingA[16 - 4]; /* 4 */
351
352 ALIGN64 int argc;
357 ALIGN64 char** argv;
363 ALIGN64 wPubSub* pubSub; /* (offset 18) */
364
365 ALIGN64 HANDLE channelErrorEvent; /* (offset 19)*/
366 ALIGN64 UINT channelErrorNum; /*(offset 20)*/
367 ALIGN64 char* errorDescription; /*(offset 21)*/
368
369 UINT64 paddingB[32 - 22]; /* 22 */
370
371 ALIGN64 rdpRdp*
377 ALIGN64 rdpGdi* gdi;
381 ALIGN64 rdpRail* rail; /* 34 */
382 ALIGN64 rdpCache* cache; /* 35 */
383 ALIGN64 rdpChannels* channels; /* 36 */
384 ALIGN64 rdpGraphics* graphics; /* 37 */
385 ALIGN64 rdpInput* input; /* 38 owned by rdpRdp */
386 ALIGN64 rdpUpdate* update; /* 39 owned by rdpRdp */
387 ALIGN64 rdpSettings* settings; /* 40 owned by rdpRdp */
388 ALIGN64 rdpMetrics* metrics; /* 41 */
389 ALIGN64 rdpCodecs* codecs; /* 42 */
390 ALIGN64 rdpAutoDetect* autodetect; /* 43 owned by rdpRdp */
391 UINT64 paddingC1[45 - 44]; /* 44 */
392 ALIGN64 int disconnectUltimatum; /* 45 */
393 UINT64 paddingC[64 - 46]; /* 46 */
394
395 ALIGN64 rdpStreamDumpContext* dump; /* 64 */
396 ALIGN64 wLog* log; /* 65 */
397
398 UINT64 paddingD[96 - 66]; /* 66 */
399 UINT64 paddingE[128 - 96]; /* 96 */
400 };
401
409 enum Disconnect_Ultimatum
410 {
411 Disconnect_Ultimatum_domain_disconnected = 0,
412 Disconnect_Ultimatum_provider_initiated = 1,
413 Disconnect_Ultimatum_token_purged = 2,
414 Disconnect_Ultimatum_user_requested = 3,
415 Disconnect_Ultimatum_channel_purged = 4
416 };
417
418#include <freerdp/client.h>
419
428 {
429 ALIGN64
430 rdpContext* context;
440 ALIGN64 RDP_CLIENT_ENTRY_POINTS* pClientEntryPoints;
441
442 UINT64 paddingA[16 - 2]; /* 2 */
443
444#if defined(WITH_FREERDP_DEPRECATED)
445 WINPR_DEPRECATED_VAR("use rdpContext::input instead", ALIGN64 rdpInput* input;) /* (offset
446 16) Input handle for the connection. Will be initialized by a call
447 to freerdp_context_new() owned by rdpRdp */
448 WINPR_DEPRECATED_VAR("use rdpContext::update instead",
449 ALIGN64 rdpUpdate* update;) /* (offset 17)
450 Update display parameters. Used to register display events callbacks
451and settings. Will be initialized by a call to freerdp_context_new() owned by rdpRdp */
452 WINPR_DEPRECATED_VAR("use rdpContext::settings instead",
453 ALIGN64 rdpSettings* settings;)
459 WINPR_DEPRECATED_VAR("use rdpContext::autodetect instead",
460 ALIGN64 rdpAutoDetect* autodetect;) /* (offset 19)
461 Auto-Detect handle for the connection.
462 Will be initialized by a call to freerdp_context_new()
463owned by rdpRdp */
464#else
465 UINT64 paddingX[4];
466#endif
467 ALIGN64 rdpHeartbeat* heartbeat; /* (offset 21) owned by rdpRdp*/
468
469 UINT64 paddingB[32 - 21]; /* 21 */
470
471 ALIGN64 size_t
472 ContextSize; /* (offset 32)
473 Specifies the size of the 'context' field. freerdp_context_new() will use this
474 size to allocate the context buffer. freerdp_new() sets it to
475 sizeof(rdpContext). If modifying it, there should always be a minimum of
476 sizeof(rdpContext), as the freerdp library will assume it can use the 'context'
477 field to set the required information in it. Clients will typically make it
478 bigger, and use a context structure embedding the rdpContext, and adding
479 additional information after that.
480 */
481
482 WINPR_ATTR_NODISCARD ALIGN64 pContextNew
488 ALIGN64 pContextFree
493 UINT64 paddingC[47 - 35]; /* 35 */
494
495 ALIGN64 UINT ConnectionCallbackState; /* 47 */
496
497 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
503 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
509#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
510 WINPR_DEPRECATED_VAR("[since 3.25.0] Use AuthenticateEx instead",
511 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate
512 Authenticate);
517 WINPR_DEPRECATED_VAR("Use VerifyCertificateEx or VerifyX509Certificate instead",
518 WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificate
519 VerifyCertificate;)
520 WINPR_DEPRECATED_VAR("Use VerifyChangedCertificateEx or VerifyX509Certificate instead",
521 WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificate
522 VerifyChangedCertificate;)
523#else
524 ALIGN64 UINT64 reserved50[3];
525#endif
526 WINPR_ATTR_NODISCARD ALIGN64 pVerifyX509Certificate
530 WINPR_ATTR_NODISCARD ALIGN64 pLogonErrorInfo
534 ALIGN64 pPostDisconnect
542#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
543 WINPR_DEPRECATED_VAR("[since 3.25.0] Use AuthenticateEx instead",
544 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate
545 GatewayAuthenticate);
549#else
550 ALIGN64 UINT64 reserved56[1];
551#endif
552 WINPR_ATTR_NODISCARD ALIGN64 pPresentGatewayMessage PresentGatewayMessage;
556 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback Redirect;
562 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
567 ALIGN64 pPostDisconnect
568 PostFinalDisconnect;
574 UINT64 paddingD[64 - 61]; /* 61 */
575
576 WINPR_ATTR_NODISCARD ALIGN64 pSendChannelData
577 SendChannelData; /* (offset 64)
578 Callback for sending data to a channel.
579 By default, it is set by freerdp_new() to freerdp_send_channel_data(), which
580 eventually calls freerdp_channel_send() */
581 WINPR_ATTR_NODISCARD ALIGN64 pReceiveChannelData
582 ReceiveChannelData; /* (offset 65)
583 Callback for receiving data from a channel.
584 This is called by freerdp_channel_process() (if not nullptr).
585 Clients will typically use a function that calls freerdp_channels_data()
586 to perform the needed tasks. */
587
588 WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificateEx
592 WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificateEx
596 WINPR_ATTR_NODISCARD ALIGN64 pSendChannelPacket
597 SendChannelPacket; /* (offset 68)
598 * Callback for sending RAW data to a channel. In contrast to
599 * SendChannelData data fragmentation is up to the user and this
600 * function sends data as is with the provided flags.
601 */
602 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticateEx AuthenticateEx;
606 WINPR_ATTR_NODISCARD ALIGN64 pChooseSmartcard
607 ChooseSmartcard; /* (offset 70)
608 Callback for choosing a smartcard for logon.
609 Used when multiple smartcards are available. Returns an index into a list
610 of SmartcardCertInfo pointers */
611 WINPR_ATTR_NODISCARD ALIGN64 pGetAccessToken GetAccessToken; /* (offset 71)
612 Callback for obtaining an access token
613 for \b AccessTokenType authentication */
614 WINPR_ATTR_NODISCARD ALIGN64 pRetryDialog
615 RetryDialog; /* (offset 72) Callback for displaying a dialog in case of
616 something needs a retry */
617 UINT64 paddingE[80 - 73]; /* 73 */
618 };
619
621 {
622 wListDictionary* init;
623 wListDictionary* open;
624 };
625 typedef struct rdp_channel_handles rdpChannelHandles;
626
627 FREERDP_API void freerdp_context_free(freerdp* instance);
628
629 WINPR_ATTR_NODISCARD
630 FREERDP_API BOOL freerdp_context_new(freerdp* instance);
631
632 WINPR_ATTR_NODISCARD
633 FREERDP_API BOOL freerdp_context_new_ex(freerdp* instance, rdpSettings* settings);
634
635 WINPR_ATTR_NODISCARD
636 FREERDP_API BOOL freerdp_context_reset(freerdp* instance);
637
638 WINPR_ATTR_NODISCARD
639 FREERDP_API BOOL freerdp_connect(freerdp* instance);
640
641#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
642 WINPR_DEPRECATED_VAR("use freerdp_abort_connect_context instead",
643 FREERDP_API BOOL freerdp_abort_connect(freerdp* instance));
644#endif
645
646 FREERDP_API BOOL freerdp_abort_connect_context(rdpContext* context);
647
648 WINPR_ATTR_NODISCARD
649 FREERDP_API HANDLE freerdp_abort_event(rdpContext* context);
650
651#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
652 WINPR_DEPRECATED_VAR("use freerdp_shall_disconnect_context instead",
653 WINPR_ATTR_NODISCARD FREERDP_API BOOL
654 freerdp_shall_disconnect(const freerdp* instance));
655#endif
656
657 WINPR_ATTR_NODISCARD
658 FREERDP_API BOOL freerdp_shall_disconnect_context(const rdpContext* context);
659
660 FREERDP_API BOOL freerdp_disconnect(freerdp* instance);
661
670 WINPR_ATTR_NODISCARD
671 FREERDP_API const char* freerdp_disconnect_reason_string(int reason);
672
673#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
674 WINPR_DEPRECATED_VAR("use freerdp_disconnect_before_reconnect_context instead",
675 WINPR_ATTR_NODISCARD FREERDP_API BOOL
676 freerdp_disconnect_before_reconnect(freerdp* instance));
677#endif
678
679 WINPR_ATTR_NODISCARD
680 FREERDP_API BOOL freerdp_disconnect_before_reconnect_context(rdpContext* context);
681
682 WINPR_ATTR_NODISCARD
683 FREERDP_API BOOL freerdp_reconnect(freerdp* instance);
684
685 WINPR_ATTR_NODISCARD
686 FREERDP_API UINT freerdp_channels_attach(freerdp* instance);
687
688 WINPR_ATTR_NODISCARD
689 FREERDP_API UINT freerdp_channels_detach(freerdp* instance);
690
691#if defined(WITH_FREERDP_DEPRECATED)
692 WINPR_DEPRECATED_VAR("Use freerdp_get_event_handles",
693 WINPR_ATTR_NODISCARD FREERDP_API BOOL
694 freerdp_get_fds(freerdp* instance, void** rfds, int* rcount,
695 void** wfds, int* wcount));
696#endif
697
698 WINPR_ATTR_NODISCARD
699 FREERDP_API BOOL freerdp_check_fds(freerdp* instance);
700
701 WINPR_ATTR_NODISCARD
702 FREERDP_API DWORD freerdp_get_event_handles(rdpContext* context, HANDLE* events, DWORD count);
703
704 WINPR_ATTR_NODISCARD
705 FREERDP_API BOOL freerdp_check_event_handles(rdpContext* context);
706
707 WINPR_ATTR_NODISCARD
708 FREERDP_API wMessageQueue* freerdp_get_message_queue(freerdp* instance, DWORD id);
709
710 WINPR_ATTR_NODISCARD
711 FREERDP_API HANDLE freerdp_get_message_queue_event_handle(freerdp* instance, DWORD id);
712
713 WINPR_ATTR_NODISCARD
714 FREERDP_API int freerdp_message_queue_process_message(freerdp* instance, DWORD id,
715 wMessage* message);
716
717 WINPR_ATTR_NODISCARD
718 FREERDP_API int freerdp_message_queue_process_pending_messages(freerdp* instance, DWORD id);
719
720 WINPR_ATTR_NODISCARD
721 FREERDP_API UINT32 freerdp_error_info(const freerdp* instance);
722
723 FREERDP_API void freerdp_set_error_info(rdpRdp* rdp, UINT32 error);
724
725 WINPR_ATTR_NODISCARD
726 FREERDP_API BOOL freerdp_send_error_info(rdpRdp* rdp);
727
728 WINPR_ATTR_NODISCARD
729 FREERDP_API BOOL freerdp_get_stats(const rdpRdp* rdp, UINT64* inBytes, UINT64* outBytes,
730 UINT64* inPackets, UINT64* outPackets);
731
732 FREERDP_API void freerdp_get_version(int* major, int* minor, int* revision);
733
734 WINPR_ATTR_NODISCARD
735 FREERDP_API const char* freerdp_get_version_string(void);
736
737 WINPR_ATTR_NODISCARD
738 FREERDP_API const char* freerdp_get_build_revision(void);
739
740 WINPR_ATTR_NODISCARD
741 FREERDP_API const char* freerdp_get_build_config(void);
742
743 FREERDP_API void freerdp_free(freerdp* instance);
744
745 WINPR_ATTR_MALLOC(freerdp_free, 1)
746 WINPR_ATTR_NODISCARD
747 FREERDP_API freerdp* freerdp_new(void);
748
749 WINPR_ATTR_NODISCARD
750 FREERDP_API BOOL freerdp_focus_required(freerdp* instance);
751 FREERDP_API void freerdp_set_focus(freerdp* instance);
752
753 WINPR_ATTR_NODISCARD
754 FREERDP_API int freerdp_get_disconnect_ultimatum(const rdpContext* context);
755
756 WINPR_ATTR_NODISCARD
757 FREERDP_API UINT32 freerdp_get_last_error(const rdpContext* context);
758
759 WINPR_ATTR_NODISCARD
760 FREERDP_API const char* freerdp_get_last_error_name(UINT32 code);
761
762 WINPR_ATTR_NODISCARD
763 FREERDP_API const char* freerdp_get_last_error_string(UINT32 code);
764
765 WINPR_ATTR_NODISCARD
766 FREERDP_API const char* freerdp_get_last_error_category(UINT32 code);
767
768#define freerdp_set_last_error(context, lastError) \
769 freerdp_set_last_error_ex((context), (lastError), __func__, __FILE__, __LINE__)
770
771#define freerdp_set_last_error_if_not(context, lastError) \
772 do \
773 { \
774 if (freerdp_get_last_error(context) == FREERDP_ERROR_SUCCESS) \
775 freerdp_set_last_error_log(context, lastError); \
776 } while (0)
777
778#define freerdp_set_last_error_log(context, lastError) \
779 freerdp_set_last_error_ex((context), (lastError), __func__, __FILE__, __LINE__)
780 FREERDP_API void freerdp_set_last_error_ex(rdpContext* context, UINT32 lastError,
781 const char* fkt, const char* file, int line);
782
783 WINPR_ATTR_NODISCARD
784 FREERDP_API const char* freerdp_get_logon_error_info_type(UINT32 type);
785
786 WINPR_ATTR_NODISCARD
787 FREERDP_API const char* freerdp_get_logon_error_info_type_ex(UINT32 type, char* buffer,
788 size_t size);
789
790 WINPR_ATTR_NODISCARD
791 FREERDP_API const char* freerdp_get_logon_error_info_data(UINT32 data);
792
793 WINPR_ATTR_NODISCARD
794 FREERDP_API const char* freerdp_get_logon_error_info_data_ex(UINT32 data, char* buffer,
795 size_t size);
796
797 WINPR_ATTR_NODISCARD
798 FREERDP_API ULONG freerdp_get_transport_sent(const rdpContext* context, BOOL resetCount);
799
800 WINPR_ATTR_NODISCARD
801 FREERDP_API BOOL freerdp_nla_impersonate(rdpContext* context);
802
803 WINPR_ATTR_NODISCARD
804 FREERDP_API BOOL freerdp_nla_revert_to_self(rdpContext* context);
805
806 WINPR_ATTR_NODISCARD
807 FREERDP_API UINT32 freerdp_get_nla_sspi_error(const rdpContext* context);
808
817 WINPR_ATTR_NODISCARD
818 FREERDP_API BOOL freerdp_nla_encrypt(rdpContext* context, const SecBuffer* inBuffer,
819 SecBuffer* outBuffer);
820
829 WINPR_ATTR_NODISCARD
830 FREERDP_API BOOL freerdp_nla_decrypt(rdpContext* context, const SecBuffer* inBuffer,
831 SecBuffer* outBuffer);
832
842 WINPR_ATTR_NODISCARD
843 FREERDP_API SECURITY_STATUS freerdp_nla_QueryContextAttributes(rdpContext* context,
844 DWORD ulAttr, PVOID pBuffer);
845
855 WINPR_ATTR_NODISCARD
856 FREERDP_API SECURITY_STATUS freerdp_nla_FreeContextBuffer(rdpContext* context, PVOID pBuffer);
857
858 FREERDP_API void clearChannelError(rdpContext* context);
859
860 WINPR_ATTR_NODISCARD
861 FREERDP_API HANDLE getChannelErrorEventHandle(rdpContext* context);
862
863 WINPR_ATTR_NODISCARD
864 FREERDP_API UINT getChannelError(const rdpContext* context);
865
866 WINPR_ATTR_NODISCARD
867 FREERDP_API const char* getChannelErrorDescription(const rdpContext* context);
868
869 FREERDP_API void setChannelError(rdpContext* context, UINT errorNum, const char* format, ...);
870
871 WINPR_ATTR_NODISCARD
872 FREERDP_API BOOL checkChannelErrorEvent(rdpContext* context);
873
874 WINPR_ATTR_NODISCARD
875 FREERDP_API const char* freerdp_nego_get_routing_token(const rdpContext* context,
876 DWORD* length);
877
884 WINPR_ATTR_NODISCARD
885 FREERDP_API CONNECTION_STATE freerdp_get_state(const rdpContext* context);
886
893 WINPR_ATTR_NODISCARD
894 FREERDP_API const char* freerdp_state_string(CONNECTION_STATE state);
895
905 WINPR_ATTR_NODISCARD
906 FREERDP_API BOOL freerdp_is_active_state(const rdpContext* context);
907
908 WINPR_ATTR_NODISCARD
909 FREERDP_API BOOL freerdp_channels_from_mcs(rdpSettings* settings, const rdpContext* context);
910
911 WINPR_ATTR_NODISCARD
912 FREERDP_API BOOL freerdp_is_valid_mcs_create_request(const BYTE* data, size_t size);
913
914 WINPR_ATTR_NODISCARD
915 FREERDP_API BOOL freerdp_is_valid_mcs_create_response(const BYTE* data, size_t size);
916
929 WINPR_ATTR_NODISCARD
930 FREERDP_API BOOL freerdp_persist_credentials(rdpContext* context);
931
940 WINPR_ATTR_NODISCARD
941 FREERDP_API BOOL freerdp_set_common_access_token(rdpContext* context,
942 pGetCommonAccessToken GetCommonAccessToken);
943
950 WINPR_ATTR_NODISCARD
951 FREERDP_API pGetCommonAccessToken freerdp_get_common_access_token(const rdpContext* context);
952
953#ifdef __cplusplus
954}
955#endif
956
957#endif /* FREERDP_H */
ALIGN64 char ** argv
Definition freerdp.h:357
ALIGN64 rdpRdp * rdp
Definition freerdp.h:372
ALIGN64 freerdp_peer * peer
Definition freerdp.h:342
ALIGN64 BOOL ServerMode
Definition freerdp.h:346
ALIGN64 rdpGdi * gdi
Definition freerdp.h:377
ALIGN64 int argc
Definition freerdp.h:352
ALIGN64 freerdp * instance
Definition freerdp.h:338
UINT64 paddingD[64 - 61]
Definition freerdp.h:574
WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificateEx VerifyCertificateEx
Definition freerdp.h:589
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback Redirect
Definition freerdp.h:556
WINPR_DEPRECATED_VAR("[since 3.25.0] Use AuthenticateEx instead", WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate GatewayAuthenticate)
WINPR_ATTR_NODISCARD ALIGN64 pLogonErrorInfo LogonErrorInfo
Definition freerdp.h:531
WINPR_ATTR_NODISCARD ALIGN64 pContextNew ContextNew
Definition freerdp.h:483
ALIGN64 pPostDisconnect PostDisconnect
Definition freerdp.h:535
WINPR_ATTR_NODISCARD ALIGN64 pAuthenticateEx AuthenticateEx
Definition freerdp.h:602
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback LoadChannels
Definition freerdp.h:563
ALIGN64 rdpContext * context
Definition freerdp.h:430
WINPR_DEPRECATED_VAR("[since 3.25.0] Use AuthenticateEx instead", WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate Authenticate)
WINPR_ATTR_NODISCARD ALIGN64 pPresentGatewayMessage PresentGatewayMessage
Definition freerdp.h:552
ALIGN64 pContextFree ContextFree
Definition freerdp.h:489
WINPR_ATTR_NODISCARD ALIGN64 pVerifyX509Certificate VerifyX509Certificate
Definition freerdp.h:527
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback PreConnect
Definition freerdp.h:498
WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificateEx VerifyChangedCertificateEx
Definition freerdp.h:593
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback PostConnect
Definition freerdp.h:504
Definition rdp.h:148