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 } rdp_auth_reason;
90
91 typedef BOOL (*pContextNew)(freerdp* instance, rdpContext* context);
92 typedef void (*pContextFree)(freerdp* instance, rdpContext* context);
93
94 typedef BOOL (*pConnectCallback)(freerdp* instance);
95 typedef void (*pPostDisconnect)(freerdp* instance);
96
110 typedef BOOL (*pAuthenticate)(freerdp* instance, char** username, char** password,
111 char** domain);
112
134 typedef BOOL (*pAuthenticateEx)(freerdp* instance, char** username, char** password,
135 char** domain, rdp_auth_reason reason);
136
155 typedef BOOL (*pChooseSmartcard)(freerdp* instance, SmartcardCertInfo** cert_list, DWORD count,
156 DWORD* choice, BOOL gateway);
157
158 typedef enum
159 {
160 ACCESS_TOKEN_TYPE_AAD,
161 ACCESS_TOKEN_TYPE_AVD
162 } AccessTokenType;
163
174 typedef BOOL (*pGetAccessToken)(freerdp* instance, AccessTokenType tokenType, char** token,
175 size_t count, ...);
176
190 typedef BOOL (*pGetCommonAccessToken)(rdpContext* context, AccessTokenType tokenType,
191 char** token, size_t count, ...);
192
204 typedef SSIZE_T (*pRetryDialog)(freerdp* instance, const char* what, size_t current,
205 void* userarg);
206
222#if defined(WITH_FREERDP_DEPRECATED)
223 typedef WINPR_DEPRECATED_VAR(
224 "Use pVerifyCertificateEx",
225 DWORD (*pVerifyCertificate)(freerdp* instance, const char* common_name, const char* subject,
226 const char* issuer, const char* fingerprint,
227 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 typedef WINPR_DEPRECATED_VAR(
266 "Use pVerifyChangedCertificateEx",
267 DWORD (*pVerifyChangedCertificate)(freerdp* instance, const char* common_name,
268 const char* subject, const char* issuer,
269 const char* new_fingerprint, const char* old_subject,
270 const char* old_issuer, 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 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate Authenticate;
511#if defined(WITH_FREERDP_DEPRECATED)
512 WINPR_DEPRECATED_VAR("Use VerifyCertificateEx or VerifyX509Certificate instead",
513 WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificate
514 VerifyCertificate;)
515 WINPR_DEPRECATED_VAR("Use VerifyChangedCertificateEx or VerifyX509Certificate instead",
516 WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificate
517 VerifyChangedCertificate;)
518#else
519 ALIGN64 UINT64 reserved[2];
520#endif
521 WINPR_ATTR_NODISCARD ALIGN64 pVerifyX509Certificate
525 WINPR_ATTR_NODISCARD ALIGN64 pLogonErrorInfo
529 ALIGN64 pPostDisconnect
538 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate GatewayAuthenticate;
543 WINPR_ATTR_NODISCARD ALIGN64 pPresentGatewayMessage PresentGatewayMessage;
547 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback Redirect;
553 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
558 ALIGN64 pPostDisconnect
559 PostFinalDisconnect;
565 UINT64 paddingD[64 - 61]; /* 61 */
566
567 WINPR_ATTR_NODISCARD ALIGN64 pSendChannelData
568 SendChannelData; /* (offset 64)
569 Callback for sending data to a channel.
570 By default, it is set by freerdp_new() to freerdp_send_channel_data(), which
571 eventually calls freerdp_channel_send() */
572 WINPR_ATTR_NODISCARD ALIGN64 pReceiveChannelData
573 ReceiveChannelData; /* (offset 65)
574 Callback for receiving data from a channel.
575 This is called by freerdp_channel_process() (if not nullptr).
576 Clients will typically use a function that calls freerdp_channels_data()
577 to perform the needed tasks. */
578
579 WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificateEx
583 WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificateEx
587 WINPR_ATTR_NODISCARD ALIGN64 pSendChannelPacket
588 SendChannelPacket; /* (offset 68)
589 * Callback for sending RAW data to a channel. In contrast to
590 * SendChannelData data fragmentation is up to the user and this
591 * function sends data as is with the provided flags.
592 */
593 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticateEx AuthenticateEx;
597 WINPR_ATTR_NODISCARD ALIGN64 pChooseSmartcard
598 ChooseSmartcard; /* (offset 70)
599 Callback for choosing a smartcard for logon.
600 Used when multiple smartcards are available. Returns an index into a list
601 of SmartcardCertInfo pointers */
602 WINPR_ATTR_NODISCARD ALIGN64 pGetAccessToken GetAccessToken; /* (offset 71)
603 Callback for obtaining an access token
604 for \b AccessTokenType authentication */
605 WINPR_ATTR_NODISCARD ALIGN64 pRetryDialog
606 RetryDialog; /* (offset 72) Callback for displaying a dialog in case of
607 something needs a retry */
608 UINT64 paddingE[80 - 73]; /* 73 */
609 };
610
612 {
613 wListDictionary* init;
614 wListDictionary* open;
615 };
616 typedef struct rdp_channel_handles rdpChannelHandles;
617
618 FREERDP_API void freerdp_context_free(freerdp* instance);
619
620 WINPR_ATTR_NODISCARD
621 FREERDP_API BOOL freerdp_context_new(freerdp* instance);
622
623 WINPR_ATTR_NODISCARD
624 FREERDP_API BOOL freerdp_context_new_ex(freerdp* instance, rdpSettings* settings);
625
626 WINPR_ATTR_NODISCARD
627 FREERDP_API BOOL freerdp_context_reset(freerdp* instance);
628
629 WINPR_ATTR_NODISCARD
630 FREERDP_API BOOL freerdp_connect(freerdp* instance);
631
632#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
633 WINPR_DEPRECATED_VAR("use freerdp_abort_connect_context instead",
634 FREERDP_API BOOL freerdp_abort_connect(freerdp* instance));
635#endif
636
637 FREERDP_API BOOL freerdp_abort_connect_context(rdpContext* context);
638
639 WINPR_ATTR_NODISCARD
640 FREERDP_API HANDLE freerdp_abort_event(rdpContext* context);
641
642#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
643 WINPR_DEPRECATED_VAR("use freerdp_shall_disconnect_context instead",
644 WINPR_ATTR_NODISCARD FREERDP_API BOOL
645 freerdp_shall_disconnect(const freerdp* instance));
646#endif
647
648 WINPR_ATTR_NODISCARD
649 FREERDP_API BOOL freerdp_shall_disconnect_context(const rdpContext* context);
650
651 FREERDP_API BOOL freerdp_disconnect(freerdp* instance);
652
661 WINPR_ATTR_NODISCARD
662 FREERDP_API const char* freerdp_disconnect_reason_string(int reason);
663
664#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
665 WINPR_DEPRECATED_VAR("use freerdp_disconnect_before_reconnect_context instead",
666 WINPR_ATTR_NODISCARD FREERDP_API BOOL
667 freerdp_disconnect_before_reconnect(freerdp* instance));
668#endif
669
670 WINPR_ATTR_NODISCARD
671 FREERDP_API BOOL freerdp_disconnect_before_reconnect_context(rdpContext* context);
672
673 WINPR_ATTR_NODISCARD
674 FREERDP_API BOOL freerdp_reconnect(freerdp* instance);
675
676 WINPR_ATTR_NODISCARD
677 FREERDP_API UINT freerdp_channels_attach(freerdp* instance);
678
679 WINPR_ATTR_NODISCARD
680 FREERDP_API UINT freerdp_channels_detach(freerdp* instance);
681
682#if defined(WITH_FREERDP_DEPRECATED)
683 WINPR_DEPRECATED_VAR("Use freerdp_get_event_handles",
684 WINPR_ATTR_NODISCARD FREERDP_API BOOL
685 freerdp_get_fds(freerdp* instance, void** rfds, int* rcount,
686 void** wfds, int* wcount));
687#endif
688
689 WINPR_ATTR_NODISCARD
690 FREERDP_API BOOL freerdp_check_fds(freerdp* instance);
691
692 WINPR_ATTR_NODISCARD
693 FREERDP_API DWORD freerdp_get_event_handles(rdpContext* context, HANDLE* events, DWORD count);
694
695 WINPR_ATTR_NODISCARD
696 FREERDP_API BOOL freerdp_check_event_handles(rdpContext* context);
697
698 WINPR_ATTR_NODISCARD
699 FREERDP_API wMessageQueue* freerdp_get_message_queue(freerdp* instance, DWORD id);
700
701 WINPR_ATTR_NODISCARD
702 FREERDP_API HANDLE freerdp_get_message_queue_event_handle(freerdp* instance, DWORD id);
703
704 WINPR_ATTR_NODISCARD
705 FREERDP_API int freerdp_message_queue_process_message(freerdp* instance, DWORD id,
706 wMessage* message);
707
708 WINPR_ATTR_NODISCARD
709 FREERDP_API int freerdp_message_queue_process_pending_messages(freerdp* instance, DWORD id);
710
711 WINPR_ATTR_NODISCARD
712 FREERDP_API UINT32 freerdp_error_info(const freerdp* instance);
713
714 FREERDP_API void freerdp_set_error_info(rdpRdp* rdp, UINT32 error);
715
716 WINPR_ATTR_NODISCARD
717 FREERDP_API BOOL freerdp_send_error_info(rdpRdp* rdp);
718
719 WINPR_ATTR_NODISCARD
720 FREERDP_API BOOL freerdp_get_stats(const rdpRdp* rdp, UINT64* inBytes, UINT64* outBytes,
721 UINT64* inPackets, UINT64* outPackets);
722
723 FREERDP_API void freerdp_get_version(int* major, int* minor, int* revision);
724
725 WINPR_ATTR_NODISCARD
726 FREERDP_API const char* freerdp_get_version_string(void);
727
728 WINPR_ATTR_NODISCARD
729 FREERDP_API const char* freerdp_get_build_revision(void);
730
731 WINPR_ATTR_NODISCARD
732 FREERDP_API const char* freerdp_get_build_config(void);
733
734 FREERDP_API void freerdp_free(freerdp* instance);
735
736 WINPR_ATTR_MALLOC(freerdp_free, 1)
737 WINPR_ATTR_NODISCARD
738 FREERDP_API freerdp* freerdp_new(void);
739
740 WINPR_ATTR_NODISCARD
741 FREERDP_API BOOL freerdp_focus_required(freerdp* instance);
742 FREERDP_API void freerdp_set_focus(freerdp* instance);
743
744 WINPR_ATTR_NODISCARD
745 FREERDP_API int freerdp_get_disconnect_ultimatum(const rdpContext* context);
746
747 WINPR_ATTR_NODISCARD
748 FREERDP_API UINT32 freerdp_get_last_error(const rdpContext* context);
749
750 WINPR_ATTR_NODISCARD
751 FREERDP_API const char* freerdp_get_last_error_name(UINT32 code);
752
753 WINPR_ATTR_NODISCARD
754 FREERDP_API const char* freerdp_get_last_error_string(UINT32 code);
755
756 WINPR_ATTR_NODISCARD
757 FREERDP_API const char* freerdp_get_last_error_category(UINT32 code);
758
759#define freerdp_set_last_error(context, lastError) \
760 freerdp_set_last_error_ex((context), (lastError), __func__, __FILE__, __LINE__)
761
762#define freerdp_set_last_error_if_not(context, lastError) \
763 do \
764 { \
765 if (freerdp_get_last_error(context) == FREERDP_ERROR_SUCCESS) \
766 freerdp_set_last_error_log(context, lastError); \
767 } while (0)
768
769#define freerdp_set_last_error_log(context, lastError) \
770 freerdp_set_last_error_ex((context), (lastError), __func__, __FILE__, __LINE__)
771 FREERDP_API void freerdp_set_last_error_ex(rdpContext* context, UINT32 lastError,
772 const char* fkt, const char* file, int line);
773
774 WINPR_ATTR_NODISCARD
775 FREERDP_API const char* freerdp_get_logon_error_info_type(UINT32 type);
776
777 WINPR_ATTR_NODISCARD
778 FREERDP_API const char* freerdp_get_logon_error_info_type_ex(UINT32 type, char* buffer,
779 size_t size);
780
781 WINPR_ATTR_NODISCARD
782 FREERDP_API const char* freerdp_get_logon_error_info_data(UINT32 data);
783
784 WINPR_ATTR_NODISCARD
785 FREERDP_API const char* freerdp_get_logon_error_info_data_ex(UINT32 data, char* buffer,
786 size_t size);
787
788 WINPR_ATTR_NODISCARD
789 FREERDP_API ULONG freerdp_get_transport_sent(const rdpContext* context, BOOL resetCount);
790
791 WINPR_ATTR_NODISCARD
792 FREERDP_API BOOL freerdp_nla_impersonate(rdpContext* context);
793
794 WINPR_ATTR_NODISCARD
795 FREERDP_API BOOL freerdp_nla_revert_to_self(rdpContext* context);
796
797 WINPR_ATTR_NODISCARD
798 FREERDP_API UINT32 freerdp_get_nla_sspi_error(const rdpContext* context);
799
808 WINPR_ATTR_NODISCARD
809 FREERDP_API BOOL freerdp_nla_encrypt(rdpContext* context, const SecBuffer* inBuffer,
810 SecBuffer* outBuffer);
811
820 WINPR_ATTR_NODISCARD
821 FREERDP_API BOOL freerdp_nla_decrypt(rdpContext* context, const SecBuffer* inBuffer,
822 SecBuffer* outBuffer);
823
833 WINPR_ATTR_NODISCARD
834 FREERDP_API SECURITY_STATUS freerdp_nla_QueryContextAttributes(rdpContext* context,
835 DWORD ulAttr, PVOID pBuffer);
836
846 WINPR_ATTR_NODISCARD
847 FREERDP_API SECURITY_STATUS freerdp_nla_FreeContextBuffer(rdpContext* context, PVOID pBuffer);
848
849 FREERDP_API void clearChannelError(rdpContext* context);
850
851 WINPR_ATTR_NODISCARD
852 FREERDP_API HANDLE getChannelErrorEventHandle(rdpContext* context);
853
854 WINPR_ATTR_NODISCARD
855 FREERDP_API UINT getChannelError(const rdpContext* context);
856
857 WINPR_ATTR_NODISCARD
858 FREERDP_API const char* getChannelErrorDescription(const rdpContext* context);
859
860 FREERDP_API void setChannelError(rdpContext* context, UINT errorNum, const char* format, ...);
861
862 WINPR_ATTR_NODISCARD
863 FREERDP_API BOOL checkChannelErrorEvent(rdpContext* context);
864
865 WINPR_ATTR_NODISCARD
866 FREERDP_API const char* freerdp_nego_get_routing_token(const rdpContext* context,
867 DWORD* length);
868
875 WINPR_ATTR_NODISCARD
876 FREERDP_API CONNECTION_STATE freerdp_get_state(const rdpContext* context);
877
884 WINPR_ATTR_NODISCARD
885 FREERDP_API const char* freerdp_state_string(CONNECTION_STATE state);
886
896 WINPR_ATTR_NODISCARD
897 FREERDP_API BOOL freerdp_is_active_state(const rdpContext* context);
898
899 WINPR_ATTR_NODISCARD
900 FREERDP_API BOOL freerdp_channels_from_mcs(rdpSettings* settings, const rdpContext* context);
901
902 WINPR_ATTR_NODISCARD
903 FREERDP_API BOOL freerdp_is_valid_mcs_create_request(const BYTE* data, size_t size);
904
905 WINPR_ATTR_NODISCARD
906 FREERDP_API BOOL freerdp_is_valid_mcs_create_response(const BYTE* data, size_t size);
907
920 WINPR_ATTR_NODISCARD
921 FREERDP_API BOOL freerdp_persist_credentials(rdpContext* context);
922
931 WINPR_ATTR_NODISCARD
932 FREERDP_API BOOL freerdp_set_common_access_token(rdpContext* context,
933 pGetCommonAccessToken GetCommonAccessToken);
934
941 WINPR_ATTR_NODISCARD
942 FREERDP_API pGetCommonAccessToken freerdp_get_common_access_token(const rdpContext* context);
943
944#ifdef __cplusplus
945}
946#endif
947
948#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:565
WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificateEx VerifyCertificateEx
Definition freerdp.h:580
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback Redirect
Definition freerdp.h:547
WINPR_ATTR_NODISCARD ALIGN64 pLogonErrorInfo LogonErrorInfo
Definition freerdp.h:526
WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate Authenticate
Definition freerdp.h:507
WINPR_ATTR_NODISCARD ALIGN64 pContextNew ContextNew
Definition freerdp.h:481
ALIGN64 pPostDisconnect PostDisconnect
Definition freerdp.h:530
WINPR_ATTR_NODISCARD ALIGN64 pAuthenticateEx AuthenticateEx
Definition freerdp.h:593
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback LoadChannels
Definition freerdp.h:554
ALIGN64 rdpContext * context
Definition freerdp.h:428
WINPR_ATTR_NODISCARD ALIGN64 pPresentGatewayMessage PresentGatewayMessage
Definition freerdp.h:543
WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate GatewayAuthenticate
Definition freerdp.h:538
ALIGN64 pContextFree ContextFree
Definition freerdp.h:487
WINPR_ATTR_NODISCARD ALIGN64 pVerifyX509Certificate VerifyX509Certificate
Definition freerdp.h:522
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback PreConnect
Definition freerdp.h:496
WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificateEx VerifyChangedCertificateEx
Definition freerdp.h:584
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback PostConnect
Definition freerdp.h:502
Definition rdp.h:148