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 WINPR_DEPRECATED_VAR("Use pVerifyCertificateEx",
224 typedef DWORD (*pVerifyCertificate)(
225 freerdp* instance, const char* common_name, const char* subject,
226 const char* issuer, const char* fingerprint, BOOL host_mismatch));
227#endif
228
244 typedef DWORD (*pVerifyCertificateEx)(freerdp* instance, const char* host, UINT16 port,
245 const char* common_name, const char* subject,
246 const char* issuer, const char* fingerprint, DWORD flags);
247
263#if defined(WITH_FREERDP_DEPRECATED)
264 WINPR_DEPRECATED_VAR("Use pVerifyChangedCertificateEx",
265 typedef DWORD (*pVerifyChangedCertificate)(
266 freerdp* instance, const char* common_name, const char* subject,
267 const char* issuer, const char* new_fingerprint,
268 const char* old_subject, const char* old_issuer,
269 const char* old_fingerprint));
270#endif
271
292 typedef DWORD (*pVerifyChangedCertificateEx)(freerdp* instance, const char* host, UINT16 port,
293 const char* common_name, const char* subject,
294 const char* issuer, const char* new_fingerprint,
295 const char* old_subject, const char* old_issuer,
296 const char* old_fingerprint, DWORD flags);
297
311 typedef int (*pVerifyX509Certificate)(freerdp* instance, const BYTE* data, size_t length,
312 const char* hostname, UINT16 port, DWORD flags);
313
314 typedef int (*pLogonErrorInfo)(freerdp* instance, UINT32 data, UINT32 type);
315
316 typedef BOOL (*pSendChannelData)(freerdp* instance, UINT16 channelId, const BYTE* data,
317 size_t size);
318 typedef BOOL (*pSendChannelPacket)(freerdp* instance, UINT16 channelId, size_t totalSize,
319 UINT32 flags, const BYTE* data, size_t chunkSize);
320 typedef BOOL (*pReceiveChannelData)(freerdp* instance, UINT16 channelId, const BYTE* data,
321 size_t size, UINT32 flags, size_t totalSize);
322
323 /* type can be one of the GATEWAY_MESSAGE_ type defines */
324 typedef BOOL (*pPresentGatewayMessage)(freerdp* instance, UINT32 type, BOOL isDisplayMandatory,
325 BOOL isConsentMandatory, size_t length,
326 const WCHAR* message);
327
334 {
335 ALIGN64 freerdp* instance;
339 ALIGN64 freerdp_peer* peer;
343 ALIGN64 BOOL ServerMode;
345 ALIGN64 UINT32 LastError; /* 3 */
346
347 UINT64 paddingA[16 - 4]; /* 4 */
348
349 ALIGN64 int argc;
354 ALIGN64 char** argv;
360 ALIGN64 wPubSub* pubSub; /* (offset 18) */
361
362 ALIGN64 HANDLE channelErrorEvent; /* (offset 19)*/
363 ALIGN64 UINT channelErrorNum; /*(offset 20)*/
364 ALIGN64 char* errorDescription; /*(offset 21)*/
365
366 UINT64 paddingB[32 - 22]; /* 22 */
367
368 ALIGN64 rdpRdp*
374 ALIGN64 rdpGdi* gdi;
378 ALIGN64 rdpRail* rail; /* 34 */
379 ALIGN64 rdpCache* cache; /* 35 */
380 ALIGN64 rdpChannels* channels; /* 36 */
381 ALIGN64 rdpGraphics* graphics; /* 37 */
382 ALIGN64 rdpInput* input; /* 38 owned by rdpRdp */
383 ALIGN64 rdpUpdate* update; /* 39 owned by rdpRdp */
384 ALIGN64 rdpSettings* settings; /* 40 owned by rdpRdp */
385 ALIGN64 rdpMetrics* metrics; /* 41 */
386 ALIGN64 rdpCodecs* codecs; /* 42 */
387 ALIGN64 rdpAutoDetect* autodetect; /* 43 owned by rdpRdp */
388 UINT64 paddingC1[45 - 44]; /* 44 */
389 ALIGN64 int disconnectUltimatum; /* 45 */
390 UINT64 paddingC[64 - 46]; /* 46 */
391
392 ALIGN64 rdpStreamDumpContext* dump; /* 64 */
393 ALIGN64 wLog* log; /* 65 */
394
395 UINT64 paddingD[96 - 66]; /* 66 */
396 UINT64 paddingE[128 - 96]; /* 96 */
397 };
398
406 enum Disconnect_Ultimatum
407 {
408 Disconnect_Ultimatum_domain_disconnected = 0,
409 Disconnect_Ultimatum_provider_initiated = 1,
410 Disconnect_Ultimatum_token_purged = 2,
411 Disconnect_Ultimatum_user_requested = 3,
412 Disconnect_Ultimatum_channel_purged = 4
413 };
414
415#include <freerdp/client.h>
416
425 {
426 ALIGN64
427 rdpContext* context;
437 ALIGN64 RDP_CLIENT_ENTRY_POINTS* pClientEntryPoints;
438
439 UINT64 paddingA[16 - 2]; /* 2 */
440
441#if defined(WITH_FREERDP_DEPRECATED)
442 WINPR_DEPRECATED_VAR("use rdpContext::input instead", ALIGN64 rdpInput* input;) /* (offset
443 16) Input handle for the connection. Will be initialized by a call
444 to freerdp_context_new() owned by rdpRdp */
445 WINPR_DEPRECATED_VAR("use rdpContext::update instead",
446 ALIGN64 rdpUpdate* update;) /* (offset 17)
447 Update display parameters. Used to register display events callbacks
448and settings. Will be initialized by a call to freerdp_context_new() owned by rdpRdp */
449 WINPR_DEPRECATED_VAR("use rdpContext::settings instead",
450 ALIGN64 rdpSettings* settings;)
456 WINPR_DEPRECATED_VAR("use rdpContext::autodetect instead",
457 ALIGN64 rdpAutoDetect* autodetect;) /* (offset 19)
458 Auto-Detect handle for the connection.
459 Will be initialized by a call to freerdp_context_new()
460owned by rdpRdp */
461#else
462 UINT64 paddingX[4];
463#endif
464 ALIGN64 rdpHeartbeat* heartbeat; /* (offset 21) owned by rdpRdp*/
465
466 UINT64 paddingB[32 - 21]; /* 21 */
467
468 ALIGN64 size_t
469 ContextSize; /* (offset 32)
470 Specifies the size of the 'context' field. freerdp_context_new() will use this
471 size to allocate the context buffer. freerdp_new() sets it to
472 sizeof(rdpContext). If modifying it, there should always be a minimum of
473 sizeof(rdpContext), as the freerdp library will assume it can use the 'context'
474 field to set the required information in it. Clients will typically make it
475 bigger, and use a context structure embedding the rdpContext, and adding
476 additional information after that.
477 */
478
479 WINPR_ATTR_NODISCARD ALIGN64 pContextNew
485 ALIGN64 pContextFree
490 UINT64 paddingC[47 - 35]; /* 35 */
491
492 ALIGN64 UINT ConnectionCallbackState; /* 47 */
493
494 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
500 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
506 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate Authenticate;
510#if defined(WITH_FREERDP_DEPRECATED)
511 WINPR_DEPRECATED_VAR("Use VerifyCertificateEx or VerifyX509Certificate instead",
512 WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificate
513 VerifyCertificate;)
514 WINPR_DEPRECATED_VAR("Use VerifyChangedCertificateEx or VerifyX509Certificate instead",
515 WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificate
516 VerifyChangedCertificate;)
517#else
518 ALIGN64 UINT64 reserved[2];
519#endif
520 WINPR_ATTR_NODISCARD ALIGN64 pVerifyX509Certificate
524 WINPR_ATTR_NODISCARD ALIGN64 pLogonErrorInfo
528 ALIGN64 pPostDisconnect
537 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate GatewayAuthenticate;
542 WINPR_ATTR_NODISCARD ALIGN64 pPresentGatewayMessage PresentGatewayMessage;
546 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback Redirect;
552 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
557 ALIGN64 pPostDisconnect
558 PostFinalDisconnect;
564 UINT64 paddingD[64 - 61]; /* 61 */
565
566 WINPR_ATTR_NODISCARD ALIGN64 pSendChannelData
567 SendChannelData; /* (offset 64)
568 Callback for sending data to a channel.
569 By default, it is set by freerdp_new() to freerdp_send_channel_data(), which
570 eventually calls freerdp_channel_send() */
571 WINPR_ATTR_NODISCARD ALIGN64 pReceiveChannelData
572 ReceiveChannelData; /* (offset 65)
573 Callback for receiving data from a channel.
574 This is called by freerdp_channel_process() (if not nullptr).
575 Clients will typically use a function that calls freerdp_channels_data()
576 to perform the needed tasks. */
577
578 WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificateEx
582 WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificateEx
586 WINPR_ATTR_NODISCARD ALIGN64 pSendChannelPacket
587 SendChannelPacket; /* (offset 68)
588 * Callback for sending RAW data to a channel. In contrast to
589 * SendChannelData data fragmentation is up to the user and this
590 * function sends data as is with the provided flags.
591 */
592 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticateEx AuthenticateEx;
596 WINPR_ATTR_NODISCARD ALIGN64 pChooseSmartcard
597 ChooseSmartcard; /* (offset 70)
598 Callback for choosing a smartcard for logon.
599 Used when multiple smartcards are available. Returns an index into a list
600 of SmartcardCertInfo pointers */
601 WINPR_ATTR_NODISCARD ALIGN64 pGetAccessToken GetAccessToken; /* (offset 71)
602 Callback for obtaining an access token
603 for \b AccessTokenType authentication */
604 WINPR_ATTR_NODISCARD ALIGN64 pRetryDialog
605 RetryDialog; /* (offset 72) Callback for displaying a dialog in case of
606 something needs a retry */
607 UINT64 paddingE[80 - 73]; /* 73 */
608 };
609
611 {
612 wListDictionary* init;
613 wListDictionary* open;
614 };
615 typedef struct rdp_channel_handles rdpChannelHandles;
616
617 FREERDP_API void freerdp_context_free(freerdp* instance);
618
619 WINPR_ATTR_NODISCARD
620 FREERDP_API BOOL freerdp_context_new(freerdp* instance);
621
622 WINPR_ATTR_NODISCARD
623 FREERDP_API BOOL freerdp_context_new_ex(freerdp* instance, rdpSettings* settings);
624
625 WINPR_ATTR_NODISCARD
626 FREERDP_API BOOL freerdp_context_reset(freerdp* instance);
627
628 WINPR_ATTR_NODISCARD
629 FREERDP_API BOOL freerdp_connect(freerdp* instance);
630
631#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
632 WINPR_DEPRECATED_VAR("use freerdp_abort_connect_context instead",
633 FREERDP_API BOOL freerdp_abort_connect(freerdp* instance));
634#endif
635
636 FREERDP_API BOOL freerdp_abort_connect_context(rdpContext* context);
637
638 WINPR_ATTR_NODISCARD
639 FREERDP_API HANDLE freerdp_abort_event(rdpContext* context);
640
641#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
642 WINPR_DEPRECATED_VAR("use freerdp_shall_disconnect_context instead",
643 WINPR_ATTR_NODISCARD FREERDP_API BOOL
644 freerdp_shall_disconnect(const freerdp* instance));
645#endif
646
647 WINPR_ATTR_NODISCARD
648 FREERDP_API BOOL freerdp_shall_disconnect_context(const rdpContext* context);
649
650 FREERDP_API BOOL freerdp_disconnect(freerdp* instance);
651
660 WINPR_ATTR_NODISCARD
661 FREERDP_API const char* freerdp_disconnect_reason_string(int reason);
662
663#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
664 WINPR_DEPRECATED_VAR("use freerdp_disconnect_before_reconnect_context instead",
665 WINPR_ATTR_NODISCARD FREERDP_API BOOL
666 freerdp_disconnect_before_reconnect(freerdp* instance));
667#endif
668
669 WINPR_ATTR_NODISCARD
670 FREERDP_API BOOL freerdp_disconnect_before_reconnect_context(rdpContext* context);
671
672 WINPR_ATTR_NODISCARD
673 FREERDP_API BOOL freerdp_reconnect(freerdp* instance);
674
675 WINPR_ATTR_NODISCARD
676 FREERDP_API UINT freerdp_channels_attach(freerdp* instance);
677
678 WINPR_ATTR_NODISCARD
679 FREERDP_API UINT freerdp_channels_detach(freerdp* instance);
680
681#if defined(WITH_FREERDP_DEPRECATED)
682 WINPR_DEPRECATED_VAR("Use freerdp_get_event_handles",
683 WINPR_ATTR_NODISCARD FREERDP_API BOOL
684 freerdp_get_fds(freerdp* instance, void** rfds, int* rcount,
685 void** wfds, int* wcount));
686#endif
687
688 WINPR_ATTR_NODISCARD
689 FREERDP_API BOOL freerdp_check_fds(freerdp* instance);
690
691 WINPR_ATTR_NODISCARD
692 FREERDP_API DWORD freerdp_get_event_handles(rdpContext* context, HANDLE* events, DWORD count);
693
694 WINPR_ATTR_NODISCARD
695 FREERDP_API BOOL freerdp_check_event_handles(rdpContext* context);
696
697 WINPR_ATTR_NODISCARD
698 FREERDP_API wMessageQueue* freerdp_get_message_queue(freerdp* instance, DWORD id);
699
700 WINPR_ATTR_NODISCARD
701 FREERDP_API HANDLE freerdp_get_message_queue_event_handle(freerdp* instance, DWORD id);
702
703 WINPR_ATTR_NODISCARD
704 FREERDP_API int freerdp_message_queue_process_message(freerdp* instance, DWORD id,
705 wMessage* message);
706
707 WINPR_ATTR_NODISCARD
708 FREERDP_API int freerdp_message_queue_process_pending_messages(freerdp* instance, DWORD id);
709
710 WINPR_ATTR_NODISCARD
711 FREERDP_API UINT32 freerdp_error_info(const freerdp* instance);
712
713 FREERDP_API void freerdp_set_error_info(rdpRdp* rdp, UINT32 error);
714
715 WINPR_ATTR_NODISCARD
716 FREERDP_API BOOL freerdp_send_error_info(rdpRdp* rdp);
717
718 WINPR_ATTR_NODISCARD
719 FREERDP_API BOOL freerdp_get_stats(const rdpRdp* rdp, UINT64* inBytes, UINT64* outBytes,
720 UINT64* inPackets, UINT64* outPackets);
721
722 FREERDP_API void freerdp_get_version(int* major, int* minor, int* revision);
723
724 WINPR_ATTR_NODISCARD
725 FREERDP_API const char* freerdp_get_version_string(void);
726
727 WINPR_ATTR_NODISCARD
728 FREERDP_API const char* freerdp_get_build_revision(void);
729
730 WINPR_ATTR_NODISCARD
731 FREERDP_API const char* freerdp_get_build_config(void);
732
733 FREERDP_API void freerdp_free(freerdp* instance);
734
735 WINPR_ATTR_MALLOC(freerdp_free, 1)
736 WINPR_ATTR_NODISCARD
737 FREERDP_API freerdp* freerdp_new(void);
738
739 WINPR_ATTR_NODISCARD
740 FREERDP_API BOOL freerdp_focus_required(freerdp* instance);
741 FREERDP_API void freerdp_set_focus(freerdp* instance);
742
743 WINPR_ATTR_NODISCARD
744 FREERDP_API int freerdp_get_disconnect_ultimatum(const rdpContext* context);
745
746 WINPR_ATTR_NODISCARD
747 FREERDP_API UINT32 freerdp_get_last_error(const rdpContext* context);
748
749 WINPR_ATTR_NODISCARD
750 FREERDP_API const char* freerdp_get_last_error_name(UINT32 code);
751
752 WINPR_ATTR_NODISCARD
753 FREERDP_API const char* freerdp_get_last_error_string(UINT32 code);
754
755 WINPR_ATTR_NODISCARD
756 FREERDP_API const char* freerdp_get_last_error_category(UINT32 code);
757
758#define freerdp_set_last_error(context, lastError) \
759 freerdp_set_last_error_ex((context), (lastError), __func__, __FILE__, __LINE__)
760
761#define freerdp_set_last_error_if_not(context, lastError) \
762 do \
763 { \
764 if (freerdp_get_last_error(context) == FREERDP_ERROR_SUCCESS) \
765 freerdp_set_last_error_log(context, lastError); \
766 } while (0)
767
768#define freerdp_set_last_error_log(context, lastError) \
769 freerdp_set_last_error_ex((context), (lastError), __func__, __FILE__, __LINE__)
770 FREERDP_API void freerdp_set_last_error_ex(rdpContext* context, UINT32 lastError,
771 const char* fkt, const char* file, int line);
772
773 WINPR_ATTR_NODISCARD
774 FREERDP_API const char* freerdp_get_logon_error_info_type(UINT32 type);
775
776 WINPR_ATTR_NODISCARD
777 FREERDP_API const char* freerdp_get_logon_error_info_type_ex(UINT32 type, char* buffer,
778 size_t size);
779
780 WINPR_ATTR_NODISCARD
781 FREERDP_API const char* freerdp_get_logon_error_info_data(UINT32 data);
782
783 WINPR_ATTR_NODISCARD
784 FREERDP_API const char* freerdp_get_logon_error_info_data_ex(UINT32 data, char* buffer,
785 size_t size);
786
787 WINPR_ATTR_NODISCARD
788 FREERDP_API ULONG freerdp_get_transport_sent(const rdpContext* context, BOOL resetCount);
789
790 WINPR_ATTR_NODISCARD
791 FREERDP_API BOOL freerdp_nla_impersonate(rdpContext* context);
792
793 WINPR_ATTR_NODISCARD
794 FREERDP_API BOOL freerdp_nla_revert_to_self(rdpContext* context);
795
796 WINPR_ATTR_NODISCARD
797 FREERDP_API UINT32 freerdp_get_nla_sspi_error(const rdpContext* context);
798
807 WINPR_ATTR_NODISCARD
808 FREERDP_API BOOL freerdp_nla_encrypt(rdpContext* context, const SecBuffer* inBuffer,
809 SecBuffer* outBuffer);
810
819 WINPR_ATTR_NODISCARD
820 FREERDP_API BOOL freerdp_nla_decrypt(rdpContext* context, const SecBuffer* inBuffer,
821 SecBuffer* outBuffer);
822
832 WINPR_ATTR_NODISCARD
833 FREERDP_API SECURITY_STATUS freerdp_nla_QueryContextAttributes(rdpContext* context,
834 DWORD ulAttr, PVOID pBuffer);
835
845 WINPR_ATTR_NODISCARD
846 FREERDP_API SECURITY_STATUS freerdp_nla_FreeContextBuffer(rdpContext* context, PVOID pBuffer);
847
848 FREERDP_API void clearChannelError(rdpContext* context);
849
850 WINPR_ATTR_NODISCARD
851 FREERDP_API HANDLE getChannelErrorEventHandle(rdpContext* context);
852
853 WINPR_ATTR_NODISCARD
854 FREERDP_API UINT getChannelError(const rdpContext* context);
855
856 WINPR_ATTR_NODISCARD
857 FREERDP_API const char* getChannelErrorDescription(const rdpContext* context);
858
859 FREERDP_API void setChannelError(rdpContext* context, UINT errorNum, const char* format, ...);
860
861 WINPR_ATTR_NODISCARD
862 FREERDP_API BOOL checkChannelErrorEvent(rdpContext* context);
863
864 WINPR_ATTR_NODISCARD
865 FREERDP_API const char* freerdp_nego_get_routing_token(const rdpContext* context,
866 DWORD* length);
867
874 WINPR_ATTR_NODISCARD
875 FREERDP_API CONNECTION_STATE freerdp_get_state(const rdpContext* context);
876
883 WINPR_ATTR_NODISCARD
884 FREERDP_API const char* freerdp_state_string(CONNECTION_STATE state);
885
895 WINPR_ATTR_NODISCARD
896 FREERDP_API BOOL freerdp_is_active_state(const rdpContext* context);
897
898 WINPR_ATTR_NODISCARD
899 FREERDP_API BOOL freerdp_channels_from_mcs(rdpSettings* settings, const rdpContext* context);
900
901 WINPR_ATTR_NODISCARD
902 FREERDP_API BOOL freerdp_is_valid_mcs_create_request(const BYTE* data, size_t size);
903
904 WINPR_ATTR_NODISCARD
905 FREERDP_API BOOL freerdp_is_valid_mcs_create_response(const BYTE* data, size_t size);
906
919 WINPR_ATTR_NODISCARD
920 FREERDP_API BOOL freerdp_persist_credentials(rdpContext* context);
921
930 WINPR_ATTR_NODISCARD
931 FREERDP_API BOOL freerdp_set_common_access_token(rdpContext* context,
932 pGetCommonAccessToken GetCommonAccessToken);
933
940 WINPR_ATTR_NODISCARD
941 FREERDP_API pGetCommonAccessToken freerdp_get_common_access_token(const rdpContext* context);
942
943#ifdef __cplusplus
944}
945#endif
946
947#endif /* FREERDP_H */
ALIGN64 char ** argv
Definition freerdp.h:354
ALIGN64 rdpRdp * rdp
Definition freerdp.h:369
ALIGN64 freerdp_peer * peer
Definition freerdp.h:339
ALIGN64 BOOL ServerMode
Definition freerdp.h:343
ALIGN64 rdpGdi * gdi
Definition freerdp.h:374
ALIGN64 int argc
Definition freerdp.h:349
ALIGN64 freerdp * instance
Definition freerdp.h:335
UINT64 paddingD[64 - 61]
Definition freerdp.h:564
WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificateEx VerifyCertificateEx
Definition freerdp.h:579
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback Redirect
Definition freerdp.h:546
WINPR_ATTR_NODISCARD ALIGN64 pLogonErrorInfo LogonErrorInfo
Definition freerdp.h:525
WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate Authenticate
Definition freerdp.h:506
WINPR_ATTR_NODISCARD ALIGN64 pContextNew ContextNew
Definition freerdp.h:480
ALIGN64 pPostDisconnect PostDisconnect
Definition freerdp.h:529
WINPR_ATTR_NODISCARD ALIGN64 pAuthenticateEx AuthenticateEx
Definition freerdp.h:592
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback LoadChannels
Definition freerdp.h:553
ALIGN64 rdpContext * context
Definition freerdp.h:427
WINPR_ATTR_NODISCARD ALIGN64 pPresentGatewayMessage PresentGatewayMessage
Definition freerdp.h:542
WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate GatewayAuthenticate
Definition freerdp.h:537
ALIGN64 pContextFree ContextFree
Definition freerdp.h:486
WINPR_ATTR_NODISCARD ALIGN64 pVerifyX509Certificate VerifyX509Certificate
Definition freerdp.h:521
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback PreConnect
Definition freerdp.h:495
WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificateEx VerifyChangedCertificateEx
Definition freerdp.h:583
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback PostConnect
Definition freerdp.h:501
Definition rdp.h:148