FreeRDP
wf_rail.c File Reference
#include <winpr/crt.h>
#include <freerdp/log.h>
#include <winpr/tchar.h>
#include <winpr/print.h>
#include "wf_rail.h"

Macros

#define TAG   CLIENT_TAG("windows")
 
#define GET_X_LPARAM(lParam)   ((UINT16)(lParam & 0xFFFF))
 
#define GET_Y_LPARAM(lParam)   ((UINT16)((lParam >> 16) & 0xFFFF))
 
#define RAIL_DISABLED_WINDOW_STYLES
 
#define RAIL_DISABLED_EXTENDED_WINDOW_STYLES   (WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE | WS_EX_WINDOWEDGE)
 

Functions

static void PrintWindowStyles (UINT32 style)
 
static void PrintExtendedWindowStyles (UINT32 style)
 
static void PrintRailWindowState (const WINDOW_ORDER_INFO *orderInfo, const WINDOW_STATE_ORDER *windowState)
 
static void PrintRailIconInfo (const WINDOW_ORDER_INFO *orderInfo, const ICON_INFO *iconInfo)
 
LRESULT CALLBACK wf_RailWndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
static BOOL wf_rail_window_common (rdpContext *context, const WINDOW_ORDER_INFO *orderInfo, const WINDOW_STATE_ORDER *windowState)
 
static BOOL wf_rail_window_delete (rdpContext *context, const WINDOW_ORDER_INFO *orderInfo)
 
static BOOL wf_rail_window_icon (rdpContext *context, const WINDOW_ORDER_INFO *orderInfo, const WINDOW_ICON_ORDER *windowIcon)
 
static BOOL wf_rail_window_cached_icon (rdpContext *context, const WINDOW_ORDER_INFO *orderInfo, const WINDOW_CACHED_ICON_ORDER *windowCachedIcon)
 
static void wf_rail_notify_icon_common (rdpContext *context, const WINDOW_ORDER_INFO *orderInfo, const NOTIFY_ICON_STATE_ORDER *notifyIconState)
 
static BOOL wf_rail_notify_icon_create (rdpContext *context, const WINDOW_ORDER_INFO *orderInfo, const NOTIFY_ICON_STATE_ORDER *notifyIconState)
 
static BOOL wf_rail_notify_icon_update (rdpContext *context, const WINDOW_ORDER_INFO *orderInfo, const NOTIFY_ICON_STATE_ORDER *notifyIconState)
 
static BOOL wf_rail_notify_icon_delete (rdpContext *context, const WINDOW_ORDER_INFO *orderInfo)
 
static BOOL wf_rail_monitored_desktop (rdpContext *context, const WINDOW_ORDER_INFO *orderInfo, const MONITORED_DESKTOP_ORDER *monitoredDesktop)
 
static BOOL wf_rail_non_monitored_desktop (rdpContext *context, const WINDOW_ORDER_INFO *orderInfo)
 
void wf_rail_register_update_callbacks (rdpUpdate *update)
 
static UINT wf_rail_server_execute_result (RailClientContext *context, const RAIL_EXEC_RESULT_ORDER *execResult)
 
static UINT wf_rail_server_system_param (RailClientContext *context, const RAIL_SYSPARAM_ORDER *sysparam)
 
static UINT wf_rail_server_start_cmd (RailClientContext *context)
 
static UINT wf_rail_server_handshake (RailClientContext *context, const RAIL_HANDSHAKE_ORDER *handshake)
 
static UINT wf_rail_server_handshake_ex (RailClientContext *context, const RAIL_HANDSHAKE_EX_ORDER *handshakeEx)
 
static UINT wf_rail_server_local_move_size (RailClientContext *context, const RAIL_LOCALMOVESIZE_ORDER *localMoveSize)
 
static UINT wf_rail_server_min_max_info (RailClientContext *context, const RAIL_MINMAXINFO_ORDER *minMaxInfo)
 
static UINT wf_rail_server_language_bar_info (RailClientContext *context, const RAIL_LANGBAR_INFO_ORDER *langBarInfo)
 
static UINT wf_rail_server_get_appid_response (RailClientContext *context, const RAIL_GET_APPID_RESP_ORDER *getAppIdResp)
 
void wf_rail_invalidate_region (wfContext *wfc, REGION16 *invalidRegion)
 
BOOL wf_rail_init (wfContext *wfc, RailClientContext *rail)
 
void wf_rail_uninit (wfContext *wfc, RailClientContext *rail)
 

Variables

static const WINDOW_STYLE WINDOW_STYLES []
 
static const WINDOW_STYLE EXTENDED_WINDOW_STYLES []
 

Macro Definition Documentation

◆ GET_X_LPARAM

#define GET_X_LPARAM (   lParam)    ((UINT16)(lParam & 0xFFFF))

◆ GET_Y_LPARAM

#define GET_Y_LPARAM (   lParam)    ((UINT16)((lParam >> 16) & 0xFFFF))

◆ RAIL_DISABLED_EXTENDED_WINDOW_STYLES

#define RAIL_DISABLED_EXTENDED_WINDOW_STYLES   (WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE | WS_EX_WINDOWEDGE)

◆ RAIL_DISABLED_WINDOW_STYLES

#define RAIL_DISABLED_WINDOW_STYLES

◆ TAG

#define TAG   CLIENT_TAG("windows")

FreeRDP: A Remote Desktop Protocol Implementation

Copyright 2013-2014 Marc-Andre Moreau marca.nosp@m.ndre.nosp@m..more.nosp@m.au@g.nosp@m.mail..nosp@m.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Function Documentation

◆ PrintExtendedWindowStyles()

static void PrintExtendedWindowStyles ( UINT32  style)
static
Here is the caller graph for this function:

◆ PrintRailIconInfo()

static void PrintRailIconInfo ( const WINDOW_ORDER_INFO *  orderInfo,
const ICON_INFO *  iconInfo 
)
static
Here is the caller graph for this function:

◆ PrintRailWindowState()

static void PrintRailWindowState ( const WINDOW_ORDER_INFO *  orderInfo,
const WINDOW_STATE_ORDER *  windowState 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ PrintWindowStyles()

static void PrintWindowStyles ( UINT32  style)
static
Here is the caller graph for this function:

◆ wf_rail_init()

BOOL wf_rail_init ( wfContext *  wfc,
RailClientContext *  rail 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wf_rail_invalidate_region()

void wf_rail_invalidate_region ( wfContext *  wfc,
REGION16 *  invalidRegion 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wf_rail_monitored_desktop()

static BOOL wf_rail_monitored_desktop ( rdpContext *  context,
const WINDOW_ORDER_INFO *  orderInfo,
const MONITORED_DESKTOP_ORDER *  monitoredDesktop 
)
static
Here is the caller graph for this function:

◆ wf_rail_non_monitored_desktop()

static BOOL wf_rail_non_monitored_desktop ( rdpContext *  context,
const WINDOW_ORDER_INFO *  orderInfo 
)
static
Here is the caller graph for this function:

◆ wf_rail_notify_icon_common()

static void wf_rail_notify_icon_common ( rdpContext *  context,
const WINDOW_ORDER_INFO *  orderInfo,
const NOTIFY_ICON_STATE_ORDER *  notifyIconState 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wf_rail_notify_icon_create()

static BOOL wf_rail_notify_icon_create ( rdpContext *  context,
const WINDOW_ORDER_INFO *  orderInfo,
const NOTIFY_ICON_STATE_ORDER *  notifyIconState 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wf_rail_notify_icon_delete()

static BOOL wf_rail_notify_icon_delete ( rdpContext *  context,
const WINDOW_ORDER_INFO *  orderInfo 
)
static
Here is the caller graph for this function:

◆ wf_rail_notify_icon_update()

static BOOL wf_rail_notify_icon_update ( rdpContext *  context,
const WINDOW_ORDER_INFO *  orderInfo,
const NOTIFY_ICON_STATE_ORDER *  notifyIconState 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wf_rail_register_update_callbacks()

void wf_rail_register_update_callbacks ( rdpUpdate *  update)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wf_rail_server_execute_result()

static UINT wf_rail_server_execute_result ( RailClientContext *  context,
const RAIL_EXEC_RESULT_ORDER *  execResult 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the caller graph for this function:

◆ wf_rail_server_get_appid_response()

static UINT wf_rail_server_get_appid_response ( RailClientContext *  context,
const RAIL_GET_APPID_RESP_ORDER *  getAppIdResp 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the caller graph for this function:

◆ wf_rail_server_handshake()

static UINT wf_rail_server_handshake ( RailClientContext *  context,
const RAIL_HANDSHAKE_ORDER *  handshake 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wf_rail_server_handshake_ex()

static UINT wf_rail_server_handshake_ex ( RailClientContext *  context,
const RAIL_HANDSHAKE_EX_ORDER *  handshakeEx 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wf_rail_server_language_bar_info()

static UINT wf_rail_server_language_bar_info ( RailClientContext *  context,
const RAIL_LANGBAR_INFO_ORDER *  langBarInfo 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the caller graph for this function:

◆ wf_rail_server_local_move_size()

static UINT wf_rail_server_local_move_size ( RailClientContext *  context,
const RAIL_LOCALMOVESIZE_ORDER *  localMoveSize 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the caller graph for this function:

◆ wf_rail_server_min_max_info()

static UINT wf_rail_server_min_max_info ( RailClientContext *  context,
const RAIL_MINMAXINFO_ORDER *  minMaxInfo 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the caller graph for this function:

◆ wf_rail_server_start_cmd()

static UINT wf_rail_server_start_cmd ( RailClientContext *  context)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wf_rail_server_system_param()

static UINT wf_rail_server_system_param ( RailClientContext *  context,
const RAIL_SYSPARAM_ORDER *  sysparam 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the caller graph for this function:

◆ wf_rail_uninit()

void wf_rail_uninit ( wfContext *  wfc,
RailClientContext *  rail 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wf_rail_window_cached_icon()

static BOOL wf_rail_window_cached_icon ( rdpContext *  context,
const WINDOW_ORDER_INFO *  orderInfo,
const WINDOW_CACHED_ICON_ORDER *  windowCachedIcon 
)
static
Here is the caller graph for this function:

◆ wf_rail_window_common()

static BOOL wf_rail_window_common ( rdpContext *  context,
const WINDOW_ORDER_INFO *  orderInfo,
const WINDOW_STATE_ORDER *  windowState 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wf_rail_window_delete()

static BOOL wf_rail_window_delete ( rdpContext *  context,
const WINDOW_ORDER_INFO *  orderInfo 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wf_rail_window_icon()

static BOOL wf_rail_window_icon ( rdpContext *  context,
const WINDOW_ORDER_INFO *  orderInfo,
const WINDOW_ICON_ORDER *  windowIcon 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wf_RailWndProc()

LRESULT CALLBACK wf_RailWndProc ( HWND  hWnd,
UINT  msg,
WPARAM  wParam,
LPARAM  lParam 
)
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ EXTENDED_WINDOW_STYLES

const WINDOW_STYLE EXTENDED_WINDOW_STYLES[]
static
Initial value:
= {
{ WS_EX_ACCEPTFILES, "WS_EX_ACCEPTFILES", FALSE },
{ WS_EX_APPWINDOW, "WS_EX_APPWINDOW", FALSE },
{ WS_EX_CLIENTEDGE, "WS_EX_CLIENTEDGE", FALSE },
{ WS_EX_COMPOSITED, "WS_EX_COMPOSITED", FALSE },
{ WS_EX_CONTEXTHELP, "WS_EX_CONTEXTHELP", FALSE },
{ WS_EX_CONTROLPARENT, "WS_EX_CONTROLPARENT", FALSE },
{ WS_EX_DLGMODALFRAME, "WS_EX_DLGMODALFRAME", FALSE },
{ WS_EX_LAYERED, "WS_EX_LAYERED", FALSE },
{ WS_EX_LAYOUTRTL, "WS_EX_LAYOUTRTL", FALSE },
{ WS_EX_LEFT, "WS_EX_LEFT", FALSE },
{ WS_EX_LEFTSCROLLBAR, "WS_EX_LEFTSCROLLBAR", FALSE },
{ WS_EX_LTRREADING, "WS_EX_LTRREADING", FALSE },
{ WS_EX_MDICHILD, "WS_EX_MDICHILD", FALSE },
{ WS_EX_NOACTIVATE, "WS_EX_NOACTIVATE", FALSE },
{ WS_EX_NOINHERITLAYOUT, "WS_EX_NOINHERITLAYOUT", FALSE },
{ WS_EX_NOPARENTNOTIFY, "WS_EX_NOPARENTNOTIFY", FALSE },
{ WS_EX_OVERLAPPEDWINDOW, "WS_EX_OVERLAPPEDWINDOW", TRUE },
{ WS_EX_PALETTEWINDOW, "WS_EX_PALETTEWINDOW", TRUE },
{ WS_EX_RIGHT, "WS_EX_RIGHT", FALSE },
{ WS_EX_RIGHTSCROLLBAR, "WS_EX_RIGHTSCROLLBAR", FALSE },
{ WS_EX_RTLREADING, "WS_EX_RTLREADING", FALSE },
{ WS_EX_STATICEDGE, "WS_EX_STATICEDGE", FALSE },
{ WS_EX_TOOLWINDOW, "WS_EX_TOOLWINDOW", FALSE },
{ WS_EX_TOPMOST, "WS_EX_TOPMOST", FALSE },
{ WS_EX_TRANSPARENT, "WS_EX_TRANSPARENT", FALSE },
{ WS_EX_WINDOWEDGE, "WS_EX_WINDOWEDGE", FALSE }
}

◆ WINDOW_STYLES

const WINDOW_STYLE WINDOW_STYLES[]
static
Initial value:
= { { WS_BORDER, "WS_BORDER", FALSE },
{ WS_CAPTION, "WS_CAPTION", FALSE },
{ WS_CHILD, "WS_CHILD", FALSE },
{ WS_CLIPCHILDREN, "WS_CLIPCHILDREN", FALSE },
{ WS_CLIPSIBLINGS, "WS_CLIPSIBLINGS", FALSE },
{ WS_DISABLED, "WS_DISABLED", FALSE },
{ WS_DLGFRAME, "WS_DLGFRAME", FALSE },
{ WS_GROUP, "WS_GROUP", FALSE },
{ WS_HSCROLL, "WS_HSCROLL", FALSE },
{ WS_ICONIC, "WS_ICONIC", FALSE },
{ WS_MAXIMIZE, "WS_MAXIMIZE", FALSE },
{ WS_MAXIMIZEBOX, "WS_MAXIMIZEBOX", FALSE },
{ WS_MINIMIZE, "WS_MINIMIZE", FALSE },
{ WS_MINIMIZEBOX, "WS_MINIMIZEBOX", FALSE },
{ WS_OVERLAPPED, "WS_OVERLAPPED", FALSE },
{ WS_OVERLAPPEDWINDOW, "WS_OVERLAPPEDWINDOW", TRUE },
{ WS_POPUP, "WS_POPUP", FALSE },
{ WS_POPUPWINDOW, "WS_POPUPWINDOW", TRUE },
{ WS_SIZEBOX, "WS_SIZEBOX", FALSE },
{ WS_SYSMENU, "WS_SYSMENU", FALSE },
{ WS_TABSTOP, "WS_TABSTOP", FALSE },
{ WS_THICKFRAME, "WS_THICKFRAME", FALSE },
{ WS_VISIBLE, "WS_VISIBLE", FALSE } }
WS_CLIPSIBLINGS
#define WS_CLIPSIBLINGS
Definition: include/freerdp/window.h:86
WS_VISIBLE
#define WS_VISIBLE
Definition: include/freerdp/window.h:105
WS_EX_TRANSPARENT
#define WS_EX_TRANSPARENT
Definition: include/freerdp/window.h:135
WS_SYSMENU
#define WS_SYSMENU
Definition: include/freerdp/window.h:102
WS_CLIPCHILDREN
#define WS_CLIPCHILDREN
Definition: include/freerdp/window.h:85
WS_EX_RIGHT
#define WS_EX_RIGHT
Definition: include/freerdp/window.h:129
WS_EX_STATICEDGE
#define WS_EX_STATICEDGE
Definition: include/freerdp/window.h:132
WS_CAPTION
#define WS_CAPTION
Definition: include/freerdp/window.h:83
WS_POPUP
#define WS_POPUP
Definition: include/freerdp/window.h:99
WS_TABSTOP
#define WS_TABSTOP
Definition: include/freerdp/window.h:103
TRUE
#define TRUE
Definition: trio.c:210
WS_CHILD
#define WS_CHILD
Definition: include/freerdp/window.h:84
WS_EX_TOOLWINDOW
#define WS_EX_TOOLWINDOW
Definition: include/freerdp/window.h:133
WS_POPUPWINDOW
#define WS_POPUPWINDOW
Definition: include/freerdp/window.h:100
WS_EX_NOINHERITLAYOUT
#define WS_EX_NOINHERITLAYOUT
Definition: include/freerdp/window.h:125
WS_EX_OVERLAPPEDWINDOW
#define WS_EX_OVERLAPPEDWINDOW
Definition: include/freerdp/window.h:127
WS_EX_LAYOUTRTL
#define WS_EX_LAYOUTRTL
Definition: include/freerdp/window.h:119
WS_EX_RTLREADING
#define WS_EX_RTLREADING
Definition: include/freerdp/window.h:131
WS_EX_COMPOSITED
#define WS_EX_COMPOSITED
Definition: include/freerdp/window.h:114
WS_HSCROLL
#define WS_HSCROLL
Definition: include/freerdp/window.h:90
WS_EX_TOPMOST
#define WS_EX_TOPMOST
Definition: include/freerdp/window.h:134
WS_SIZEBOX
#define WS_SIZEBOX
Definition: include/freerdp/window.h:101
WS_EX_CONTEXTHELP
#define WS_EX_CONTEXTHELP
Definition: include/freerdp/window.h:115
WS_BORDER
#define WS_BORDER
Definition: include/freerdp/window.h:82
WS_EX_LEFTSCROLLBAR
#define WS_EX_LEFTSCROLLBAR
Definition: include/freerdp/window.h:121
WS_EX_LEFT
#define WS_EX_LEFT
Definition: include/freerdp/window.h:120
WS_OVERLAPPEDWINDOW
#define WS_OVERLAPPEDWINDOW
Definition: include/freerdp/window.h:97
WS_EX_NOPARENTNOTIFY
#define WS_EX_NOPARENTNOTIFY
Definition: include/freerdp/window.h:126
WS_DLGFRAME
#define WS_DLGFRAME
Definition: include/freerdp/window.h:88
WS_EX_LAYERED
#define WS_EX_LAYERED
Definition: include/freerdp/window.h:118
WS_DISABLED
#define WS_DISABLED
Definition: include/freerdp/window.h:87
WS_GROUP
#define WS_GROUP
Definition: include/freerdp/window.h:89
WS_MINIMIZE
#define WS_MINIMIZE
Definition: include/freerdp/window.h:94
WS_VSCROLL
#define WS_VSCROLL
Definition: include/freerdp/window.h:106
WS_EX_MDICHILD
#define WS_EX_MDICHILD
Definition: include/freerdp/window.h:123
WS_EX_DLGMODALFRAME
#define WS_EX_DLGMODALFRAME
Definition: include/freerdp/window.h:117
WS_EX_APPWINDOW
#define WS_EX_APPWINDOW
Definition: include/freerdp/window.h:112
WS_MINIMIZEBOX
#define WS_MINIMIZEBOX
Definition: include/freerdp/window.h:95
WS_OVERLAPPED
#define WS_OVERLAPPED
Definition: include/freerdp/window.h:96
WS_EX_CLIENTEDGE
#define WS_EX_CLIENTEDGE
Definition: include/freerdp/window.h:113
WS_EX_LTRREADING
#define WS_EX_LTRREADING
Definition: include/freerdp/window.h:122
WS_EX_RIGHTSCROLLBAR
#define WS_EX_RIGHTSCROLLBAR
Definition: include/freerdp/window.h:130
WS_THICKFRAME
#define WS_THICKFRAME
Definition: include/freerdp/window.h:104
WS_EX_NOACTIVATE
#define WS_EX_NOACTIVATE
Definition: include/freerdp/window.h:124
WS_EX_CONTROLPARENT
#define WS_EX_CONTROLPARENT
Definition: include/freerdp/window.h:116
WS_EX_PALETTEWINDOW
#define WS_EX_PALETTEWINDOW
Definition: include/freerdp/window.h:128
WS_EX_ACCEPTFILES
#define WS_EX_ACCEPTFILES
Definition: include/freerdp/window.h:111
WS_MAXIMIZE
#define WS_MAXIMIZE
Definition: include/freerdp/window.h:92
WS_EX_WINDOWEDGE
#define WS_EX_WINDOWEDGE
Definition: include/freerdp/window.h:136
WS_MAXIMIZEBOX
#define WS_MAXIMIZEBOX
Definition: include/freerdp/window.h:93
FALSE
#define FALSE
Definition: trio.c:209
WS_ICONIC
#define WS_ICONIC
Definition: include/freerdp/window.h:91