20#ifndef FREERDP_CHANNEL_RAIL_SERVER_RAIL_H
21#define FREERDP_CHANNEL_RAIL_SERVER_RAIL_H
23#include <freerdp/api.h>
24#include <freerdp/types.h>
26#include <freerdp/rail.h>
27#include <freerdp/channels/rail.h>
37 typedef UINT (*psRailStart)(RailServerContext* context);
38 typedef BOOL (*psRailStop)(RailServerContext* context);
41 typedef UINT (*psRailClientHandshake)(RailServerContext* context,
43 typedef UINT (*psRailClientClientStatus)(RailServerContext* context,
45 typedef UINT (*psRailClientExec)(RailServerContext* context,
const RAIL_EXEC_ORDER* exec);
46 typedef UINT (*psRailClientSysparam)(RailServerContext* context,
48 typedef UINT (*psRailClientActivate)(RailServerContext* context,
50 typedef UINT (*psRailClientSysmenu)(RailServerContext* context,
52 typedef UINT (*psRailClientSyscommand)(RailServerContext* context,
54 typedef UINT (*psRailClientNotifyEvent)(RailServerContext* context,
56 typedef UINT (*psRailClientGetAppidReq)(RailServerContext* context,
58 typedef UINT (*psRailClientWindowMove)(RailServerContext* context,
60 typedef UINT (*psRailClientSnapArrange)(RailServerContext* context,
62 typedef UINT (*psRailClientLangbarInfo)(RailServerContext* context,
64 typedef UINT (*psRailClientLanguageImeInfo)(RailServerContext* context,
66 typedef UINT (*psRailClientCompartmentInfo)(RailServerContext* context,
68 typedef UINT (*psRailClientCloak)(RailServerContext* context,
const RAIL_CLOAK* cloak);
69 typedef UINT (*psRailClientTextScale)(RailServerContext* context, UINT32 TextScale);
70 typedef UINT (*psRailClientCaretBlinkRate)(RailServerContext* context, UINT32 CaretBlinkRate);
73 typedef UINT (*psRailServerHandshake)(RailServerContext* context,
75 typedef UINT (*psRailServerHandshakeEx)(RailServerContext* context,
77 typedef UINT (*psRailServerSysparam)(RailServerContext* context,
79 typedef UINT (*psRailServerLocalMoveSize)(RailServerContext* context,
81 typedef UINT (*psRailServerMinMaxInfo)(RailServerContext* context,
83 typedef UINT (*psRailServerTaskbarInfo)(RailServerContext* context,
85 typedef UINT (*psRailServerLangbarInfo)(RailServerContext* context,
87 typedef UINT (*psRailServerExecResult)(RailServerContext* context,
89 typedef UINT (*psRailServerGetAppidResp)(RailServerContext* context,
91 typedef UINT (*psRailServerZOrderSync)(RailServerContext* context,
93 typedef UINT (*psRailServerCloak)(RailServerContext* context,
const RAIL_CLOAK* cloak);
94 typedef UINT (*psRailServerPowerDisplayRequest)(
96 typedef UINT (*psRailServerGetAppidRespEx)(RailServerContext* context,
104 WINPR_ATTR_NODISCARD psRailStart Start;
108 WINPR_ATTR_NODISCARD psRailClientHandshake ClientHandshake;
109 WINPR_ATTR_NODISCARD psRailClientClientStatus ClientClientStatus;
110 WINPR_ATTR_NODISCARD psRailClientExec ClientExec;
111 WINPR_ATTR_NODISCARD psRailClientSysparam ClientSysparam;
112 WINPR_ATTR_NODISCARD psRailClientActivate ClientActivate;
113 WINPR_ATTR_NODISCARD psRailClientSysmenu ClientSysmenu;
114 WINPR_ATTR_NODISCARD psRailClientSyscommand ClientSyscommand;
115 WINPR_ATTR_NODISCARD psRailClientNotifyEvent ClientNotifyEvent;
116 WINPR_ATTR_NODISCARD psRailClientGetAppidReq ClientGetAppidReq;
117 WINPR_ATTR_NODISCARD psRailClientWindowMove ClientWindowMove;
118 WINPR_ATTR_NODISCARD psRailClientSnapArrange ClientSnapArrange;
119 WINPR_ATTR_NODISCARD psRailClientLangbarInfo ClientLangbarInfo;
120 WINPR_ATTR_NODISCARD psRailClientLanguageImeInfo ClientLanguageImeInfo;
121 WINPR_ATTR_NODISCARD psRailClientCompartmentInfo ClientCompartmentInfo;
122 WINPR_ATTR_NODISCARD psRailClientCloak ClientCloak;
123 WINPR_ATTR_NODISCARD psRailClientTextScale ClientTextScale;
124 WINPR_ATTR_NODISCARD psRailClientCaretBlinkRate ClientCaretBlinkRate;
127 WINPR_ATTR_NODISCARD psRailServerHandshake ServerHandshake;
128 WINPR_ATTR_NODISCARD psRailServerHandshakeEx ServerHandshakeEx;
129 WINPR_ATTR_NODISCARD psRailServerSysparam ServerSysparam;
130 WINPR_ATTR_NODISCARD psRailServerLocalMoveSize ServerLocalMoveSize;
131 WINPR_ATTR_NODISCARD psRailServerMinMaxInfo ServerMinMaxInfo;
132 WINPR_ATTR_NODISCARD psRailServerTaskbarInfo ServerTaskbarInfo;
133 WINPR_ATTR_NODISCARD psRailServerLangbarInfo ServerLangbarInfo;
134 WINPR_ATTR_NODISCARD psRailServerExecResult ServerExecResult;
135 WINPR_ATTR_NODISCARD psRailServerZOrderSync ServerZOrderSync;
136 WINPR_ATTR_NODISCARD psRailServerCloak ServerCloak;
137 WINPR_ATTR_NODISCARD psRailServerPowerDisplayRequest ServerPowerDisplayRequest;
138 WINPR_ATTR_NODISCARD psRailServerGetAppidResp ServerGetAppidResp;
139 WINPR_ATTR_NODISCARD psRailServerGetAppidRespEx ServerGetAppidRespEx;
141 RailServerPrivate* priv;
142 rdpContext* rdpcontext;
145 FREERDP_API
void rail_server_context_free(RailServerContext* context);
147 WINPR_ATTR_MALLOC(rail_server_context_free, 1)
149 FREERDP_API RailServerContext* rail_server_context_new(HANDLE vcm);
152 FREERDP_API UINT rail_server_handle_messages(RailServerContext* context);
153 FREERDP_API
void rail_server_set_handshake_ex_flags(RailServerContext* context, DWORD flags);