20#ifndef FREERDP_LIB_CORE_CLIENT_H
21#define FREERDP_LIB_CORE_CLIENT_H
24#include <winpr/stream.h>
25#include <winpr/wtsapi.h>
27#include <freerdp/freerdp.h>
28#include <freerdp/constants.h>
30#include <freerdp/svc.h>
31#include <freerdp/peer.h>
32#include <freerdp/addin.h>
33#include <freerdp/api.h>
35#include <freerdp/client/channels.h>
36#include <freerdp/client/drdynvc.h>
37#include <freerdp/channels/channels.h>
39#ifndef CHANNEL_MAX_COUNT
40#define CHANNEL_MAX_COUNT 30
45 WINPR_ATTR_NODISCARD PVIRTUALCHANNELENTRY entry;
46 WINPR_ATTR_NODISCARD PVIRTUALCHANNELENTRYEX entryEx;
47 PCHANNEL_INIT_EVENT_FN pChannelInitEventProc;
48 PCHANNEL_INIT_EVENT_EX_FN pChannelInitEventProcEx;
59 rdpChannels* channels;
61 PCHANNEL_OPEN_EVENT_FN pChannelOpenEventProc;
62 PCHANNEL_OPEN_EVENT_EX_FN pChannelOpenEventProcEx;
81 rdpChannels* channels;
105 wMessageQueue* queue;
107 DrdynvcClientContext* drdynvc;
110 wHashTable* channelEvents;
113FREERDP_LOCAL
void freerdp_channels_free(rdpChannels* channels);
115WINPR_ATTR_MALLOC(freerdp_channels_free, 1)
116FREERDP_LOCAL rdpChannels* freerdp_channels_new(freerdp* instance);
118FREERDP_LOCAL UINT freerdp_channels_disconnect(rdpChannels* channels, freerdp* instance);
120FREERDP_LOCAL
void freerdp_channels_close(rdpChannels* channels, freerdp* instance);
122FREERDP_LOCAL
void freerdp_channels_register_instance(rdpChannels* channels, freerdp* instance);
125FREERDP_LOCAL UINT freerdp_channels_pre_connect(rdpChannels* channels, freerdp* instance);
128FREERDP_LOCAL UINT freerdp_channels_post_connect(rdpChannels* channels, freerdp* instance);
132FREERDP_LOCAL SSIZE_T freerdp_client_channel_get_registered_event_handles(rdpChannels* channels,