FreeRDP
win_wds.c File Reference
#include <winpr/crt.h>
#include <winpr/print.h>
#include <freerdp/log.h>
#include "win_rdp.h"
#include "win_wds.h"
#include <initguid.h>
#include <freerdp/assistance.h>

Macros

#define INITGUID
 
#define TAG   SERVER_TAG("shadow.win")
 

Functions

 DEFINE_GUID (CLSID_RDPSession, 0x9B78F0E6, 0x3E05, 0x4A5B, 0xB2, 0xE8, 0xE7, 0x43, 0xA8, 0x95, 0x6B, 0x65)
 
 DEFINE_GUID (DIID__IRDPSessionEvents, 0x98a97042, 0x6698, 0x40e9, 0x8e, 0xfd, 0xb3, 0x20, 0x09, 0x90, 0x00, 0x4b)
 
 DEFINE_GUID (IID_IRDPSRAPISharingSession, 0xeeb20886, 0xe470, 0x4cf6, 0x84, 0x2b, 0x27, 0x39, 0xc0, 0xec, 0x5c, 0xfb)
 
 DEFINE_GUID (IID_IRDPSRAPIAttendee, 0xec0671b3, 0x1b78, 0x4b80, 0xa4, 0x64, 0x91, 0x32, 0x24, 0x75, 0x43, 0xe3)
 
 DEFINE_GUID (IID_IRDPSRAPIAttendeeManager, 0xba3a37e8, 0x33da, 0x4749, 0x8d, 0xa0, 0x07, 0xfa, 0x34, 0xda, 0x79, 0x44)
 
 DEFINE_GUID (IID_IRDPSRAPISessionProperties, 0x339b24f2, 0x9bc0, 0x4f16, 0x9a, 0xac, 0xf1, 0x65, 0x43, 0x3d, 0x13, 0xd4)
 
 DEFINE_GUID (CLSID_RDPSRAPIApplicationFilter, 0xe35ace89, 0xc7e8, 0x427e, 0xa4, 0xf9, 0xb9, 0xda, 0x07, 0x28, 0x26, 0xbd)
 
 DEFINE_GUID (CLSID_RDPSRAPIInvitationManager, 0x53d9c9db, 0x75ab, 0x4271, 0x94, 0x8a, 0x4c, 0x4e, 0xb3, 0x6a, 0x8f, 0x2b)
 
const char * GetRDPSessionEventString (DISPID id)
 
static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_QueryInterface (__RPC__in _IRDPSessionEvents *This, __RPC__in REFIID riid, _COM_Outptr_ void **ppvObject)
 
static ULONG STDMETHODCALLTYPE Shadow_IRDPSessionEvents_AddRef (__RPC__in _IRDPSessionEvents *This)
 
static ULONG STDMETHODCALLTYPE Shadow_IRDPSessionEvents_Release (__RPC__in _IRDPSessionEvents *This)
 
static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_GetTypeInfoCount (__RPC__in _IRDPSessionEvents *This, __RPC__out UINT *pctinfo)
 
static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_GetTypeInfo (__RPC__in _IRDPSessionEvents *This, UINT iTInfo, LCID lcid, __RPC__deref_out_opt ITypeInfo **ppTInfo)
 
static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_GetIDsOfNames (__RPC__in _IRDPSessionEvents *This, __RPC__in REFIID riid, __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, __RPC__in_range(0, 16384) UINT cNames, LCID lcid, __RPC__out_ecount_full(cNames) DISPID *rgDispId)
 
static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_Invoke (_IRDPSessionEvents *This, _In_ DISPID dispIdMember, _In_ REFIID riid, _In_ LCID lcid, _In_ WORD wFlags, _In_ DISPPARAMS *pDispParams, _Out_opt_ VARIANT *pVarResult, _Out_opt_ EXCEPINFO *pExcepInfo, _Out_opt_ UINT *puArgErr)
 
static LRESULT CALLBACK ShadowWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
int win_shadow_wds_wnd_init (winShadowSubsystem *subsystem)
 
int win_shadow_wds_init (winShadowSubsystem *subsystem)
 
int win_shadow_wds_uninit (winShadowSubsystem *subsystem)
 

Variables

static ULONG Shadow_IRDPSessionEvents_RefCount = 0
 
static _IRDPSessionEventsVtbl Shadow_IRDPSessionEventsVtbl
 
static _IRDPSessionEvents Shadow_IRDPSessionEvents = { &Shadow_IRDPSessionEventsVtbl }
 

Macro Definition Documentation

◆ INITGUID

#define INITGUID

FreeRDP: A Remote Desktop Protocol Implementation

Copyright 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. Windows Desktop Sharing API: http://blogs.msdn.com/b/rds/archive/2007/03/08/windows-desktop-sharing-api.aspx

Windows Desktop Sharing Interfaces: http://msdn.microsoft.com/en-us/library/aa373871%28v=vs.85%29.aspx

Offer Remote Assistance Sample C: http://msdn.microsoft.com/en-us/library/ms811079.aspx#remoteassistanceapi_topic2b

Remote Assistance in XP: Programmatically establish an RDP session: http://www.codeproject.com/Articles/29939/Remote-Assistance-in-XP-Programmatically-establish

◆ TAG

#define TAG   SERVER_TAG("shadow.win")

Function Documentation

◆ DEFINE_GUID() [1/8]

DEFINE_GUID ( CLSID_RDPSession  ,
0x9B78F0E6  ,
0x3E05  ,
0x4A5B  ,
0xB2  ,
0xE8  ,
0xE7  ,
0x43  ,
0xA8  ,
0x95  ,
0x6B  ,
0x65   
)

◆ DEFINE_GUID() [2/8]

DEFINE_GUID ( CLSID_RDPSRAPIApplicationFilter  ,
0xe35ace89  ,
0xc7e8  ,
0x427e  ,
0xa4  ,
0xf9  ,
0xb9  ,
0xda  ,
0x07  ,
0x28  ,
0x26  ,
0xbd   
)

◆ DEFINE_GUID() [3/8]

DEFINE_GUID ( CLSID_RDPSRAPIInvitationManager  ,
0x53d9c9db  ,
0x75ab  ,
0x4271  ,
0x94  ,
0x8a  ,
0x4c  ,
0x4e  ,
0xb3  ,
0x6a  ,
0x8f  ,
0x2b   
)

◆ DEFINE_GUID() [4/8]

DEFINE_GUID ( DIID__IRDPSessionEvents  ,
0x98a97042  ,
0x6698  ,
0x40e9  ,
0x8e  ,
0xfd  ,
0xb3  ,
0x20  ,
0x09  ,
0x90  ,
0x00  ,
0x4b   
)

◆ DEFINE_GUID() [5/8]

DEFINE_GUID ( IID_IRDPSRAPIAttendee  ,
0xec0671b3  ,
0x1b78  ,
0x4b80  ,
0xa4  ,
0x64  ,
0x91  ,
0x32  ,
0x24  ,
0x75  ,
0x43  ,
0xe3   
)

◆ DEFINE_GUID() [6/8]

DEFINE_GUID ( IID_IRDPSRAPIAttendeeManager  ,
0xba3a37e8  ,
0x33da  ,
0x4749  ,
0x8d  ,
0xa0  ,
0x07  ,
0xfa  ,
0x34  ,
0xda  ,
0x79  ,
0x44   
)

◆ DEFINE_GUID() [7/8]

DEFINE_GUID ( IID_IRDPSRAPISessionProperties  ,
0x339b24f2  ,
0x9bc0  ,
0x4f16  ,
0x9a  ,
0xac  ,
0xf1  ,
0x65  ,
0x43  ,
0x3d  ,
0x13  ,
0xd4   
)

◆ DEFINE_GUID() [8/8]

DEFINE_GUID ( IID_IRDPSRAPISharingSession  ,
0xeeb20886  ,
0xe470  ,
0x4cf6  ,
0x84  ,
0x2b  ,
0x27  ,
0x39  ,
0xc0  ,
0xec  ,
0x5c  ,
0xfb   
)

◆ GetRDPSessionEventString()

const char* GetRDPSessionEventString ( DISPID  id)
Here is the caller graph for this function:

◆ Shadow_IRDPSessionEvents_AddRef()

static ULONG STDMETHODCALLTYPE Shadow_IRDPSessionEvents_AddRef ( __RPC__in _IRDPSessionEvents *  This)
static

◆ Shadow_IRDPSessionEvents_GetIDsOfNames()

static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_GetIDsOfNames ( __RPC__in _IRDPSessionEvents *  This,
__RPC__in REFIID  riid,
__RPC__in_ecount_full(cNames) LPOLESTR *  rgszNames,
__RPC__in_range(0, 16384) UINT  cNames,
LCID  lcid,
__RPC__out_ecount_full(cNames) DISPID *  rgDispId 
)
static

◆ Shadow_IRDPSessionEvents_GetTypeInfo()

static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_GetTypeInfo ( __RPC__in _IRDPSessionEvents *  This,
UINT  iTInfo,
LCID  lcid,
__RPC__deref_out_opt ITypeInfo **  ppTInfo 
)
static

◆ Shadow_IRDPSessionEvents_GetTypeInfoCount()

static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_GetTypeInfoCount ( __RPC__in _IRDPSessionEvents *  This,
__RPC__out UINT *  pctinfo 
)
static

◆ Shadow_IRDPSessionEvents_Invoke()

static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_Invoke ( _IRDPSessionEvents *  This,
_In_ DISPID  dispIdMember,
_In_ REFIID  riid,
_In_ LCID  lcid,
_In_ WORD  wFlags,
_In_ DISPPARAMS *  pDispParams,
_Out_opt_ VARIANT *  pVarResult,
_Out_opt_ EXCEPINFO *  pExcepInfo,
_Out_opt_ UINT *  puArgErr 
)
static
Here is the call graph for this function:

◆ Shadow_IRDPSessionEvents_QueryInterface()

static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_QueryInterface ( __RPC__in _IRDPSessionEvents *  This,
__RPC__in REFIID  riid,
_COM_Outptr_ void **  ppvObject 
)
static

◆ Shadow_IRDPSessionEvents_Release()

static ULONG STDMETHODCALLTYPE Shadow_IRDPSessionEvents_Release ( __RPC__in _IRDPSessionEvents *  This)
static

◆ ShadowWndProc()

static LRESULT CALLBACK ShadowWndProc ( HWND  hwnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ win_shadow_wds_init()

int win_shadow_wds_init ( winShadowSubsystem *  subsystem)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ win_shadow_wds_uninit()

int win_shadow_wds_uninit ( winShadowSubsystem *  subsystem)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ win_shadow_wds_wnd_init()

int win_shadow_wds_wnd_init ( winShadowSubsystem *  subsystem)
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ Shadow_IRDPSessionEvents

_IRDPSessionEvents Shadow_IRDPSessionEvents = { &Shadow_IRDPSessionEventsVtbl }
static

◆ Shadow_IRDPSessionEvents_RefCount

ULONG Shadow_IRDPSessionEvents_RefCount = 0
static

◆ Shadow_IRDPSessionEventsVtbl

Shadow_IRDPSessionEvents_AddRef
static ULONG STDMETHODCALLTYPE Shadow_IRDPSessionEvents_AddRef(__RPC__in _IRDPSessionEvents *This)
Definition: win_wds.c:206
Shadow_IRDPSessionEvents_Invoke
static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_Invoke(_IRDPSessionEvents *This, _In_ DISPID dispIdMember, _In_ REFIID riid, _In_ LCID lcid, _In_ WORD wFlags, _In_ DISPPARAMS *pDispParams, _Out_opt_ VARIANT *pVarResult, _Out_opt_ EXCEPINFO *pExcepInfo, _Out_opt_ UINT *puArgErr)
Definition: win_wds.c:252
Shadow_IRDPSessionEvents_QueryInterface
static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_QueryInterface(__RPC__in _IRDPSessionEvents *This, __RPC__in REFIID riid, _COM_Outptr_ void **ppvObject)
Definition: win_wds.c:186
Shadow_IRDPSessionEvents_GetTypeInfoCount
static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_GetTypeInfoCount(__RPC__in _IRDPSessionEvents *This, __RPC__out UINT *pctinfo)
Definition: win_wds.c:222
Shadow_IRDPSessionEvents_GetIDsOfNames
static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_GetIDsOfNames(__RPC__in _IRDPSessionEvents *This, __RPC__in REFIID riid, __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, __RPC__in_range(0, 16384) UINT cNames, LCID lcid, __RPC__out_ecount_full(cNames) DISPID *rgDispId)
Definition: win_wds.c:240
Shadow_IRDPSessionEvents_Release
static ULONG STDMETHODCALLTYPE Shadow_IRDPSessionEvents_Release(__RPC__in _IRDPSessionEvents *This)
Definition: win_wds.c:212
Shadow_IRDPSessionEvents_GetTypeInfo
static HRESULT STDMETHODCALLTYPE Shadow_IRDPSessionEvents_GetTypeInfo(__RPC__in _IRDPSessionEvents *This, UINT iTInfo, LCID lcid, __RPC__deref_out_opt ITypeInfo **ppTInfo)
Definition: win_wds.c:231