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
111 typedef BOOL (*pAuthenticate)(freerdp* instance, char** username, char** password,
112 char** domain);
113
135 typedef BOOL (*pAuthenticateEx)(freerdp* instance, char** username, char** password,
136 char** domain, rdp_auth_reason reason);
137
156 typedef BOOL (*pChooseSmartcard)(freerdp* instance, SmartcardCertInfo** cert_list, DWORD count,
157 DWORD* choice, BOOL gateway);
158
159 typedef enum
160 {
161 ACCESS_TOKEN_TYPE_AAD,
162 ACCESS_TOKEN_TYPE_AVD
163 } AccessTokenType;
164
175 typedef BOOL (*pGetAccessToken)(freerdp* instance, AccessTokenType tokenType, char** token,
176 size_t count, ...);
177
191 typedef BOOL (*pGetCommonAccessToken)(rdpContext* context, AccessTokenType tokenType,
192 char** token, size_t count, ...);
193
205 typedef SSIZE_T (*pRetryDialog)(freerdp* instance, const char* what, size_t current,
206 void* userarg);
207
223#if defined(WITH_FREERDP_DEPRECATED)
224 WINPR_DEPRECATED_VAR("Use pVerifyCertificateEx",
225 typedef DWORD (*pVerifyCertificate)(
226 freerdp* instance, const char* common_name, const char* subject,
227 const char* issuer, const char* fingerprint, BOOL host_mismatch));
228#endif
229
245 typedef DWORD (*pVerifyCertificateEx)(freerdp* instance, const char* host, UINT16 port,
246 const char* common_name, const char* subject,
247 const char* issuer, const char* fingerprint, DWORD flags);
248
264#if defined(WITH_FREERDP_DEPRECATED)
265 WINPR_DEPRECATED_VAR("Use pVerifyChangedCertificateEx",
266 typedef DWORD (*pVerifyChangedCertificate)(
267 freerdp* instance, const char* common_name, const char* subject,
268 const char* issuer, const char* new_fingerprint,
269 const char* old_subject, const char* old_issuer,
270 const char* old_fingerprint));
271#endif
272
293 typedef DWORD (*pVerifyChangedCertificateEx)(freerdp* instance, const char* host, UINT16 port,
294 const char* common_name, const char* subject,
295 const char* issuer, const char* new_fingerprint,
296 const char* old_subject, const char* old_issuer,
297 const char* old_fingerprint, DWORD flags);
298
312 typedef int (*pVerifyX509Certificate)(freerdp* instance, const BYTE* data, size_t length,
313 const char* hostname, UINT16 port, DWORD flags);
314
315 typedef int (*pLogonErrorInfo)(freerdp* instance, UINT32 data, UINT32 type);
316
317 typedef BOOL (*pSendChannelData)(freerdp* instance, UINT16 channelId, const BYTE* data,
318 size_t size);
319 typedef BOOL (*pSendChannelPacket)(freerdp* instance, UINT16 channelId, size_t totalSize,
320 UINT32 flags, const BYTE* data, size_t chunkSize);
321 typedef BOOL (*pReceiveChannelData)(freerdp* instance, UINT16 channelId, const BYTE* data,
322 size_t size, UINT32 flags, size_t totalSize);
323
324 /* type can be one of the GATEWAY_MESSAGE_ type defines */
325 typedef BOOL (*pPresentGatewayMessage)(freerdp* instance, UINT32 type, BOOL isDisplayMandatory,
326 BOOL isConsentMandatory, size_t length,
327 const WCHAR* message);
328
335 {
336 ALIGN64 freerdp* instance;
340 ALIGN64 freerdp_peer* peer;
344 ALIGN64 BOOL ServerMode;
346 ALIGN64 UINT32 LastError; /* 3 */
347
348 UINT64 paddingA[16 - 4]; /* 4 */
349
350 ALIGN64 int argc;
355 ALIGN64 char** argv;
361 ALIGN64 wPubSub* pubSub; /* (offset 18) */
362
363 ALIGN64 HANDLE channelErrorEvent; /* (offset 19)*/
364 ALIGN64 UINT channelErrorNum; /*(offset 20)*/
365 ALIGN64 char* errorDescription; /*(offset 21)*/
366
367 UINT64 paddingB[32 - 22]; /* 22 */
368
369 ALIGN64 rdpRdp*
375 ALIGN64 rdpGdi* gdi;
379 ALIGN64 rdpRail* rail; /* 34 */
380 ALIGN64 rdpCache* cache; /* 35 */
381 ALIGN64 rdpChannels* channels; /* 36 */
382 ALIGN64 rdpGraphics* graphics; /* 37 */
383 ALIGN64 rdpInput* input; /* 38 owned by rdpRdp */
384 ALIGN64 rdpUpdate* update; /* 39 owned by rdpRdp */
385 ALIGN64 rdpSettings* settings; /* 40 owned by rdpRdp */
386 ALIGN64 rdpMetrics* metrics; /* 41 */
387 ALIGN64 rdpCodecs* codecs; /* 42 */
388 ALIGN64 rdpAutoDetect* autodetect; /* 43 owned by rdpRdp */
389 UINT64 paddingC1[45 - 44]; /* 44 */
390 ALIGN64 int disconnectUltimatum; /* 45 */
391 UINT64 paddingC[64 - 46]; /* 46 */
392
393 ALIGN64 rdpStreamDumpContext* dump; /* 64 */
394 ALIGN64 wLog* log; /* 65 */
395
396 UINT64 paddingD[96 - 66]; /* 66 */
397 UINT64 paddingE[128 - 96]; /* 96 */
398 };
399
407 enum Disconnect_Ultimatum
408 {
409 Disconnect_Ultimatum_domain_disconnected = 0,
410 Disconnect_Ultimatum_provider_initiated = 1,
411 Disconnect_Ultimatum_token_purged = 2,
412 Disconnect_Ultimatum_user_requested = 3,
413 Disconnect_Ultimatum_channel_purged = 4
414 };
415
416#include <freerdp/client.h>
417
426 {
427 ALIGN64
428 rdpContext* context;
438 ALIGN64 RDP_CLIENT_ENTRY_POINTS* pClientEntryPoints;
439
440 UINT64 paddingA[16 - 2]; /* 2 */
441
442#if defined(WITH_FREERDP_DEPRECATED)
443 WINPR_DEPRECATED_VAR("use rdpContext::input instead", ALIGN64 rdpInput* input;) /* (offset
444 16) Input handle for the connection. Will be initialized by a call
445 to freerdp_context_new() owned by rdpRdp */
446 WINPR_DEPRECATED_VAR("use rdpContext::update instead",
447 ALIGN64 rdpUpdate* update;) /* (offset 17)
448 Update display parameters. Used to register display events callbacks
449and settings. Will be initialized by a call to freerdp_context_new() owned by rdpRdp */
450 WINPR_DEPRECATED_VAR("use rdpContext::settings instead",
451 ALIGN64 rdpSettings* settings;)
457 WINPR_DEPRECATED_VAR("use rdpContext::autodetect instead",
458 ALIGN64 rdpAutoDetect* autodetect;) /* (offset 19)
459 Auto-Detect handle for the connection.
460 Will be initialized by a call to freerdp_context_new()
461owned by rdpRdp */
462#else
463 UINT64 paddingX[4];
464#endif
465 ALIGN64 rdpHeartbeat* heartbeat; /* (offset 21) owned by rdpRdp*/
466
467 UINT64 paddingB[32 - 21]; /* 21 */
468
469 ALIGN64 size_t
470 ContextSize; /* (offset 32)
471 Specifies the size of the 'context' field. freerdp_context_new() will use this
472 size to allocate the context buffer. freerdp_new() sets it to
473 sizeof(rdpContext). If modifying it, there should always be a minimum of
474 sizeof(rdpContext), as the freerdp library will assume it can use the 'context'
475 field to set the required information in it. Clients will typically make it
476 bigger, and use a context structure embedding the rdpContext, and adding
477 additional information after that.
478 */
479
480 WINPR_ATTR_NODISCARD ALIGN64 pContextNew
486 ALIGN64 pContextFree
491 UINT64 paddingC[47 - 35]; /* 35 */
492
493 ALIGN64 UINT ConnectionCallbackState; /* 47 */
494
495 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
501 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
507#if defined(WITH_FREERDP_DEPRECATED)
508 WINPR_DEPRECATED_VAR("[since 3.25.0] Use AuthenticateEx instead",
509 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate
510 Authenticate);
515 WINPR_DEPRECATED_VAR("Use VerifyCertificateEx or VerifyX509Certificate instead",
516 WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificate
517 VerifyCertificate;)
518 WINPR_DEPRECATED_VAR("Use VerifyChangedCertificateEx or VerifyX509Certificate instead",
519 WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificate
520 VerifyChangedCertificate;)
521#else
522 ALIGN64 UINT64 reserved50[3];
523#endif
524 WINPR_ATTR_NODISCARD ALIGN64 pVerifyX509Certificate
528 WINPR_ATTR_NODISCARD ALIGN64 pLogonErrorInfo
532 ALIGN64 pPostDisconnect
540#if defined(WITH_FREERDP_DEPRECATED)
541 WINPR_DEPRECATED_VAR("[since 3.25.0] Use AuthenticateEx instead",
542 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate
543 GatewayAuthenticate);
547#else
548 ALIGN64 UINT64 reserved56[1];
549#endif
550 WINPR_ATTR_NODISCARD ALIGN64 pPresentGatewayMessage PresentGatewayMessage;
554 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback Redirect;
560 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
565 ALIGN64 pPostDisconnect
566 PostFinalDisconnect;
572 UINT64 paddingD[64 - 61]; /* 61 */
573
574 WINPR_ATTR_NODISCARD ALIGN64 pSendChannelData
575 SendChannelData; /* (offset 64)
576 Callback for sending data to a channel.
577 By default, it is set by freerdp_new() to freerdp_send_channel_data(), which
578 eventually calls freerdp_channel_send() */
579 WINPR_ATTR_NODISCARD ALIGN64 pReceiveChannelData
580 ReceiveChannelData; /* (offset 65)
581 Callback for receiving data from a channel.
582 This is called by freerdp_channel_process() (if not nullptr).
583 Clients will typically use a function that calls freerdp_channels_data()
584 to perform the needed tasks. */
585
586 WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificateEx
590 WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificateEx
594 WINPR_ATTR_NODISCARD ALIGN64 pSendChannelPacket
595 SendChannelPacket; /* (offset 68)
596 * Callback for sending RAW data to a channel. In contrast to
597 * SendChannelData data fragmentation is up to the user and this
598 * function sends data as is with the provided flags.
599 */
600 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticateEx AuthenticateEx;
604 WINPR_ATTR_NODISCARD ALIGN64 pChooseSmartcard
605 ChooseSmartcard; /* (offset 70)
606 Callback for choosing a smartcard for logon.
607 Used when multiple smartcards are available. Returns an index into a list
608 of SmartcardCertInfo pointers */
609 WINPR_ATTR_NODISCARD ALIGN64 pGetAccessToken GetAccessToken; /* (offset 71)
610 Callback for obtaining an access token
611 for \b AccessTokenType authentication */
612 WINPR_ATTR_NODISCARD ALIGN64 pRetryDialog
613 RetryDialog; /* (offset 72) Callback for displaying a dialog in case of
614 something needs a retry */
615 UINT64 paddingE[80 - 73]; /* 73 */
616 };
617
619 {
620 wListDictionary* init;
621 wListDictionary* open;
622 };
623 typedef struct rdp_channel_handles rdpChannelHandles;
624
625 FREERDP_API void freerdp_context_free(freerdp* instance);
626
627 WINPR_ATTR_NODISCARD
628 FREERDP_API BOOL freerdp_context_new(freerdp* instance);
629
630 WINPR_ATTR_NODISCARD
631 FREERDP_API BOOL freerdp_context_new_ex(freerdp* instance, rdpSettings* settings);
632
633 WINPR_ATTR_NODISCARD
634 FREERDP_API BOOL freerdp_context_reset(freerdp* instance);
635
636 WINPR_ATTR_NODISCARD
637 FREERDP_API BOOL freerdp_connect(freerdp* instance);
638
639#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
640 WINPR_DEPRECATED_VAR("use freerdp_abort_connect_context instead",
641 FREERDP_API BOOL freerdp_abort_connect(freerdp* instance));
642#endif
643
644 FREERDP_API BOOL freerdp_abort_connect_context(rdpContext* context);
645
646 WINPR_ATTR_NODISCARD
647 FREERDP_API HANDLE freerdp_abort_event(rdpContext* context);
648
649#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
650 WINPR_DEPRECATED_VAR("use freerdp_shall_disconnect_context instead",
651 WINPR_ATTR_NODISCARD FREERDP_API BOOL
652 freerdp_shall_disconnect(const freerdp* instance));
653#endif
654
655 WINPR_ATTR_NODISCARD
656 FREERDP_API BOOL freerdp_shall_disconnect_context(const rdpContext* context);
657
658 FREERDP_API BOOL freerdp_disconnect(freerdp* instance);
659
668 WINPR_ATTR_NODISCARD
669 FREERDP_API const char* freerdp_disconnect_reason_string(int reason);
670
671#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
672 WINPR_DEPRECATED_VAR("use freerdp_disconnect_before_reconnect_context instead",
673 WINPR_ATTR_NODISCARD FREERDP_API BOOL
674 freerdp_disconnect_before_reconnect(freerdp* instance));
675#endif
676
677 WINPR_ATTR_NODISCARD
678 FREERDP_API BOOL freerdp_disconnect_before_reconnect_context(rdpContext* context);
679
680 WINPR_ATTR_NODISCARD
681 FREERDP_API BOOL freerdp_reconnect(freerdp* instance);
682
683 WINPR_ATTR_NODISCARD
684 FREERDP_API UINT freerdp_channels_attach(freerdp* instance);
685
686 WINPR_ATTR_NODISCARD
687 FREERDP_API UINT freerdp_channels_detach(freerdp* instance);
688
689#if defined(WITH_FREERDP_DEPRECATED)
690 WINPR_DEPRECATED_VAR("Use freerdp_get_event_handles",
691 WINPR_ATTR_NODISCARD FREERDP_API BOOL
692 freerdp_get_fds(freerdp* instance, void** rfds, int* rcount,
693 void** wfds, int* wcount));
694#endif
695
696 WINPR_ATTR_NODISCARD
697 FREERDP_API BOOL freerdp_check_fds(freerdp* instance);
698
699 WINPR_ATTR_NODISCARD
700 FREERDP_API DWORD freerdp_get_event_handles(rdpContext* context, HANDLE* events, DWORD count);
701
702 WINPR_ATTR_NODISCARD
703 FREERDP_API BOOL freerdp_check_event_handles(rdpContext* context);
704
705 WINPR_ATTR_NODISCARD
706 FREERDP_API wMessageQueue* freerdp_get_message_queue(freerdp* instance, DWORD id);
707
708 WINPR_ATTR_NODISCARD
709 FREERDP_API HANDLE freerdp_get_message_queue_event_handle(freerdp* instance, DWORD id);
710
711 WINPR_ATTR_NODISCARD
712 FREERDP_API int freerdp_message_queue_process_message(freerdp* instance, DWORD id,
713 wMessage* message);
714
715 WINPR_ATTR_NODISCARD
716 FREERDP_API int freerdp_message_queue_process_pending_messages(freerdp* instance, DWORD id);
717
718 WINPR_ATTR_NODISCARD
719 FREERDP_API UINT32 freerdp_error_info(const freerdp* instance);
720
721 FREERDP_API void freerdp_set_error_info(rdpRdp* rdp, UINT32 error);
722
723 WINPR_ATTR_NODISCARD
724 FREERDP_API BOOL freerdp_send_error_info(rdpRdp* rdp);
725
726 WINPR_ATTR_NODISCARD
727 FREERDP_API BOOL freerdp_get_stats(const rdpRdp* rdp, UINT64* inBytes, UINT64* outBytes,
728 UINT64* inPackets, UINT64* outPackets);
729
730 FREERDP_API void freerdp_get_version(int* major, int* minor, int* revision);
731
732 WINPR_ATTR_NODISCARD
733 FREERDP_API const char* freerdp_get_version_string(void);
734
735 WINPR_ATTR_NODISCARD
736 FREERDP_API const char* freerdp_get_build_revision(void);
737
738 WINPR_ATTR_NODISCARD
739 FREERDP_API const char* freerdp_get_build_config(void);
740
741 FREERDP_API void freerdp_free(freerdp* instance);
742
743 WINPR_ATTR_MALLOC(freerdp_free, 1)
744 WINPR_ATTR_NODISCARD
745 FREERDP_API freerdp* freerdp_new(void);
746
747 WINPR_ATTR_NODISCARD
748 FREERDP_API BOOL freerdp_focus_required(freerdp* instance);
749 FREERDP_API void freerdp_set_focus(freerdp* instance);
750
751 WINPR_ATTR_NODISCARD
752 FREERDP_API int freerdp_get_disconnect_ultimatum(const rdpContext* context);
753
754 WINPR_ATTR_NODISCARD
755 FREERDP_API UINT32 freerdp_get_last_error(const rdpContext* context);
756
757 WINPR_ATTR_NODISCARD
758 FREERDP_API const char* freerdp_get_last_error_name(UINT32 code);
759
760 WINPR_ATTR_NODISCARD
761 FREERDP_API const char* freerdp_get_last_error_string(UINT32 code);
762
763 WINPR_ATTR_NODISCARD
764 FREERDP_API const char* freerdp_get_last_error_category(UINT32 code);
765
766#define freerdp_set_last_error(context, lastError) \
767 freerdp_set_last_error_ex((context), (lastError), __func__, __FILE__, __LINE__)
768
769#define freerdp_set_last_error_if_not(context, lastError) \
770 do \
771 { \
772 if (freerdp_get_last_error(context) == FREERDP_ERROR_SUCCESS) \
773 freerdp_set_last_error_log(context, lastError); \
774 } while (0)
775
776#define freerdp_set_last_error_log(context, lastError) \
777 freerdp_set_last_error_ex((context), (lastError), __func__, __FILE__, __LINE__)
778 FREERDP_API void freerdp_set_last_error_ex(rdpContext* context, UINT32 lastError,
779 const char* fkt, const char* file, int line);
780
781 WINPR_ATTR_NODISCARD
782 FREERDP_API const char* freerdp_get_logon_error_info_type(UINT32 type);
783
784 WINPR_ATTR_NODISCARD
785 FREERDP_API const char* freerdp_get_logon_error_info_type_ex(UINT32 type, char* buffer,
786 size_t size);
787
788 WINPR_ATTR_NODISCARD
789 FREERDP_API const char* freerdp_get_logon_error_info_data(UINT32 data);
790
791 WINPR_ATTR_NODISCARD
792 FREERDP_API const char* freerdp_get_logon_error_info_data_ex(UINT32 data, char* buffer,
793 size_t size);
794
795 WINPR_ATTR_NODISCARD
796 FREERDP_API ULONG freerdp_get_transport_sent(const rdpContext* context, BOOL resetCount);
797
798 WINPR_ATTR_NODISCARD
799 FREERDP_API BOOL freerdp_nla_impersonate(rdpContext* context);
800
801 WINPR_ATTR_NODISCARD
802 FREERDP_API BOOL freerdp_nla_revert_to_self(rdpContext* context);
803
804 WINPR_ATTR_NODISCARD
805 FREERDP_API UINT32 freerdp_get_nla_sspi_error(const rdpContext* context);
806
815 WINPR_ATTR_NODISCARD
816 FREERDP_API BOOL freerdp_nla_encrypt(rdpContext* context, const SecBuffer* inBuffer,
817 SecBuffer* outBuffer);
818
827 WINPR_ATTR_NODISCARD
828 FREERDP_API BOOL freerdp_nla_decrypt(rdpContext* context, const SecBuffer* inBuffer,
829 SecBuffer* outBuffer);
830
840 WINPR_ATTR_NODISCARD
841 FREERDP_API SECURITY_STATUS freerdp_nla_QueryContextAttributes(rdpContext* context,
842 DWORD ulAttr, PVOID pBuffer);
843
853 WINPR_ATTR_NODISCARD
854 FREERDP_API SECURITY_STATUS freerdp_nla_FreeContextBuffer(rdpContext* context, PVOID pBuffer);
855
856 FREERDP_API void clearChannelError(rdpContext* context);
857
858 WINPR_ATTR_NODISCARD
859 FREERDP_API HANDLE getChannelErrorEventHandle(rdpContext* context);
860
861 WINPR_ATTR_NODISCARD
862 FREERDP_API UINT getChannelError(const rdpContext* context);
863
864 WINPR_ATTR_NODISCARD
865 FREERDP_API const char* getChannelErrorDescription(const rdpContext* context);
866
867 FREERDP_API void setChannelError(rdpContext* context, UINT errorNum, const char* format, ...);
868
869 WINPR_ATTR_NODISCARD
870 FREERDP_API BOOL checkChannelErrorEvent(rdpContext* context);
871
872 WINPR_ATTR_NODISCARD
873 FREERDP_API const char* freerdp_nego_get_routing_token(const rdpContext* context,
874 DWORD* length);
875
882 WINPR_ATTR_NODISCARD
883 FREERDP_API CONNECTION_STATE freerdp_get_state(const rdpContext* context);
884
891 WINPR_ATTR_NODISCARD
892 FREERDP_API const char* freerdp_state_string(CONNECTION_STATE state);
893
903 WINPR_ATTR_NODISCARD
904 FREERDP_API BOOL freerdp_is_active_state(const rdpContext* context);
905
906 WINPR_ATTR_NODISCARD
907 FREERDP_API BOOL freerdp_channels_from_mcs(rdpSettings* settings, const rdpContext* context);
908
909 WINPR_ATTR_NODISCARD
910 FREERDP_API BOOL freerdp_is_valid_mcs_create_request(const BYTE* data, size_t size);
911
912 WINPR_ATTR_NODISCARD
913 FREERDP_API BOOL freerdp_is_valid_mcs_create_response(const BYTE* data, size_t size);
914
927 WINPR_ATTR_NODISCARD
928 FREERDP_API BOOL freerdp_persist_credentials(rdpContext* context);
929
938 WINPR_ATTR_NODISCARD
939 FREERDP_API BOOL freerdp_set_common_access_token(rdpContext* context,
940 pGetCommonAccessToken GetCommonAccessToken);
941
948 WINPR_ATTR_NODISCARD
949 FREERDP_API pGetCommonAccessToken freerdp_get_common_access_token(const rdpContext* context);
950
951#ifdef __cplusplus
952}
953#endif
954
955#endif /* FREERDP_H */
ALIGN64 char ** argv
Definition freerdp.h:355
ALIGN64 rdpRdp * rdp
Definition freerdp.h:370
ALIGN64 freerdp_peer * peer
Definition freerdp.h:340
ALIGN64 BOOL ServerMode
Definition freerdp.h:344
ALIGN64 rdpGdi * gdi
Definition freerdp.h:375
ALIGN64 int argc
Definition freerdp.h:350
ALIGN64 freerdp * instance
Definition freerdp.h:336
UINT64 paddingD[64 - 61]
Definition freerdp.h:572
WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificateEx VerifyCertificateEx
Definition freerdp.h:587
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback Redirect
Definition freerdp.h:554
WINPR_ATTR_NODISCARD ALIGN64 pLogonErrorInfo LogonErrorInfo
Definition freerdp.h:529
WINPR_ATTR_NODISCARD ALIGN64 pContextNew ContextNew
Definition freerdp.h:481
ALIGN64 pPostDisconnect PostDisconnect
Definition freerdp.h:533
WINPR_ATTR_NODISCARD ALIGN64 pAuthenticateEx AuthenticateEx
Definition freerdp.h:600
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback LoadChannels
Definition freerdp.h:561
ALIGN64 rdpContext * context
Definition freerdp.h:428
WINPR_ATTR_NODISCARD ALIGN64 pPresentGatewayMessage PresentGatewayMessage
Definition freerdp.h:550
ALIGN64 pContextFree ContextFree
Definition freerdp.h:487
WINPR_ATTR_NODISCARD ALIGN64 pVerifyX509Certificate VerifyX509Certificate
Definition freerdp.h:525
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback PreConnect
Definition freerdp.h:496
WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificateEx VerifyChangedCertificateEx
Definition freerdp.h:591
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback PostConnect
Definition freerdp.h:502
Definition rdp.h:148