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 /* COM interfaces of freerdp/wts_services.h, the rdp_context slots only need their names */
66
67#define MCS_BASE_CHANNEL_ID 1001
68#define MCS_GLOBAL_CHANNEL_ID 1003
69
70/* Flags used by certificate callbacks */
71 typedef enum WINPR_C23_ENUM_TYPE(uint32_t)
72 {
73 VERIFY_CERT_FLAG_NONE = 0x00,
74 VERIFY_CERT_FLAG_LEGACY = 0x02,
75 VERIFY_CERT_FLAG_REDIRECT = 0x10,
76 VERIFY_CERT_FLAG_GATEWAY = 0x20,
77 VERIFY_CERT_FLAG_CHANGED = 0x40,
78 VERIFY_CERT_FLAG_MISMATCH = 0x80,
79 VERIFY_CERT_FLAG_MATCH_LEGACY_SHA1 = 0x100,
80 VERIFY_CERT_FLAG_FP_IS_PEM = 0x200,
81 VERIFY_CERT_FLAG_HTTP = 0x1000
82 } RDP_VERIFY_CERT_FLAG;
83
84/* Message types used by gateway messaging callback */
85#define GATEWAY_MESSAGE_CONSENT 1
86#define GATEWAY_MESSAGE_SERVICE 2
87
88 typedef enum
89 {
90 AUTH_NLA,
91 AUTH_TLS,
92 AUTH_RDP,
93 GW_AUTH_HTTP,
94 GW_AUTH_RDG,
95 GW_AUTH_RPC,
96 AUTH_SMARTCARD_PIN,
97 AUTH_RDSTLS,
98 AUTH_FIDO_PIN
99 } rdp_auth_reason;
100
101 typedef BOOL (*pContextNew)(freerdp* instance, rdpContext* context);
102 typedef void (*pContextFree)(freerdp* instance, rdpContext* context);
103
104 typedef BOOL (*pConnectCallback)(freerdp* instance);
105 typedef void (*pPostDisconnect)(freerdp* instance);
106
107#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
121 typedef BOOL (*pAuthenticate)(freerdp* instance, char** username, char** password,
122 char** domain);
123#endif
124
146 typedef BOOL (*pAuthenticateEx)(freerdp* instance, char** username, char** password,
147 char** domain, rdp_auth_reason reason);
148
167 typedef BOOL (*pChooseSmartcard)(freerdp* instance, SmartcardCertInfo** cert_list, DWORD count,
168 DWORD* choice, BOOL gateway);
169
170 typedef enum
171 {
172 ACCESS_TOKEN_TYPE_AAD,
173 ACCESS_TOKEN_TYPE_AVD
174 } AccessTokenType;
175
186 typedef BOOL (*pGetAccessToken)(freerdp* instance, AccessTokenType tokenType, char** token,
187 size_t count, ...);
188
202 typedef BOOL (*pGetCommonAccessToken)(rdpContext* context, AccessTokenType tokenType,
203 char** token, size_t count, ...);
204
216 typedef SSIZE_T (*pRetryDialog)(freerdp* instance, const char* what, size_t current,
217 void* userarg);
218
234#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
235 WINPR_DEPRECATED_VAR("Use pVerifyCertificateEx",
236 typedef DWORD (*pVerifyCertificate)(
237 freerdp* instance, const char* common_name, const char* subject,
238 const char* issuer, const char* fingerprint, BOOL host_mismatch));
239#endif
240
256 typedef DWORD (*pVerifyCertificateEx)(freerdp* instance, const char* host, UINT16 port,
257 const char* common_name, const char* subject,
258 const char* issuer, const char* fingerprint, DWORD flags);
259
275#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
276 WINPR_DEPRECATED_VAR("Use pVerifyChangedCertificateEx",
277 typedef DWORD (*pVerifyChangedCertificate)(
278 freerdp* instance, const char* common_name, const char* subject,
279 const char* issuer, const char* new_fingerprint,
280 const char* old_subject, const char* old_issuer,
281 const char* old_fingerprint));
282#endif
283
304 typedef DWORD (*pVerifyChangedCertificateEx)(freerdp* instance, const char* host, UINT16 port,
305 const char* common_name, const char* subject,
306 const char* issuer, const char* new_fingerprint,
307 const char* old_subject, const char* old_issuer,
308 const char* old_fingerprint, DWORD flags);
309
323 typedef int (*pVerifyX509Certificate)(freerdp* instance, const BYTE* data, size_t length,
324 const char* hostname, UINT16 port, DWORD flags);
325
326 typedef int (*pLogonErrorInfo)(freerdp* instance, UINT32 data, UINT32 type);
327
328 typedef BOOL (*pSendChannelData)(freerdp* instance, UINT16 channelId, const BYTE* data,
329 size_t size);
330 typedef BOOL (*pSendChannelPacket)(freerdp* instance, UINT16 channelId, size_t totalSize,
331 UINT32 flags, const BYTE* data, size_t chunkSize);
332 typedef BOOL (*pReceiveChannelData)(freerdp* instance, UINT16 channelId, const BYTE* data,
333 size_t size, UINT32 flags, size_t totalSize);
334
335 /* type can be one of the GATEWAY_MESSAGE_ type defines */
336 typedef BOOL (*pPresentGatewayMessage)(freerdp* instance, UINT32 type, BOOL isDisplayMandatory,
337 BOOL isConsentMandatory, size_t length,
338 const WCHAR* message);
339
346 {
347 ALIGN64 freerdp* instance;
351 ALIGN64 freerdp_peer* peer;
355 ALIGN64 BOOL ServerMode;
357 ALIGN64 UINT32 LastError; /* 3 */
358
359 UINT64 paddingA[16 - 4]; /* 4 */
360
361 ALIGN64 int argc;
366 ALIGN64 char** argv;
372 ALIGN64 wPubSub* pubSub; /* (offset 18) */
373
374 ALIGN64 HANDLE channelErrorEvent; /* (offset 19)*/
375 ALIGN64 UINT channelErrorNum; /*(offset 20)*/
376 ALIGN64 char* errorDescription; /*(offset 21)*/
377
378 UINT64 paddingB[32 - 22]; /* 22 */
379
380 ALIGN64 rdpRdp*
386 ALIGN64 rdpGdi* gdi;
390 ALIGN64 rdpRail* rail; /* 34 */
391 ALIGN64 rdpCache* cache; /* 35 */
392 ALIGN64 rdpChannels* channels; /* 36 */
393 ALIGN64 rdpGraphics* graphics; /* 37 */
394 ALIGN64 rdpInput* input; /* 38 owned by rdpRdp */
395 ALIGN64 rdpUpdate* update; /* 39 owned by rdpRdp */
396 ALIGN64 rdpSettings* settings; /* 40 owned by rdpRdp */
397 ALIGN64 rdpMetrics* metrics; /* 41 */
398 ALIGN64 rdpCodecs* codecs; /* 42 */
399 ALIGN64 rdpAutoDetect* autodetect; /* 43 owned by rdpRdp */
400 UINT64 paddingC1[45 - 44]; /* 44 */
401 ALIGN64 int disconnectUltimatum; /* 45 */
402
403 /* Services for virtual channel plugins, with Microsoft's interfaces and behaviour (see
404 * freerdp/wts_services.h): they let a channel, in tree or provided separately, take part in
405 * the rendering (draw video frames in a mapped area, follow the window showing the
406 * session). The two client services are created by the client (in ContextNew or before
407 * connecting) holding one reference, and released and reset to nullptr by the client in
408 * ContextFree; nullptr when the client has none. Channels don't read them directly but call
409 * GetService() on the provider (freerdp_get_plugin_service_provider()), which gives each
410 * its own instance where Microsoft's client does.
411 * @since version 3.34.0 */
412 ALIGN64 IWTSWindowInfoService* windowInfoService; /* 46 set by the client */
413 ALIGN64 IWTSBitmapRenderService* bitmapRenderService; /* 47 set by the client */
414 ALIGN64 IWTSPluginServiceProvider* pluginServiceProvider; /* 48 owned by the core */
415 UINT64 paddingC[64 - 49]; /* 49 */
416
417 ALIGN64 rdpStreamDumpContext* dump; /* 64 */
418 ALIGN64 wLog* log; /* 65 */
419
420 UINT64 paddingD[96 - 66]; /* 66 */
421 UINT64 paddingE[128 - 96]; /* 96 */
422 };
423
431 enum Disconnect_Ultimatum
432 {
433 Disconnect_Ultimatum_domain_disconnected = 0,
434 Disconnect_Ultimatum_provider_initiated = 1,
435 Disconnect_Ultimatum_token_purged = 2,
436 Disconnect_Ultimatum_user_requested = 3,
437 Disconnect_Ultimatum_channel_purged = 4
438 };
439
440#include <freerdp/client.h>
441
450 {
451 ALIGN64
452 rdpContext* context;
462 ALIGN64 RDP_CLIENT_ENTRY_POINTS* pClientEntryPoints;
463
464 UINT64 paddingA[16 - 2]; /* 2 */
465
466#if defined(WITH_FREERDP_DEPRECATED)
467 WINPR_DEPRECATED_VAR("use rdpContext::input instead", ALIGN64 rdpInput* input;) /* (offset
468 16) Input handle for the connection. Will be initialized by a call
469 to freerdp_context_new() owned by rdpRdp */
470 WINPR_DEPRECATED_VAR("use rdpContext::update instead",
471 ALIGN64 rdpUpdate* update;) /* (offset 17)
472 Update display parameters. Used to register display events callbacks
473and settings. Will be initialized by a call to freerdp_context_new() owned by rdpRdp */
474 WINPR_DEPRECATED_VAR("use rdpContext::settings instead",
475 ALIGN64 rdpSettings* settings;)
481 WINPR_DEPRECATED_VAR("use rdpContext::autodetect instead",
482 ALIGN64 rdpAutoDetect* autodetect;) /* (offset 19)
483 Auto-Detect handle for the connection.
484 Will be initialized by a call to freerdp_context_new()
485owned by rdpRdp */
486#else
487 UINT64 paddingX[4];
488#endif
489 ALIGN64 rdpHeartbeat* heartbeat; /* (offset 21) owned by rdpRdp*/
490
491 UINT64 paddingB[32 - 21]; /* 21 */
492
493 ALIGN64 size_t
494 ContextSize; /* (offset 32)
495 Specifies the size of the 'context' field. freerdp_context_new() will use this
496 size to allocate the context buffer. freerdp_new() sets it to
497 sizeof(rdpContext). If modifying it, there should always be a minimum of
498 sizeof(rdpContext), as the freerdp library will assume it can use the 'context'
499 field to set the required information in it. Clients will typically make it
500 bigger, and use a context structure embedding the rdpContext, and adding
501 additional information after that.
502 */
503
504 WINPR_ATTR_NODISCARD ALIGN64 pContextNew
510 ALIGN64 pContextFree
515 UINT64 paddingC[47 - 35]; /* 35 */
516
517 ALIGN64 UINT ConnectionCallbackState; /* 47 */
518
519 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
525 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
531#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
532 WINPR_DEPRECATED_VAR("[since 3.25.0] Use AuthenticateEx instead",
533 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate
534 Authenticate);
539 WINPR_DEPRECATED_VAR("Use VerifyCertificateEx or VerifyX509Certificate instead",
540 WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificate
541 VerifyCertificate);
542 WINPR_DEPRECATED_VAR("Use VerifyChangedCertificateEx or VerifyX509Certificate instead",
543 WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificate
544 VerifyChangedCertificate);
545#else
546 ALIGN64 UINT64 reserved50[3];
547#endif
548 WINPR_ATTR_NODISCARD ALIGN64 pVerifyX509Certificate
552 WINPR_ATTR_NODISCARD ALIGN64 pLogonErrorInfo
556 ALIGN64 pPostDisconnect
564#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
565 WINPR_DEPRECATED_VAR("[since 3.25.0] Use AuthenticateEx instead",
566 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticate
567 GatewayAuthenticate);
571#else
572 ALIGN64 UINT64 reserved56[1];
573#endif
574 WINPR_ATTR_NODISCARD ALIGN64 pPresentGatewayMessage PresentGatewayMessage;
578 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback Redirect;
584 WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback
589 ALIGN64 pPostDisconnect
590 PostFinalDisconnect;
596 UINT64 paddingD[64 - 61]; /* 61 */
597
598 WINPR_ATTR_NODISCARD ALIGN64 pSendChannelData
599 SendChannelData; /* (offset 64)
600 Callback for sending data to a channel.
601 By default, it is set by freerdp_new() to freerdp_send_channel_data(), which
602 eventually calls freerdp_channel_send() */
603 WINPR_ATTR_NODISCARD ALIGN64 pReceiveChannelData
604 ReceiveChannelData; /* (offset 65)
605 Callback for receiving data from a channel.
606 This is called by freerdp_channel_process() (if not nullptr).
607 Clients will typically use a function that calls freerdp_channels_data()
608 to perform the needed tasks. */
609
610 WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificateEx
614 WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificateEx
618 WINPR_ATTR_NODISCARD ALIGN64 pSendChannelPacket
619 SendChannelPacket; /* (offset 68)
620 * Callback for sending RAW data to a channel. In contrast to
621 * SendChannelData data fragmentation is up to the user and this
622 * function sends data as is with the provided flags.
623 */
624 WINPR_ATTR_NODISCARD ALIGN64 pAuthenticateEx AuthenticateEx;
628 WINPR_ATTR_NODISCARD ALIGN64 pChooseSmartcard
629 ChooseSmartcard; /* (offset 70)
630 Callback for choosing a smartcard for logon.
631 Used when multiple smartcards are available. Returns an index into a list
632 of SmartcardCertInfo pointers */
633 WINPR_ATTR_NODISCARD ALIGN64 pGetAccessToken GetAccessToken; /* (offset 71)
634 Callback for obtaining an access token
635 for \b AccessTokenType authentication */
636 WINPR_ATTR_NODISCARD ALIGN64 pRetryDialog
637 RetryDialog; /* (offset 72) Callback for displaying a dialog in case of
638 something needs a retry */
639 UINT64 paddingE[80 - 73]; /* 73 */
640 };
641
643 {
644 wListDictionary* init;
645 wListDictionary* open;
646 };
647 typedef struct rdp_channel_handles rdpChannelHandles;
648
649 FREERDP_API void freerdp_context_free(freerdp* instance);
650
651 WINPR_ATTR_NODISCARD
652 FREERDP_API BOOL freerdp_context_new(freerdp* instance);
653
654 WINPR_ATTR_NODISCARD
655 FREERDP_API BOOL freerdp_context_new_ex(freerdp* instance, rdpSettings* settings);
656
657 WINPR_ATTR_NODISCARD
658 FREERDP_API BOOL freerdp_context_reset(freerdp* instance);
659
660 WINPR_ATTR_NODISCARD
661 FREERDP_API BOOL freerdp_connect(freerdp* instance);
662
663#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
664 WINPR_DEPRECATED_VAR("use freerdp_abort_connect_context instead",
665 FREERDP_API BOOL freerdp_abort_connect(freerdp* instance));
666#endif
667
668 FREERDP_API BOOL freerdp_abort_connect_context(rdpContext* context);
669
670 WINPR_ATTR_NODISCARD
671 FREERDP_API HANDLE freerdp_abort_event(rdpContext* context);
672
673#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
674 WINPR_DEPRECATED_VAR("use freerdp_shall_disconnect_context instead",
675 WINPR_ATTR_NODISCARD FREERDP_API BOOL
676 freerdp_shall_disconnect(const freerdp* instance));
677#endif
678
679 WINPR_ATTR_NODISCARD
680 FREERDP_API BOOL freerdp_shall_disconnect_context(const rdpContext* context);
681
682 FREERDP_API BOOL freerdp_disconnect(freerdp* instance);
683
692 WINPR_ATTR_NODISCARD
693 FREERDP_API const char* freerdp_disconnect_reason_string(int reason);
694
695#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
696 WINPR_DEPRECATED_VAR("use freerdp_disconnect_before_reconnect_context instead",
697 WINPR_ATTR_NODISCARD FREERDP_API BOOL
698 freerdp_disconnect_before_reconnect(freerdp* instance));
699#endif
700
701 WINPR_ATTR_NODISCARD
702 FREERDP_API BOOL freerdp_disconnect_before_reconnect_context(rdpContext* context);
703
704 WINPR_ATTR_NODISCARD
705 FREERDP_API BOOL freerdp_reconnect(freerdp* instance);
706
707 WINPR_ATTR_NODISCARD
708 FREERDP_API UINT freerdp_channels_attach(freerdp* instance);
709
710 WINPR_ATTR_NODISCARD
711 FREERDP_API UINT freerdp_channels_detach(freerdp* instance);
712
713#if defined(WITH_FREERDP_DEPRECATED)
714 WINPR_DEPRECATED_VAR("Use freerdp_get_event_handles",
715 WINPR_ATTR_NODISCARD FREERDP_API BOOL
716 freerdp_get_fds(freerdp* instance, void** rfds, int* rcount,
717 void** wfds, int* wcount));
718#endif
719
720 WINPR_ATTR_NODISCARD
721 FREERDP_API BOOL freerdp_check_fds(freerdp* instance);
722
723 WINPR_ATTR_NODISCARD
724 FREERDP_API DWORD freerdp_get_event_handles(rdpContext* context, HANDLE* events, DWORD count);
725
726 WINPR_ATTR_NODISCARD
727 FREERDP_API BOOL freerdp_check_event_handles(rdpContext* context);
728
729 WINPR_ATTR_NODISCARD
730 FREERDP_API wMessageQueue* freerdp_get_message_queue(freerdp* instance, DWORD id);
731
732 WINPR_ATTR_NODISCARD
733 FREERDP_API HANDLE freerdp_get_message_queue_event_handle(freerdp* instance, DWORD id);
734
735 WINPR_ATTR_NODISCARD
736 FREERDP_API int freerdp_message_queue_process_message(freerdp* instance, DWORD id,
737 wMessage* message);
738
739 WINPR_ATTR_NODISCARD
740 FREERDP_API int freerdp_message_queue_process_pending_messages(freerdp* instance, DWORD id);
741
742 WINPR_ATTR_NODISCARD
743 FREERDP_API UINT32 freerdp_error_info(const freerdp* instance);
744
745 FREERDP_API void freerdp_set_error_info(rdpRdp* rdp, UINT32 error);
746
747 WINPR_ATTR_NODISCARD
748 FREERDP_API BOOL freerdp_send_error_info(rdpRdp* rdp);
749
750 WINPR_ATTR_NODISCARD
751 FREERDP_API BOOL freerdp_get_stats(const rdpRdp* rdp, UINT64* inBytes, UINT64* outBytes,
752 UINT64* inPackets, UINT64* outPackets);
753
754 FREERDP_API void freerdp_get_version(int* major, int* minor, int* revision);
755
756 WINPR_ATTR_NODISCARD
757 FREERDP_API const char* freerdp_get_version_string(void);
758
759 WINPR_ATTR_NODISCARD
760 FREERDP_API const char* freerdp_get_build_revision(void);
761
762 WINPR_ATTR_NODISCARD
763 FREERDP_API const char* freerdp_get_build_config(void);
764
773 WINPR_ATTR_NODISCARD
774 FREERDP_API BOOL freerdp_enable_translation(const char* locale, const char* searchPath);
775
776 FREERDP_API void freerdp_free(freerdp* instance);
777
778 WINPR_ATTR_MALLOC(freerdp_free, 1)
779 WINPR_ATTR_NODISCARD
780 FREERDP_API freerdp* freerdp_new(void);
781
782 WINPR_ATTR_NODISCARD
783 FREERDP_API BOOL freerdp_focus_required(freerdp* instance);
784 FREERDP_API void freerdp_set_focus(freerdp* instance);
785
786 WINPR_ATTR_NODISCARD
787 FREERDP_API int freerdp_get_disconnect_ultimatum(const rdpContext* context);
788
804 WINPR_ATTR_NODISCARD
805 FREERDP_API IWTSPluginServiceProvider*
806 freerdp_get_plugin_service_provider(const rdpContext* context);
807
808 WINPR_ATTR_NODISCARD
809 FREERDP_API UINT32 freerdp_get_last_error(const rdpContext* context);
810
811 WINPR_ATTR_NODISCARD
812 FREERDP_API const char* freerdp_get_last_error_name(UINT32 code);
813
814 WINPR_ATTR_NODISCARD
815 FREERDP_API const char* freerdp_get_last_error_string(UINT32 code);
816
817 WINPR_ATTR_NODISCARD
818 FREERDP_API const char* freerdp_get_last_error_category(UINT32 code);
819
820#define freerdp_set_last_error(context, lastError) \
821 freerdp_set_last_error_ex((context), (lastError), __func__, __FILE__, __LINE__)
822
823#define freerdp_set_last_error_if_not(context, lastError) \
824 do \
825 { \
826 if (freerdp_get_last_error(context) == FREERDP_ERROR_SUCCESS) \
827 freerdp_set_last_error_log(context, lastError); \
828 } while (0)
829
830#define freerdp_set_last_error_log(context, lastError) \
831 freerdp_set_last_error_ex((context), (lastError), __func__, __FILE__, __LINE__)
832 FREERDP_API void freerdp_set_last_error_ex(rdpContext* context, UINT32 lastError,
833 const char* fkt, const char* file, int line);
834
835 WINPR_ATTR_NODISCARD
836 FREERDP_API const char* freerdp_get_logon_error_info_type(UINT32 type);
837
838 WINPR_ATTR_NODISCARD
839 FREERDP_API const char* freerdp_get_logon_error_info_type_ex(UINT32 type, char* buffer,
840 size_t size);
841
842 WINPR_ATTR_NODISCARD
843 FREERDP_API const char* freerdp_get_logon_error_info_data(UINT32 data);
844
845 WINPR_ATTR_NODISCARD
846 FREERDP_API const char* freerdp_get_logon_error_info_data_ex(UINT32 data, char* buffer,
847 size_t size);
848
849 WINPR_ATTR_NODISCARD
850 FREERDP_API ULONG freerdp_get_transport_sent(const rdpContext* context, BOOL resetCount);
851
852 WINPR_ATTR_NODISCARD
853 FREERDP_API BOOL freerdp_nla_impersonate(rdpContext* context);
854
855 WINPR_ATTR_NODISCARD
856 FREERDP_API BOOL freerdp_nla_revert_to_self(rdpContext* context);
857
858 WINPR_ATTR_NODISCARD
859 FREERDP_API UINT32 freerdp_get_nla_sspi_error(const rdpContext* context);
860
869 WINPR_ATTR_NODISCARD
870 FREERDP_API BOOL freerdp_nla_encrypt(rdpContext* context, const SecBuffer* inBuffer,
871 SecBuffer* outBuffer);
872
881 WINPR_ATTR_NODISCARD
882 FREERDP_API BOOL freerdp_nla_decrypt(rdpContext* context, const SecBuffer* inBuffer,
883 SecBuffer* outBuffer);
884
894 WINPR_ATTR_NODISCARD
895 FREERDP_API SECURITY_STATUS freerdp_nla_QueryContextAttributes(rdpContext* context,
896 DWORD ulAttr, PVOID pBuffer);
897
907 WINPR_ATTR_NODISCARD
908 FREERDP_API SECURITY_STATUS freerdp_nla_FreeContextBuffer(rdpContext* context, PVOID pBuffer);
909
910 FREERDP_API void clearChannelError(rdpContext* context);
911
912 WINPR_ATTR_NODISCARD
913 FREERDP_API HANDLE getChannelErrorEventHandle(rdpContext* context);
914
915 WINPR_ATTR_NODISCARD
916 FREERDP_API UINT getChannelError(const rdpContext* context);
917
918 WINPR_ATTR_NODISCARD
919 FREERDP_API const char* getChannelErrorDescription(const rdpContext* context);
920
921 FREERDP_API void setChannelError(rdpContext* context, UINT errorNum, const char* format, ...);
922
923 WINPR_ATTR_NODISCARD
924 FREERDP_API BOOL checkChannelErrorEvent(rdpContext* context);
925
926 WINPR_ATTR_NODISCARD
927 FREERDP_API const char* freerdp_nego_get_routing_token(const rdpContext* context,
928 DWORD* length);
929
936 WINPR_ATTR_NODISCARD
937 FREERDP_API CONNECTION_STATE freerdp_get_state(const rdpContext* context);
938
945 WINPR_ATTR_NODISCARD
946 FREERDP_API const char* freerdp_state_string(CONNECTION_STATE state);
947
957 WINPR_ATTR_NODISCARD
958 FREERDP_API BOOL freerdp_is_active_state(const rdpContext* context);
959
960 WINPR_ATTR_NODISCARD
961 FREERDP_API BOOL freerdp_channels_from_mcs(rdpSettings* settings, const rdpContext* context);
962
963 WINPR_ATTR_NODISCARD
964 FREERDP_API BOOL freerdp_is_valid_mcs_create_request(const BYTE* data, size_t size);
965
966 WINPR_ATTR_NODISCARD
967 FREERDP_API BOOL freerdp_is_valid_mcs_create_response(const BYTE* data, size_t size);
968
981 WINPR_ATTR_NODISCARD
982 FREERDP_API BOOL freerdp_persist_credentials(rdpContext* context);
983
992 WINPR_ATTR_NODISCARD
993 FREERDP_API BOOL freerdp_set_common_access_token(rdpContext* context,
994 pGetCommonAccessToken GetCommonAccessToken);
995
1002 WINPR_ATTR_NODISCARD
1003 FREERDP_API pGetCommonAccessToken freerdp_get_common_access_token(const rdpContext* context);
1004
1005#ifdef __cplusplus
1006}
1007#endif
1008
1009#endif /* FREERDP_H */
ALIGN64 char ** argv
Definition freerdp.h:366
ALIGN64 rdpRdp * rdp
Definition freerdp.h:381
ALIGN64 freerdp_peer * peer
Definition freerdp.h:351
ALIGN64 BOOL ServerMode
Definition freerdp.h:355
ALIGN64 rdpGdi * gdi
Definition freerdp.h:386
ALIGN64 int argc
Definition freerdp.h:361
ALIGN64 freerdp * instance
Definition freerdp.h:347
UINT64 paddingD[64 - 61]
Definition freerdp.h:596
WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificateEx VerifyCertificateEx
Definition freerdp.h:611
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback Redirect
Definition freerdp.h:578
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:553
WINPR_ATTR_NODISCARD ALIGN64 pContextNew ContextNew
Definition freerdp.h:505
ALIGN64 pPostDisconnect PostDisconnect
Definition freerdp.h:557
WINPR_DEPRECATED_VAR("Use VerifyCertificateEx or VerifyX509Certificate instead", WINPR_ATTR_NODISCARD ALIGN64 pVerifyCertificate VerifyCertificate)
WINPR_ATTR_NODISCARD ALIGN64 pAuthenticateEx AuthenticateEx
Definition freerdp.h:624
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback LoadChannels
Definition freerdp.h:585
ALIGN64 rdpContext * context
Definition freerdp.h:452
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:574
ALIGN64 pContextFree ContextFree
Definition freerdp.h:511
WINPR_ATTR_NODISCARD ALIGN64 pVerifyX509Certificate VerifyX509Certificate
Definition freerdp.h:549
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback PreConnect
Definition freerdp.h:520
WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificateEx VerifyChangedCertificateEx
Definition freerdp.h:615
WINPR_DEPRECATED_VAR("Use VerifyChangedCertificateEx or VerifyX509Certificate instead", WINPR_ATTR_NODISCARD ALIGN64 pVerifyChangedCertificate VerifyChangedCertificate)
WINPR_ATTR_NODISCARD ALIGN64 pConnectCallback PostConnect
Definition freerdp.h:526
Definition rdp.h:148