diff --git a/rosapps/applications/net/tsclient/MissTosca.sln b/rosapps/applications/net/tsclient/MissTosca.sln new file mode 100644 index 00000000000..4156cc20bc3 --- /dev/null +++ b/rosapps/applications/net/tsclient/MissTosca.sln @@ -0,0 +1,38 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual C++ Express 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rdesktop-core", "rdesktop\rdesktop-core.vcproj", "{8620E9B2-9AF0-4F69-A5AF-C195D5F86372}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mstsc", "mstsc\mstsc.vcproj", "{1B415732-1F37-415F-957B-EA436301860D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mstscax", "mstscax\mstscax.vcproj", "{2C217E9E-9D77-4D6A-9259-216FD56BA56F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rdesktop-core-tester", "porting-tools\rdesktop-core-tester\rdesktop-core-tester.vcproj", "{B172A623-E2BD-4E3F-86E6-620548FE255B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Debug|Win32.ActiveCfg = Debug|Win32 + {8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Debug|Win32.Build.0 = Debug|Win32 + {8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Release|Win32.ActiveCfg = Release|Win32 + {8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Release|Win32.Build.0 = Release|Win32 + {1B415732-1F37-415F-957B-EA436301860D}.Debug|Win32.ActiveCfg = Debug|Win32 + {1B415732-1F37-415F-957B-EA436301860D}.Debug|Win32.Build.0 = Debug|Win32 + {1B415732-1F37-415F-957B-EA436301860D}.Release|Win32.ActiveCfg = Release|Win32 + {1B415732-1F37-415F-957B-EA436301860D}.Release|Win32.Build.0 = Release|Win32 + {2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Debug|Win32.ActiveCfg = Debug|Win32 + {2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Debug|Win32.Build.0 = Debug|Win32 + {2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Release|Win32.ActiveCfg = Release|Win32 + {2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Release|Win32.Build.0 = Release|Win32 + {B172A623-E2BD-4E3F-86E6-620548FE255B}.Debug|Win32.ActiveCfg = Debug|Win32 + {B172A623-E2BD-4E3F-86E6-620548FE255B}.Debug|Win32.Build.0 = Debug|Win32 + {B172A623-E2BD-4E3F-86E6-620548FE255B}.Release|Win32.ActiveCfg = Release|Win32 + {B172A623-E2BD-4E3F-86E6-620548FE255B}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/rosapps/applications/net/tsclient/mstsc/mstsc.cpp b/rosapps/applications/net/tsclient/mstsc/mstsc.cpp new file mode 100644 index 00000000000..106d7296c01 --- /dev/null +++ b/rosapps/applications/net/tsclient/mstsc/mstsc.cpp @@ -0,0 +1,7 @@ +#include "stdafx.h" + +int _tmain(int argc, _TCHAR* argv[]) +{ + return 0; +} + diff --git a/rosapps/applications/net/tsclient/mstsc/mstsc.vcproj b/rosapps/applications/net/tsclient/mstsc/mstsc.vcproj new file mode 100644 index 00000000000..a6d58a9cc1c --- /dev/null +++ b/rosapps/applications/net/tsclient/mstsc/mstsc.vcproj @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rosapps/applications/net/tsclient/mstsc/stdafx.cpp b/rosapps/applications/net/tsclient/mstsc/stdafx.cpp new file mode 100644 index 00000000000..f7caa754005 --- /dev/null +++ b/rosapps/applications/net/tsclient/mstsc/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// mstsc.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/rosapps/applications/net/tsclient/mstsc/stdafx.h b/rosapps/applications/net/tsclient/mstsc/stdafx.h new file mode 100644 index 00000000000..ddacb46d869 --- /dev/null +++ b/rosapps/applications/net/tsclient/mstsc/stdafx.h @@ -0,0 +1,15 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +#include +#include + + + +// TODO: reference additional headers your program requires here diff --git a/rosapps/applications/net/tsclient/mstscax/mstscax.cpp b/rosapps/applications/net/tsclient/mstscax/mstscax.cpp new file mode 100644 index 00000000000..106d7296c01 --- /dev/null +++ b/rosapps/applications/net/tsclient/mstscax/mstscax.cpp @@ -0,0 +1,7 @@ +#include "stdafx.h" + +int _tmain(int argc, _TCHAR* argv[]) +{ + return 0; +} + diff --git a/rosapps/applications/net/tsclient/mstscax/mstscax.vcproj b/rosapps/applications/net/tsclient/mstscax/mstscax.vcproj new file mode 100644 index 00000000000..7b3b3b0144f --- /dev/null +++ b/rosapps/applications/net/tsclient/mstscax/mstscax.vcproj @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rosapps/applications/net/tsclient/mstscax/stdafx.cpp b/rosapps/applications/net/tsclient/mstscax/stdafx.cpp new file mode 100644 index 00000000000..9a99ced5d1d --- /dev/null +++ b/rosapps/applications/net/tsclient/mstscax/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// mstscax.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/rosapps/applications/net/tsclient/mstscax/stdafx.h b/rosapps/applications/net/tsclient/mstscax/stdafx.h new file mode 100644 index 00000000000..ddacb46d869 --- /dev/null +++ b/rosapps/applications/net/tsclient/mstscax/stdafx.h @@ -0,0 +1,15 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +#include +#include + + + +// TODO: reference additional headers your program requires here diff --git a/rosapps/applications/net/tsclient/porting-tools/mstscax/mstscax.cpp b/rosapps/applications/net/tsclient/porting-tools/mstscax/mstscax.cpp new file mode 100644 index 00000000000..0f01f402370 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/mstscax/mstscax.cpp @@ -0,0 +1,5011 @@ +#include "stdafx.h" + +namespace +{ + using namespace MSTSCLib; + + typedef HRESULT (STDAPICALLTYPE * PFNDLLGETCLASSOBJECT)(IN REFCLSID rclsid, IN REFIID riid, OUT LPVOID FAR * ppv); + typedef HRESULT (STDAPICALLTYPE * PFNDLLCANUNLOADNOW)(void); + typedef ULONG (STDAPICALLTYPE * PFNDLLGETTSCCTLVER)(void); + + PFNDLLGETCLASSOBJECT pfnDllGetClassObject = NULL; + PFNDLLCANUNLOADNOW pfnDllCanUnloadNow = NULL; + PFNDLLGETTSCCTLVER pfnDllGetTscCtlVer = NULL; + + HMODULE hmMstscax = NULL; + + extern "C" char __ImageBase; + static const HMODULE hmSelf = reinterpret_cast(&__ImageBase); + + void init() + { + if(hmMstscax) + return; + + TCHAR szFileName[MAX_PATH + 1]; + GetModuleFileName(hmSelf, szFileName, MAX_PATH); + + std::basic_string strFileName(&szFileName[0]); + std::reverse_iterator::const_iterator > begin(strFileName.end()); + std::reverse_iterator::const_iterator > end(strFileName.begin()); + std::basic_string::const_iterator endPath = std::find(begin, end, TEXT('\\')).base(); + + std::basic_string strPath(strFileName.begin(), endPath); + strPath.append(TEXT("original\\mstscax.dll")); + + hmMstscax = LoadLibrary(strPath.c_str()); + pfnDllGetClassObject = (PFNDLLGETCLASSOBJECT)GetProcAddress(hmMstscax, "DllGetClassObject"); + pfnDllCanUnloadNow = (PFNDLLCANUNLOADNOW)GetProcAddress(hmMstscax, "DllCanUnloadNow"); + pfnDllGetTscCtlVer = (PFNDLLGETTSCCTLVER)GetProcAddress(hmMstscax, "DllGetTscCtlVer"); + } + + void dbgprintf(LPCTSTR fmt, ...) + { + TCHAR buf[0x1000]; + + va_list args; + va_start(args, fmt); + StringCbVPrintf(buf, sizeof(buf), fmt, args); + va_end(args); + + StringCbCat(buf, sizeof(buf), TEXT("\n")); + + OutputDebugString(buf); + } + +#if 0 + const IID MsTscAxIIDs[] = + { + IID_IMsRdpClient, + IID_IMsTscAx, + //IID_IMsTscAxEvents, + IID_IMsTscNonScriptable, + IID_IMsRdpClientNonScriptable, + }; + + const IID MsRdpClient[] = + { + IID_IMsRdpClient, + IID_IMsTscAx, + //IID_IMsTscAxEvents, + IID_IMsTscNonScriptable, + IID_IMsRdpClientNonScriptable, + }; + + const IID MsRdpClient2[] = + { + IID_IMsRdpClient2, + IID_IMsRdpClient, + IID_IMsTscAx, + //IID_IMsTscAxEvents, + IID_IMsTscNonScriptable, + IID_IMsRdpClientNonScriptable, + }; + + const IID MsRdpClient3[] = + { + IID_IMsRdpClient3, + IID_IMsRdpClient2, + IID_IMsRdpClient, + IID_IMsTscAx, + //IID_IMsTscAxEvents, + IID_IMsTscNonScriptable, + IID_IMsRdpClientNonScriptable, + }; + + const IID MsRdpClient4[] = + { + IID_IMsRdpClient4, + IID_IMsRdpClient3, + IID_IMsRdpClient2, + IID_IMsRdpClient, + IID_IMsTscAx, + //IID_IMsTscAxEvents, + IID_IMsTscNonScriptable, + IID_IMsRdpClientNonScriptable, + IID_IMsRdpClientNonScriptable2, + }; +#endif + + std::wstring UUIDToString(const UUID& uuid) + { + std::wstring s; + LPOLESTR str; + StringFromCLSID(uuid, &str); + s += str; + CoTaskMemFree(str); + return s; + } + + std::wstring MonikerToString(IMoniker * pmk) + { + LPOLESTR pszName = NULL; + + if(SUCCEEDED(pmk->GetDisplayName(NULL, NULL, &pszName))) + { + std::wstring s(pszName); + CoTaskMemFree(pszName); + return s; + } + else + return std::wstring(L""); + } + + std::basic_string RectToString(const RECT& rc) + { + if(&rc == NULL) + return TEXT(""); + + std::basic_ostringstream o; + o << "{" << " left:" << rc.left << " top:" << rc.top << " right:" << rc.right << " bottom:" << rc.bottom << " }"; + return o.str(); + } + + std::basic_string RectToString(const RECTL& rc) + { + if(&rc == NULL) + return TEXT(""); + + std::basic_ostringstream o; + o << "{" << " left:" << rc.left << " top:" << rc.top << " right:" << rc.right << " bottom:" << rc.bottom << " }"; + return o.str(); + } + + std::basic_string SizeToString(const SIZE& sz) + { + if(&sz == NULL) + return TEXT(""); + + std::basic_ostringstream o; + o << "{ " << " cx:" << sz.cx << " cy:" << sz.cy << " }"; + return o.str(); + } + + template LPCTSTR BooleanToString(const T& X) + { + return X ? TEXT("true") : TEXT("false"); + } + + std::basic_string VariantToString(const VARIANT& var) + { + std::basic_ostringstream o; + + switch(var.vt & VT_TYPEMASK) + { + case VT_EMPTY: o << ""; break; + case VT_NULL: o << ""; break; + case VT_I2: o << "short"; break; + case VT_I4: o << "long"; break; + case VT_R4: o << "float"; break; + case VT_R8: o << "double"; break; + case VT_CY: o << "CURRENCY"; break; + case VT_DATE: o << "DATE"; break; + case VT_BSTR: o << "string"; break; + case VT_DISPATCH: o << "IDispatch *"; break; + case VT_ERROR: o << "SCODE"; break; + case VT_BOOL: o << "bool"; break; + case VT_VARIANT: o << "VARIANT *"; break; + case VT_UNKNOWN: o << "IUnknown *"; break; + case VT_DECIMAL: o << "DECIMAL"; break; + case VT_I1: o << "char"; break; + case VT_UI1: o << "unsigned char"; break; + case VT_UI2: o << "unsigned short"; break; + case VT_UI4: o << "unsigned long"; break; + case VT_I8: o << "long long"; break; + case VT_UI8: o << "unsigned long long"; break; + case VT_INT: o << "int"; break; + case VT_UINT: o << "unsigned int"; break; + case VT_VOID: o << "void"; break; + case VT_HRESULT: o << "HRESULT"; break; + case VT_PTR: o << "void *"; break; + case VT_SAFEARRAY: o << "SAFEARRAY *"; break; + case VT_LPSTR: o << "LPSTR"; break; + case VT_LPWSTR: o << "LPWSTR"; break; + case VT_RECORD: o << "struct { }"; break; + case VT_INT_PTR: o << "intptr_t"; break; + case VT_UINT_PTR: o << "uintptr_t"; break; + case VT_FILETIME: o << "FILETIME"; break; + default: o << "???"; break; + } + + if(var.vt & VT_ARRAY) + o << "[]"; + else if(var.vt & VT_BYREF) + o << " *"; + else + { + switch(var.vt & VT_TYPEMASK) + { + case VT_EMPTY: + case VT_NULL: + case VT_RECORD: + case VT_VOID: + + // TODO + case VT_CY: + case VT_DATE: + case VT_DECIMAL: + case VT_FILETIME: + break; + + default: + o << " = "; + } + + switch(var.vt & VT_TYPEMASK) + { + case VT_I2: o << var.iVal; break; + case VT_I4: o << var.lVal; break; + case VT_R4: o << var.fltVal; break; + case VT_R8: o << var.dblVal; break; + case VT_BSTR: o << std::wstring(var.bstrVal, var.bstrVal + SysStringLen(var.bstrVal)); break; + case VT_BOOL: o << var.boolVal ? "true" : "false"; break; + case VT_I1: o << int(var.cVal); break; + case VT_UI1: o << unsigned int(var.bVal); break; + case VT_UI2: o << var.uiVal; break; + case VT_UI4: o << var.ulVal; break; + case VT_I8: o << var.llVal; break; + case VT_UI8: o << var.ullVal; break; + case VT_INT: o << var.intVal; break; + case VT_UINT: o << var.uintVal; break; + case VT_LPSTR: o << LPSTR(var.byref); break; + case VT_LPWSTR: o << LPWSTR(var.byref); break; + case VT_INT_PTR: o << var.intVal; break; // BUGBUG + case VT_UINT_PTR: o << var.uintVal; break; // BUGBUG + + case VT_DISPATCH: + case VT_VARIANT: + case VT_UNKNOWN: + case VT_PTR: + case VT_SAFEARRAY: + case VT_RECORD: + o << var.byref; break; + + case VT_ERROR: + case VT_HRESULT: + o << std::hex << var.ulVal; break; + + case VT_EMPTY: + case VT_NULL: + case VT_VOID: + break; + + default: + assert(0); + } + } + + return o.str(); + } + +#pragma warning(disable:4584) + + IConnectionPointContainer * HookIConnectionPointContainer(IConnectionPointContainer * p); + IEnumConnectionPoints * HookIEnumConnectionPoints(IEnumConnectionPoints * p); + IConnectionPoint * HookIConnectionPoint(IConnectionPoint * p); + IEnumConnections * HookIEnumConnections(IEnumConnections * p); + + class CConnectionPointContainer: public IConnectionPointContainer + { + private: + LONG m_refCount; + IConnectionPointContainer * m_IConnectionPointContainer; + + public: + CConnectionPointContainer(IConnectionPointContainer * pIConnectionPointContainer): + m_refCount(1), + m_IConnectionPointContainer(pIConnectionPointContainer) + { } + + ~CConnectionPointContainer() { m_IConnectionPointContainer->Release(); } + + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + HRESULT hr = S_OK; + + dbgprintf(TEXT("CConnectionPointContainer::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject); + + if(riid == IID_IUnknown || riid == IID_IConnectionPointContainer) + *ppvObject = this; + else + { + *ppvObject = NULL; + hr = E_NOINTERFACE; + } + + dbgprintf(TEXT("CConnectionPointContainer::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject); + return hr; + } + + virtual ULONG STDMETHODCALLTYPE AddRef(void) + { + return InterlockedIncrement(&m_refCount); + } + + virtual ULONG STDMETHODCALLTYPE Release(void) + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + virtual HRESULT STDMETHODCALLTYPE EnumConnectionPoints(IEnumConnectionPoints ** ppEnum) + { + dbgprintf(TEXT("CConnectionPointContainer::EnumConnectionPoints(%p)"), ppEnum); + HRESULT hr = m_IConnectionPointContainer->EnumConnectionPoints(ppEnum); + dbgprintf(TEXT("CConnectionPointContainer::EnumConnectionPoints -> %08X, pEnum = %p"), hr, *ppEnum); + + if(SUCCEEDED(hr)) + *ppEnum = HookIEnumConnectionPoints(*ppEnum); + + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE FindConnectionPoint(REFIID riid, IConnectionPoint ** ppCP) + { + dbgprintf(TEXT("CConnectionPointContainer::FindConnectionPoint(%ls, %p)"), UUIDToString(riid).c_str(), ppCP); + HRESULT hr = m_IConnectionPointContainer->FindConnectionPoint(riid, ppCP); + dbgprintf(TEXT("CConnectionPointContainer::FindConnectionPoint -> %08X, pCP = %p"), hr, *ppCP); + + if(SUCCEEDED(hr)) + *ppCP = HookIConnectionPoint(*ppCP); + + return hr; + } + }; + + class CEnumConnectionPoints: public IEnumConnectionPoints + { + private: + LONG m_refCount; + IEnumConnectionPoints * m_IEnumConnectionPoints; + + public: + CEnumConnectionPoints(IEnumConnectionPoints * pIEnumConnectionPoints): + m_refCount(1), + m_IEnumConnectionPoints(pIEnumConnectionPoints) + { } + + ~CEnumConnectionPoints() { m_IEnumConnectionPoints->Release(); } + + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + HRESULT hr = S_OK; + + dbgprintf(TEXT("CEnumConnectionPoints::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject); + + if(riid == IID_IUnknown || riid == IID_IEnumConnectionPoints) + *ppvObject = this; + else + { + *ppvObject = NULL; + hr = E_NOINTERFACE; + } + + dbgprintf(TEXT("CEnumConnectionPoints::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject); + return hr; + } + + virtual ULONG STDMETHODCALLTYPE AddRef(void) + { + return InterlockedIncrement(&m_refCount); + } + + virtual ULONG STDMETHODCALLTYPE Release(void) + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + virtual HRESULT STDMETHODCALLTYPE Next(ULONG cConnections, LPCONNECTIONPOINT * ppCP, ULONG * pcFetched) + { + dbgprintf(TEXT("CEnumConnectionPoints::Next(%lu, %p, %p)"), cConnections, ppCP, pcFetched); + HRESULT hr = m_IEnumConnectionPoints->Next(cConnections, ppCP, pcFetched); + dbgprintf(TEXT("CEnumConnectionPoints:: -> %08X, pCP = %p, cFetched = %lu"), hr, *ppCP, *pcFetched); + + if(SUCCEEDED(hr)) + *ppCP = HookIConnectionPoint(*ppCP); + + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Skip(ULONG cConnections) + { + dbgprintf(TEXT("CEnumConnectionPoints::Skip(%lu)"), cConnections); + HRESULT hr = m_IEnumConnectionPoints->Skip(cConnections); + dbgprintf(TEXT("CEnumConnectionPoints:: -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Reset(void) + { + dbgprintf(TEXT("CEnumConnectionPoints::Reset()")); + HRESULT hr = m_IEnumConnectionPoints->Reset(); + dbgprintf(TEXT("CEnumConnectionPoints:: -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Clone(IEnumConnectionPoints ** ppEnum) + { + dbgprintf(TEXT("CEnumConnectionPoints::Clone(%p)"), ppEnum); + HRESULT hr = m_IEnumConnectionPoints->Clone(ppEnum); + dbgprintf(TEXT("CEnumConnectionPoints:: -> %08X, pEnum"), hr, *ppEnum); + + if(SUCCEEDED(hr)) + *ppEnum = HookIEnumConnectionPoints(*ppEnum); + + return hr; + } + }; + + class CConnectionPoint: public IConnectionPoint + { + private: + LONG m_refCount; + IConnectionPoint * m_IConnectionPoint; + + public: + CConnectionPoint(IConnectionPoint * pIConnectionPoint): + m_refCount(1), + m_IConnectionPoint(pIConnectionPoint) + { } + + ~CConnectionPoint() { m_IConnectionPoint->Release(); } + + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + HRESULT hr = S_OK; + + dbgprintf(TEXT("CConnectionPoint::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject); + + if(riid == IID_IUnknown || riid == IID_IConnectionPoint) + *ppvObject = this; + else + { + *ppvObject = NULL; + hr = E_NOINTERFACE; + } + + dbgprintf(TEXT("CConnectionPoint::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject); + return hr; + } + + virtual ULONG STDMETHODCALLTYPE AddRef(void) + { + return InterlockedIncrement(&m_refCount); + } + + virtual ULONG STDMETHODCALLTYPE Release(void) + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + virtual HRESULT STDMETHODCALLTYPE GetConnectionInterface(IID * pIID) + { + dbgprintf(TEXT("CConnectionPoint::GetConnectionInterface(%p)"), pIID); + HRESULT hr = m_IConnectionPoint->GetConnectionInterface(pIID); + dbgprintf(TEXT("CConnectionPoint::GetConnectionInterface -> %08X, IID = %ls"), hr, UUIDToString(*pIID).c_str()); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetConnectionPointContainer(IConnectionPointContainer ** ppCPC) + { + dbgprintf(TEXT("CConnectionPoint::GetConnectionPointContainer(%p)"), ppCPC); + HRESULT hr = m_IConnectionPoint->GetConnectionPointContainer(ppCPC); + dbgprintf(TEXT("CConnectionPoint::GetConnectionPointContainer -> %08X, pCPC = %p"), hr, *ppCPC); + + if(SUCCEEDED(hr)) + *ppCPC = HookIConnectionPointContainer(*ppCPC); + + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Advise(IUnknown * pUnkSink, DWORD * pdwCookie) + { + dbgprintf(TEXT("CConnectionPoint::Advise(%p, %p)"), pUnkSink, pdwCookie); + HRESULT hr = m_IConnectionPoint->Advise(pUnkSink, pdwCookie); + dbgprintf(TEXT("CConnectionPoint::Advise -> %08X, dwCookie = %lu"), hr, *pdwCookie); + // TODO: hook sink + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Unadvise(DWORD dwCookie) + { + dbgprintf(TEXT("CConnectionPoint::Unadvise(%lu)"), dwCookie); + HRESULT hr = m_IConnectionPoint->Unadvise(dwCookie); + dbgprintf(TEXT("CConnectionPoint::Unadvise -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE EnumConnections(IEnumConnections ** ppEnum) + { + dbgprintf(TEXT("CConnectionPoint::EnumConnections(%p)"), ppEnum); + HRESULT hr = m_IConnectionPoint->EnumConnections(ppEnum); + dbgprintf(TEXT("CConnectionPoint::EnumConnections -> %08X, pEnum = %p"), hr, *ppEnum); + + if(SUCCEEDED(hr)) + *ppEnum = HookIEnumConnections(*ppEnum); + + return hr; + } + }; + + class CEnumConnections: public IEnumConnections + { + private: + LONG m_refCount; + IEnumConnections * m_IEnumConnections; + + public: + CEnumConnections(IEnumConnections * pIEnumConnections): + m_refCount(1), + m_IEnumConnections(pIEnumConnections) + { } + + ~CEnumConnections() { m_IEnumConnections->Release(); } + + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + HRESULT hr = S_OK; + + dbgprintf(TEXT("CEnumConnections::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject); + + if(riid == IID_IUnknown || riid == IID_IEnumConnections) + *ppvObject = this; + else + { + *ppvObject = NULL; + hr = E_NOINTERFACE; + } + + dbgprintf(TEXT("CEnumConnections::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject); + return hr; + } + + virtual ULONG STDMETHODCALLTYPE AddRef(void) + { + return InterlockedIncrement(&m_refCount); + } + + virtual ULONG STDMETHODCALLTYPE Release(void) + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + virtual HRESULT STDMETHODCALLTYPE Next(ULONG cConnections, LPCONNECTDATA pCD, ULONG * pcFetched) + { + dbgprintf(TEXT("CEnumConnections::Next(%lu, %p, %p)"), cConnections, pCD, pcFetched); + HRESULT hr = m_IEnumConnections->Next(cConnections, pCD, pcFetched); + dbgprintf(TEXT("CEnumConnections:: -> %08X, CD = { pUnk = %p, dwCookie = %lu }, cFetched = %lu"), hr, pCD->pUnk, pCD->dwCookie, *pcFetched); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Skip(ULONG cConnections) + { + dbgprintf(TEXT("CEnumConnections::Skip(%lu)"), cConnections); + HRESULT hr = m_IEnumConnections->Skip(cConnections); + dbgprintf(TEXT("CEnumConnections:: -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Reset(void) + { + dbgprintf(TEXT("CEnumConnections::Reset()")); + HRESULT hr = m_IEnumConnections->Reset(); + dbgprintf(TEXT("CEnumConnections:: -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Clone(IEnumConnections ** ppEnum) + { + dbgprintf(TEXT("CEnumConnections::Clone(%p)"), ppEnum); + HRESULT hr = m_IEnumConnections->Clone(ppEnum); + dbgprintf(TEXT("CEnumConnections:: -> %08X, pEnum"), hr, *ppEnum); + + if(SUCCEEDED(hr)) + *ppEnum = HookIEnumConnections(*ppEnum); + + return hr; + } + }; + + IConnectionPointContainer * HookIConnectionPointContainer(IConnectionPointContainer * p) + { + return new CConnectionPointContainer(p); + } + + IEnumConnectionPoints * HookIEnumConnectionPoints(IEnumConnectionPoints * p) + { + return new CEnumConnectionPoints(p); + } + + IConnectionPoint * HookIConnectionPoint(IConnectionPoint * p) + { + return new CConnectionPoint(p); + } + + IEnumConnections * HookIEnumConnections(IEnumConnections * p) + { + return new CEnumConnections(p); + } + + class CAdvancedSettings: public IMsRdpClientAdvancedSettings4 + { + private: + LONG m_refCount; + IUnknown * m_IUnknown; + IDispatch * m_IDispatch; + IMsTscAdvancedSettings * m_IMsTscAdvancedSettings; + IMsRdpClientAdvancedSettings * m_IMsRdpClientAdvancedSettings; + IMsRdpClientAdvancedSettings2 * m_IMsRdpClientAdvancedSettings2; + IMsRdpClientAdvancedSettings3 * m_IMsRdpClientAdvancedSettings3; + IMsRdpClientAdvancedSettings4 * m_IMsRdpClientAdvancedSettings4; + + IDispatch * getIDispatch() + { + assert(m_IDispatch); + return m_IDispatch; + } + + IMsTscAdvancedSettings * getIMsTscAdvancedSettings() + { + if(m_IMsTscAdvancedSettings) + return m_IMsTscAdvancedSettings; + else if(m_IMsRdpClientAdvancedSettings) + m_IMsTscAdvancedSettings = m_IMsRdpClientAdvancedSettings; + else if(m_IMsRdpClientAdvancedSettings2) + m_IMsTscAdvancedSettings = m_IMsRdpClientAdvancedSettings2; + else if(m_IMsRdpClientAdvancedSettings3) + m_IMsTscAdvancedSettings = m_IMsRdpClientAdvancedSettings3; + else if(m_IMsRdpClientAdvancedSettings4) + m_IMsTscAdvancedSettings = m_IMsRdpClientAdvancedSettings4; + + if(m_IMsTscAdvancedSettings) + { + m_IMsTscAdvancedSettings->AddRef(); + return m_IMsTscAdvancedSettings; + } + + m_IUnknown->QueryInterface(&m_IMsTscAdvancedSettings); + return m_IMsTscAdvancedSettings; + } + + IMsRdpClientAdvancedSettings * getIMsRdpClientAdvancedSettings() + { + if(m_IMsRdpClientAdvancedSettings) + return m_IMsRdpClientAdvancedSettings; + else if(m_IMsRdpClientAdvancedSettings2) + m_IMsRdpClientAdvancedSettings = m_IMsRdpClientAdvancedSettings2; + else if(m_IMsRdpClientAdvancedSettings3) + m_IMsRdpClientAdvancedSettings = m_IMsRdpClientAdvancedSettings3; + else if(m_IMsRdpClientAdvancedSettings4) + m_IMsRdpClientAdvancedSettings = m_IMsRdpClientAdvancedSettings4; + + if(m_IMsRdpClientAdvancedSettings) + { + m_IMsRdpClientAdvancedSettings->AddRef(); + return m_IMsRdpClientAdvancedSettings; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClientAdvancedSettings); + return m_IMsRdpClientAdvancedSettings; + } + + IMsRdpClientAdvancedSettings2 * getIMsRdpClientAdvancedSettings2() + { + if(m_IMsRdpClientAdvancedSettings2) + return m_IMsRdpClientAdvancedSettings2; + else if(m_IMsRdpClientAdvancedSettings3) + m_IMsRdpClientAdvancedSettings2 = m_IMsRdpClientAdvancedSettings3; + else if(m_IMsRdpClientAdvancedSettings4) + m_IMsRdpClientAdvancedSettings2 = m_IMsRdpClientAdvancedSettings4; + + if(m_IMsRdpClientAdvancedSettings2) + { + m_IMsRdpClientAdvancedSettings2->AddRef(); + return m_IMsRdpClientAdvancedSettings2; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClientAdvancedSettings2); + return m_IMsRdpClientAdvancedSettings2; + } + + IMsRdpClientAdvancedSettings3 * getIMsRdpClientAdvancedSettings3() + { + if(m_IMsRdpClientAdvancedSettings3) + return m_IMsRdpClientAdvancedSettings3; + else if(m_IMsRdpClientAdvancedSettings4) + m_IMsRdpClientAdvancedSettings3 = m_IMsRdpClientAdvancedSettings4; + + if(m_IMsRdpClientAdvancedSettings3) + { + m_IMsRdpClientAdvancedSettings3->AddRef(); + return m_IMsRdpClientAdvancedSettings3; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClientAdvancedSettings3); + return m_IMsRdpClientAdvancedSettings3; + } + + IMsRdpClientAdvancedSettings4 * getIMsRdpClientAdvancedSettings4() + { + if(m_IMsRdpClientAdvancedSettings4) + return m_IMsRdpClientAdvancedSettings4; + + if(m_IMsRdpClientAdvancedSettings4) + { + m_IMsRdpClientAdvancedSettings4->AddRef(); + return m_IMsRdpClientAdvancedSettings4; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClientAdvancedSettings4); + return m_IMsRdpClientAdvancedSettings4; + } + + ~CAdvancedSettings() + { + m_IUnknown->Release(); + m_IDispatch->Release(); + + if(m_IMsTscAdvancedSettings) + m_IMsTscAdvancedSettings->Release(); + + if(m_IMsRdpClientAdvancedSettings) + m_IMsRdpClientAdvancedSettings->Release(); + + if(m_IMsRdpClientAdvancedSettings2) + m_IMsRdpClientAdvancedSettings2->Release(); + + if(m_IMsRdpClientAdvancedSettings3) + m_IMsRdpClientAdvancedSettings3->Release(); + + if(m_IMsRdpClientAdvancedSettings4) + m_IMsRdpClientAdvancedSettings4->Release(); + } + + void Init(IMsTscAdvancedSettings * p) + { + m_IMsTscAdvancedSettings = p; + } + + void Init(IMsRdpClientAdvancedSettings * p) + { + m_IMsRdpClientAdvancedSettings = p; + } + + void Init(IMsRdpClientAdvancedSettings2 * p) + { + m_IMsRdpClientAdvancedSettings2 = p; + } + + void Init(IMsRdpClientAdvancedSettings3 * p) + { + m_IMsRdpClientAdvancedSettings3 = p; + } + + void Init(IMsRdpClientAdvancedSettings4 * p) + { + m_IMsRdpClientAdvancedSettings4 = p; + } + + public: + template CAdvancedSettings(Interface * p): + m_refCount(1), + m_IUnknown(p), + m_IDispatch(p), + m_IMsTscAdvancedSettings(NULL), + m_IMsRdpClientAdvancedSettings(NULL), + m_IMsRdpClientAdvancedSettings2(NULL), + m_IMsRdpClientAdvancedSettings3(NULL), + m_IMsRdpClientAdvancedSettings4(NULL) + { + assert(p); + p->AddRef(); + p->AddRef(); + Init(p); + } + + /* IUnknown */ + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + HRESULT hr; + IUnknown * pvObject; + + dbgprintf(TEXT("CAdvancedSettings::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject); + +#define QIBEGIN() \ + if(riid == IID_IUnknown) \ + { \ + hr = S_OK; \ + pvObject = (IUnknown *)(this); \ + } + +#define QI(I) \ + else if(riid == IID_ ## I) \ + { \ + if(m_ ## I) \ + { \ + m_ ## I->AddRef(); \ + hr = S_OK; \ + } \ + else \ + { \ + hr = m_IUnknown->QueryInterface(&m_ ## I); \ + } \ + \ + if(SUCCEEDED(hr)) \ + pvObject = static_cast(this); \ + } + +#define QIEND() \ + else \ + { \ + hr = E_NOINTERFACE; \ + pvObject = NULL; \ + } + + QIBEGIN() + QI(IDispatch) + QI(IMsTscAdvancedSettings) + QI(IMsRdpClientAdvancedSettings) + QI(IMsRdpClientAdvancedSettings2) + QI(IMsRdpClientAdvancedSettings3) + QI(IMsRdpClientAdvancedSettings4) + QIEND() + +#undef QIBEGIN +#undef QIEND +#undef QI + + if(SUCCEEDED(hr)) + { + assert(pvObject); + pvObject->AddRef(); + } + else + { + assert(pvObject == NULL); + } + + *ppvObject = pvObject; + + dbgprintf(TEXT("CAdvancedSettings::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject); + return hr; + } + + virtual ULONG STDMETHODCALLTYPE AddRef(void) + { + return InterlockedIncrement(&m_refCount); + } + + virtual ULONG STDMETHODCALLTYPE Release(void) + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + /* IDispatch */ + /* + * p = get(); + dbgprintf(TEXT("CAdvancedSettings::()"), ); + HRESULT hr = p->(); + dbgprintf(TEXT("CAdvancedSettings:: -> %08X, "), hr, ); + return hr; + */ + virtual STDMETHODIMP IDispatch::GetTypeInfoCount(UINT * pctinfo) + { + IDispatch * pIDispatch = getIDispatch(); + dbgprintf(TEXT("CAdvancedSettings::GetTypeInfoCount(%p)"), pctinfo); + HRESULT hr = pIDispatch->GetTypeInfoCount(pctinfo); + dbgprintf(TEXT("CAdvancedSettings::GetTypeInfoCount -> %08X, ctinfo = %u"), hr, *pctinfo); + return hr; + } + + virtual STDMETHODIMP IDispatch::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo ** ppTInfo) + { + IDispatch * pIDispatch = getIDispatch(); + dbgprintf(TEXT("CAdvancedSettings::GetTypeInfo(%u, %lu, %p)"), iTInfo, lcid, ppTInfo); + HRESULT hr = pIDispatch->GetTypeInfo(iTInfo, lcid, ppTInfo); + dbgprintf(TEXT("CAdvancedSettings::GetTypeInfo -> %08X, pTInfo = %p"), hr, *ppTInfo); + return hr; + } + + virtual STDMETHODIMP IDispatch::GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId) + { + IDispatch * pIDispatch = getIDispatch(); + dbgprintf(TEXT("CAdvancedSettings::GetIDsOfNames(%ls, %ls, %d, %lu, %p)"), UUIDToString(riid).c_str(), *rgszNames, cNames, lcid, rgDispId); + HRESULT hr = pIDispatch->GetIDsOfNames(riid, rgszNames, cNames, lcid, rgDispId); + dbgprintf(TEXT("CAdvancedSettings::GetIDsOfNames -> %08X, rgDispId = %ld"), hr, *rgDispId); + return hr; + } + + virtual STDMETHODIMP IDispatch::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pDispParams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, UINT * puArgErr) + { + // TODO + IDispatch * pIDispatch = getIDispatch(); + dbgprintf(TEXT("CAdvancedSettings::Invoke()")/*, */); + HRESULT hr = pIDispatch->Invoke(dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + dbgprintf(TEXT("CAdvancedSettings::Invoke -> %08X, "), hr/*, */); + return hr; + } + + /* IMsTscAdvancedSettings */ + virtual STDMETHODIMP IMsTscAdvancedSettings::put_Compress(long pcompress) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_Compress(%ld)"), pcompress); + HRESULT hr = pIMsTscAdvancedSettings->put_Compress(pcompress); + dbgprintf(TEXT("CAdvancedSettings::put_Compress -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_Compress(long * pcompress) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_Compress(%p)"), pcompress); + HRESULT hr = pIMsTscAdvancedSettings->get_Compress(pcompress); + dbgprintf(TEXT("CAdvancedSettings::get_Compress -> %08X, compress = %ld"), hr, *pcompress); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_BitmapPeristence(long pbitmapPeristence) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapPeristence(%ld)"), pbitmapPeristence); + HRESULT hr = pIMsTscAdvancedSettings->put_BitmapPeristence(pbitmapPeristence); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapPeristence -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_BitmapPeristence(long * pbitmapPeristence) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapPeristence(%p)"), pbitmapPeristence); + HRESULT hr = pIMsTscAdvancedSettings->get_BitmapPeristence(pbitmapPeristence); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapPeristence -> %08X, bitmapPeristence = %ld"), hr, *pbitmapPeristence); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_allowBackgroundInput(long pallowBackgroundInput) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_allowBackgroundInput(%ld)"), pallowBackgroundInput); + HRESULT hr = pIMsTscAdvancedSettings->put_allowBackgroundInput(pallowBackgroundInput); + dbgprintf(TEXT("CAdvancedSettings::put_allowBackgroundInput -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_allowBackgroundInput(long * pallowBackgroundInput) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_allowBackgroundInput(%p)"), pallowBackgroundInput); + HRESULT hr = pIMsTscAdvancedSettings->get_allowBackgroundInput(pallowBackgroundInput); + dbgprintf(TEXT("CAdvancedSettings::get_allowBackgroundInput -> %08X, allowBackgroundInput = %ld"), hr, *pallowBackgroundInput); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_KeyBoardLayoutStr(BSTR rhs) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_KeyBoardLayoutStr(%ls)"), rhs); + HRESULT hr = pIMsTscAdvancedSettings->put_KeyBoardLayoutStr(rhs); + dbgprintf(TEXT("CAdvancedSettings::put_KeyBoardLayoutStr -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_PluginDlls(BSTR rhs) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_PluginDlls(%ls)"), rhs); + HRESULT hr = pIMsTscAdvancedSettings->put_PluginDlls(rhs); + dbgprintf(TEXT("CAdvancedSettings::put_PluginDlls -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_IconFile(BSTR rhs) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_IconFile(%ls)"), rhs); + HRESULT hr = pIMsTscAdvancedSettings->put_IconFile(rhs); + dbgprintf(TEXT("CAdvancedSettings::put_IconFile -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_IconIndex(long rhs) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_IconIndex(%ld)"), rhs); + HRESULT hr = pIMsTscAdvancedSettings->put_IconIndex(rhs); + dbgprintf(TEXT("CAdvancedSettings::put_IconIndex -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_ContainerHandledFullScreen(long pContainerHandledFullScreen) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_ContainerHandledFullScreen(%ld)"), pContainerHandledFullScreen); + HRESULT hr = pIMsTscAdvancedSettings->put_ContainerHandledFullScreen(pContainerHandledFullScreen); + dbgprintf(TEXT("CAdvancedSettings::put_ContainerHandledFullScreen -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_ContainerHandledFullScreen(long * pContainerHandledFullScreen) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_ContainerHandledFullScreen(%p)"), pContainerHandledFullScreen); + HRESULT hr = pIMsTscAdvancedSettings->get_ContainerHandledFullScreen(pContainerHandledFullScreen); + dbgprintf(TEXT("CAdvancedSettings::get_ContainerHandledFullScreen -> %08X, ContainerHandledFullScreen = %ld"), hr, *pContainerHandledFullScreen); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_DisableRdpdr(long pDisableRdpdr) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_DisableRdpdr(%ld)"), pDisableRdpdr); + HRESULT hr = pIMsTscAdvancedSettings->put_DisableRdpdr(pDisableRdpdr); + dbgprintf(TEXT("CAdvancedSettings::put_DisableRdpdr -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_DisableRdpdr(long * pDisableRdpdr) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_DisableRdpdr(%p)"), pDisableRdpdr); + HRESULT hr = pIMsTscAdvancedSettings->get_DisableRdpdr(pDisableRdpdr); + dbgprintf(TEXT("CAdvancedSettings::get_DisableRdpdr -> %08X, DisableRdpdr = %ld"), hr, *pDisableRdpdr); + return hr; + } + + /* IMsRdpClientAdvancedSettings */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_SmoothScroll(long psmoothScroll) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_SmoothScroll(%ld)"), psmoothScroll); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_SmoothScroll(psmoothScroll); + dbgprintf(TEXT("CAdvancedSettings::put_SmoothScroll -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SmoothScroll(long * psmoothScroll) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_SmoothScroll(%p)"), psmoothScroll); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_SmoothScroll(psmoothScroll); + dbgprintf(TEXT("CAdvancedSettings::get_SmoothScroll -> %08X, smoothScroll = %ld"), hr, *psmoothScroll); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_AcceleratorPassthrough(long pacceleratorPassthrough) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_AcceleratorPassthrough(%ld)"), pacceleratorPassthrough); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_AcceleratorPassthrough(pacceleratorPassthrough); + dbgprintf(TEXT("CAdvancedSettings::put_AcceleratorPassthrough -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_AcceleratorPassthrough(long * pacceleratorPassthrough) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_AcceleratorPassthrough(%p)"), pacceleratorPassthrough); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_AcceleratorPassthrough(pacceleratorPassthrough); + dbgprintf(TEXT("CAdvancedSettings::get_AcceleratorPassthrough -> %08X, acceleratorPassthrough = %ld"), hr, *pacceleratorPassthrough); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ShadowBitmap(long pshadowBitmap) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_ShadowBitmap(%ld)"), pshadowBitmap); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_ShadowBitmap(pshadowBitmap); + dbgprintf(TEXT("CAdvancedSettings::put_ShadowBitmap -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ShadowBitmap(long * pshadowBitmap) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_ShadowBitmap(%p)"), pshadowBitmap); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_ShadowBitmap(pshadowBitmap); + dbgprintf(TEXT("CAdvancedSettings::get_ShadowBitmap -> %08X, shadowBitmap = %ld"), hr, *pshadowBitmap); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_TransportType(long ptransportType) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_TransportType(%ld)"), ptransportType); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_TransportType(ptransportType); + dbgprintf(TEXT("CAdvancedSettings::put_TransportType -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_TransportType(long * ptransportType) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_TransportType(%p)"), ptransportType); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_TransportType(ptransportType); + dbgprintf(TEXT("CAdvancedSettings::get_TransportType -> %08X, transportType = %ld"), hr, *ptransportType); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_SasSequence(long psasSequence) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_SasSequence(%ld)"), psasSequence); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_SasSequence(psasSequence); + dbgprintf(TEXT("CAdvancedSettings::put_SasSequence -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SasSequence(long * psasSequence) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_SasSequence(%p)"), psasSequence); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_SasSequence(psasSequence); + dbgprintf(TEXT("CAdvancedSettings::get_SasSequence -> %08X, sasSequence = %ld"), hr, *psasSequence); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_EncryptionEnabled(long pencryptionEnabled) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_EncryptionEnabled(%ld)"), pencryptionEnabled); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_EncryptionEnabled(pencryptionEnabled); + dbgprintf(TEXT("CAdvancedSettings::put_EncryptionEnabled -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EncryptionEnabled(long * pencryptionEnabled) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_EncryptionEnabled(%p)"), pencryptionEnabled); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_EncryptionEnabled(pencryptionEnabled); + dbgprintf(TEXT("CAdvancedSettings::get_EncryptionEnabled -> %08X, encryptionEnabled = %ld"), hr, *pencryptionEnabled); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DedicatedTerminal(long pdedicatedTerminal) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_DedicatedTerminal(%ld)"), pdedicatedTerminal); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_DedicatedTerminal(pdedicatedTerminal); + dbgprintf(TEXT("CAdvancedSettings::put_DedicatedTerminal -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DedicatedTerminal(long * pdedicatedTerminal) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_DedicatedTerminal(%p)"), pdedicatedTerminal); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_DedicatedTerminal(pdedicatedTerminal); + dbgprintf(TEXT("CAdvancedSettings::get_DedicatedTerminal -> %08X, dedicatedTerminal = %ld"), hr, *pdedicatedTerminal); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RDPPort(long prdpPort) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RDPPort(%ld)"), prdpPort); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RDPPort(prdpPort); + dbgprintf(TEXT("CAdvancedSettings::put_RDPPort -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RDPPort(long * prdpPort) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RDPPort(%p)"), prdpPort); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RDPPort(prdpPort); + dbgprintf(TEXT("CAdvancedSettings::get_RDPPort -> %08X, rdpPort = %ld"), hr, *prdpPort); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_EnableMouse(long penableMouse) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_EnableMouse(%ld)"), penableMouse); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_EnableMouse(penableMouse); + dbgprintf(TEXT("CAdvancedSettings::put_EnableMouse -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EnableMouse(long * penableMouse) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_EnableMouse(%p)"), penableMouse); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_EnableMouse(penableMouse); + dbgprintf(TEXT("CAdvancedSettings::get_EnableMouse -> %08X, enableMouse = %ld"), hr, *penableMouse); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DisableCtrlAltDel(long pdisableCtrlAltDel) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_DisableCtrlAltDel(%ld)"), pdisableCtrlAltDel); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_DisableCtrlAltDel(pdisableCtrlAltDel); + dbgprintf(TEXT("CAdvancedSettings::put_DisableCtrlAltDel -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DisableCtrlAltDel(long * pdisableCtrlAltDel) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_DisableCtrlAltDel(%p)"), pdisableCtrlAltDel); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_DisableCtrlAltDel(pdisableCtrlAltDel); + dbgprintf(TEXT("CAdvancedSettings::get_DisableCtrlAltDel -> %08X, disableCtrlAltDel = %ld"), hr, *pdisableCtrlAltDel); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_EnableWindowsKey(long penableWindowsKey) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_EnableWindowsKey(%ld)"), penableWindowsKey); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_EnableWindowsKey(penableWindowsKey); + dbgprintf(TEXT("CAdvancedSettings::put_EnableWindowsKey -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EnableWindowsKey(long * penableWindowsKey) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_EnableWindowsKey(%p)"), penableWindowsKey); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_EnableWindowsKey(penableWindowsKey); + dbgprintf(TEXT("CAdvancedSettings::get_EnableWindowsKey -> %08X, enableWindowsKey = %ld"), hr, *penableWindowsKey); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DoubleClickDetect(long pdoubleClickDetect) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_DoubleClickDetect(%ld)"), pdoubleClickDetect); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_DoubleClickDetect(pdoubleClickDetect); + dbgprintf(TEXT("CAdvancedSettings::put_DoubleClickDetect -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DoubleClickDetect(long * pdoubleClickDetect) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_DoubleClickDetect(%p)"), pdoubleClickDetect); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_DoubleClickDetect(pdoubleClickDetect); + dbgprintf(TEXT("CAdvancedSettings::get_DoubleClickDetect -> %08X, doubleClickDetect = %ld"), hr, *pdoubleClickDetect); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_MaximizeShell(long pmaximizeShell) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_MaximizeShell(%ld)"), pmaximizeShell); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_MaximizeShell(pmaximizeShell); + dbgprintf(TEXT("CAdvancedSettings::put_MaximizeShell -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_MaximizeShell(long * pmaximizeShell) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_MaximizeShell(%p)"), pmaximizeShell); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_MaximizeShell(pmaximizeShell); + dbgprintf(TEXT("CAdvancedSettings::get_MaximizeShell -> %08X, maximizeShell = %ld"), hr, *pmaximizeShell); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyFullScreen(long photKeyFullScreen) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyFullScreen(%ld)"), photKeyFullScreen); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_HotKeyFullScreen(photKeyFullScreen); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyFullScreen -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyFullScreen(long * photKeyFullScreen) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyFullScreen(%p)"), photKeyFullScreen); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_HotKeyFullScreen(photKeyFullScreen); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyFullScreen -> %08X, hotKeyFullScreen = %ld"), hr, *photKeyFullScreen); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyCtrlEsc(long photKeyCtrlEsc) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyCtrlEsc(%ld)"), photKeyCtrlEsc); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_HotKeyCtrlEsc(photKeyCtrlEsc); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyCtrlEsc -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyCtrlEsc(long * photKeyCtrlEsc) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyCtrlEsc(%p)"), photKeyCtrlEsc); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_HotKeyCtrlEsc(photKeyCtrlEsc); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyCtrlEsc -> %08X, hotKeyCtrlEsc = %ld"), hr, *photKeyCtrlEsc); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltEsc(long photKeyAltEsc) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltEsc(%ld)"), photKeyAltEsc); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_HotKeyAltEsc(photKeyAltEsc); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltEsc -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltEsc(long * photKeyAltEsc) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltEsc(%p)"), photKeyAltEsc); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_HotKeyAltEsc(photKeyAltEsc); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltEsc -> %08X, hotKeyAltEsc = %ld"), hr, *photKeyAltEsc); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltTab(long photKeyAltTab) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltTab(%ld)"), photKeyAltTab); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_HotKeyAltTab(photKeyAltTab); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltTab -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltTab(long * photKeyAltTab) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltTab(%p)"), photKeyAltTab); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_HotKeyAltTab(photKeyAltTab); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltTab -> %08X, hotKeyAltTab = %ld"), hr, *photKeyAltTab); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltShiftTab(long photKeyAltShiftTab) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltShiftTab(%ld)"), photKeyAltShiftTab); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_HotKeyAltShiftTab(photKeyAltShiftTab); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltShiftTab -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltShiftTab(long * photKeyAltShiftTab) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltShiftTab(%p)"), photKeyAltShiftTab); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_HotKeyAltShiftTab(photKeyAltShiftTab); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltShiftTab -> %08X, hotKeyAltShiftTab = %ld"), hr, *photKeyAltShiftTab); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltSpace(long photKeyAltSpace) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltSpace(%ld)"), photKeyAltSpace); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_HotKeyAltSpace(photKeyAltSpace); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltSpace -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltSpace(long * photKeyAltSpace) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltSpace(%p)"), photKeyAltSpace); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_HotKeyAltSpace(photKeyAltSpace); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltSpace -> %08X, hotKeyAltSpace = %ld"), hr, *photKeyAltSpace); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyCtrlAltDel(long photKeyCtrlAltDel) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyCtrlAltDel(%ld)"), photKeyCtrlAltDel); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_HotKeyCtrlAltDel(photKeyCtrlAltDel); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyCtrlAltDel -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyCtrlAltDel(long * photKeyCtrlAltDel) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyCtrlAltDel(%p)"), photKeyCtrlAltDel); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_HotKeyCtrlAltDel(photKeyCtrlAltDel); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyCtrlAltDel -> %08X, hotKeyCtrlAltDel = %ld"), hr, *photKeyCtrlAltDel); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_orderDrawThreshold(long porderDrawThreshold) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_orderDrawThreshold(%ld)"), porderDrawThreshold); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_orderDrawThreshold(porderDrawThreshold); + dbgprintf(TEXT("CAdvancedSettings::put_orderDrawThreshold -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_orderDrawThreshold(long * porderDrawThreshold) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_orderDrawThreshold(%p)"), porderDrawThreshold); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_orderDrawThreshold(porderDrawThreshold); + dbgprintf(TEXT("CAdvancedSettings::get_orderDrawThreshold -> %08X, orderDrawThreshold = %ld"), hr, *porderDrawThreshold); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapCacheSize(long pbitmapCacheSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapCacheSize(%ld)"), pbitmapCacheSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_BitmapCacheSize(pbitmapCacheSize); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapCacheSize -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapCacheSize(long * pbitmapCacheSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapCacheSize(%p)"), pbitmapCacheSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_BitmapCacheSize(pbitmapCacheSize); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapCacheSize -> %08X, bitmapCacheSize = %ld"), hr, *pbitmapCacheSize); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapVirtualCacheSize(long pbitmapVirtualCacheSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapVirtualCacheSize(%ld)"), pbitmapVirtualCacheSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_BitmapVirtualCacheSize(pbitmapVirtualCacheSize); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapVirtualCacheSize -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCacheSize(long * pbitmapVirtualCacheSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapVirtualCacheSize(%p)"), pbitmapVirtualCacheSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_BitmapVirtualCacheSize(pbitmapVirtualCacheSize); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapVirtualCacheSize -> %08X, bitmapVirtualCacheSize = %ld"), hr, *pbitmapVirtualCacheSize); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ScaleBitmapCachesByBPP(long pbScale) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_ScaleBitmapCachesByBPP(%ld)"), pbScale); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_ScaleBitmapCachesByBPP(pbScale); + dbgprintf(TEXT("CAdvancedSettings::put_ScaleBitmapCachesByBPP -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ScaleBitmapCachesByBPP(long * pbScale) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_ScaleBitmapCachesByBPP(%p)"), pbScale); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_ScaleBitmapCachesByBPP(pbScale); + dbgprintf(TEXT("CAdvancedSettings::get_ScaleBitmapCachesByBPP -> %08X, bScale = %ld"), hr, *pbScale); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_NumBitmapCaches(long pnumBitmapCaches) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_NumBitmapCaches(%ld)"), pnumBitmapCaches); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_NumBitmapCaches(pnumBitmapCaches); + dbgprintf(TEXT("CAdvancedSettings::put_NumBitmapCaches -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_NumBitmapCaches(long * pnumBitmapCaches) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_NumBitmapCaches(%p)"), pnumBitmapCaches); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_NumBitmapCaches(pnumBitmapCaches); + dbgprintf(TEXT("CAdvancedSettings::get_NumBitmapCaches -> %08X, numBitmapCaches = %ld"), hr, *pnumBitmapCaches); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_CachePersistenceActive(long pcachePersistenceActive) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_CachePersistenceActive(%ld)"), pcachePersistenceActive); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_CachePersistenceActive(pcachePersistenceActive); + dbgprintf(TEXT("CAdvancedSettings::put_CachePersistenceActive -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_CachePersistenceActive(long * pcachePersistenceActive) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_CachePersistenceActive(%p)"), pcachePersistenceActive); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_CachePersistenceActive(pcachePersistenceActive); + dbgprintf(TEXT("CAdvancedSettings::get_CachePersistenceActive -> %08X, cachePersistenceActive = %ld"), hr, *pcachePersistenceActive); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_PersistCacheDirectory(BSTR rhs) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_PersistCacheDirectory(%ls)"), rhs); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_PersistCacheDirectory(rhs); + dbgprintf(TEXT("CAdvancedSettings::put_PersistCacheDirectory -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_brushSupportLevel(long pbrushSupportLevel) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_brushSupportLevel(%ld)"), pbrushSupportLevel); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_brushSupportLevel(pbrushSupportLevel); + dbgprintf(TEXT("CAdvancedSettings::put_brushSupportLevel -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_brushSupportLevel(long * pbrushSupportLevel) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_brushSupportLevel(%p)"), pbrushSupportLevel); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_brushSupportLevel(pbrushSupportLevel); + dbgprintf(TEXT("CAdvancedSettings::get_brushSupportLevel -> %08X, brushSupportLevel = %ld"), hr, *pbrushSupportLevel); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_minInputSendInterval(long pminInputSendInterval) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_minInputSendInterval(%ld)"), pminInputSendInterval); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_minInputSendInterval(pminInputSendInterval); + dbgprintf(TEXT("CAdvancedSettings::put_minInputSendInterval -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_minInputSendInterval(long * pminInputSendInterval) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_minInputSendInterval(%p)"), pminInputSendInterval); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_minInputSendInterval(pminInputSendInterval); + dbgprintf(TEXT("CAdvancedSettings::get_minInputSendInterval -> %08X, minInputSendInterval = %ld"), hr, *pminInputSendInterval); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_InputEventsAtOnce(long pinputEventsAtOnce) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_InputEventsAtOnce(%ld)"), pinputEventsAtOnce); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_InputEventsAtOnce(pinputEventsAtOnce); + dbgprintf(TEXT("CAdvancedSettings::put_InputEventsAtOnce -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_InputEventsAtOnce(long * pinputEventsAtOnce) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_InputEventsAtOnce(%p)"), pinputEventsAtOnce); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_InputEventsAtOnce(pinputEventsAtOnce); + dbgprintf(TEXT("CAdvancedSettings::get_InputEventsAtOnce -> %08X, inputEventsAtOnce = %ld"), hr, *pinputEventsAtOnce); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_maxEventCount(long pmaxEventCount) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_maxEventCount(%ld)"), pmaxEventCount); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_maxEventCount(pmaxEventCount); + dbgprintf(TEXT("CAdvancedSettings::put_maxEventCount -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_maxEventCount(long * pmaxEventCount) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_maxEventCount(%p)"), pmaxEventCount); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_maxEventCount(pmaxEventCount); + dbgprintf(TEXT("CAdvancedSettings::get_maxEventCount -> %08X, maxEventCount = %ld"), hr, *pmaxEventCount); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_keepAliveInterval(long pkeepAliveInterval) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_keepAliveInterval(%ld)"), pkeepAliveInterval); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_keepAliveInterval(pkeepAliveInterval); + dbgprintf(TEXT("CAdvancedSettings::put_keepAliveInterval -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_keepAliveInterval(long * pkeepAliveInterval) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_keepAliveInterval(%p)"), pkeepAliveInterval); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_keepAliveInterval(pkeepAliveInterval); + dbgprintf(TEXT("CAdvancedSettings::get_keepAliveInterval -> %08X, keepAliveInterval = %ld"), hr, *pkeepAliveInterval); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_shutdownTimeout(long pshutdownTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_shutdownTimeout(%ld)"), pshutdownTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_shutdownTimeout(pshutdownTimeout); + dbgprintf(TEXT("CAdvancedSettings::put_shutdownTimeout -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_shutdownTimeout(long * pshutdownTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_shutdownTimeout(%p)"), pshutdownTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_shutdownTimeout(pshutdownTimeout); + dbgprintf(TEXT("CAdvancedSettings::get_shutdownTimeout -> %08X, shutdownTimeout = %ld"), hr, *pshutdownTimeout); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_overallConnectionTimeout(long poverallConnectionTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_overallConnectionTimeout(%ld)"), poverallConnectionTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_overallConnectionTimeout(poverallConnectionTimeout); + dbgprintf(TEXT("CAdvancedSettings::put_overallConnectionTimeout -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_overallConnectionTimeout(long * poverallConnectionTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_overallConnectionTimeout(%p)"), poverallConnectionTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_overallConnectionTimeout(poverallConnectionTimeout); + dbgprintf(TEXT("CAdvancedSettings::get_overallConnectionTimeout -> %08X, overallConnectionTimeout = %ld"), hr, *poverallConnectionTimeout); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_singleConnectionTimeout(long psingleConnectionTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_singleConnectionTimeout(%ld)"), psingleConnectionTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_singleConnectionTimeout(psingleConnectionTimeout); + dbgprintf(TEXT("CAdvancedSettings::put_singleConnectionTimeout -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_singleConnectionTimeout(long * psingleConnectionTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_singleConnectionTimeout(%p)"), psingleConnectionTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_singleConnectionTimeout(psingleConnectionTimeout); + dbgprintf(TEXT("CAdvancedSettings::get_singleConnectionTimeout -> %08X, singleConnectionTimeout = %ld"), hr, *psingleConnectionTimeout); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_KeyboardType(long pkeyboardType) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_KeyboardType(%ld)"), pkeyboardType); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_KeyboardType(pkeyboardType); + dbgprintf(TEXT("CAdvancedSettings::put_KeyboardType -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardType(long * pkeyboardType) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_KeyboardType(%p)"), pkeyboardType); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_KeyboardType(pkeyboardType); + dbgprintf(TEXT("CAdvancedSettings::get_KeyboardType -> %08X, keyboardType = %ld"), hr, *pkeyboardType); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_KeyboardSubType(long pkeyboardSubType) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_KeyboardSubType(%ld)"), pkeyboardSubType); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_KeyboardSubType(pkeyboardSubType); + dbgprintf(TEXT("CAdvancedSettings::put_KeyboardSubType -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardSubType(long * pkeyboardSubType) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_KeyboardSubType(%p)"), pkeyboardSubType); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_KeyboardSubType(pkeyboardSubType); + dbgprintf(TEXT("CAdvancedSettings::get_KeyboardSubType -> %08X, keyboardSubType = %ld"), hr, *pkeyboardSubType); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_KeyboardFunctionKey(long pkeyboardFunctionKey) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_KeyboardFunctionKey(%ld)"), pkeyboardFunctionKey); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_KeyboardFunctionKey(pkeyboardFunctionKey); + dbgprintf(TEXT("CAdvancedSettings::put_KeyboardFunctionKey -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardFunctionKey(long * pkeyboardFunctionKey) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_KeyboardFunctionKey(%p)"), pkeyboardFunctionKey); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_KeyboardFunctionKey(pkeyboardFunctionKey); + dbgprintf(TEXT("CAdvancedSettings::get_KeyboardFunctionKey -> %08X, keyboardFunctionKey = %ld"), hr, *pkeyboardFunctionKey); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_WinceFixedPalette(long pwinceFixedPalette) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_WinceFixedPalette(%ld)"), pwinceFixedPalette); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_WinceFixedPalette(pwinceFixedPalette); + dbgprintf(TEXT("CAdvancedSettings::put_WinceFixedPalette -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_WinceFixedPalette(long * pwinceFixedPalette) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_WinceFixedPalette(%p)"), pwinceFixedPalette); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_WinceFixedPalette(pwinceFixedPalette); + dbgprintf(TEXT("CAdvancedSettings::get_WinceFixedPalette -> %08X, winceFixedPalette = %ld"), hr, *pwinceFixedPalette); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ConnectToServerConsole(VARIANT_BOOL pConnectToConsole) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectToServerConsole(%s)"), BooleanToString(pConnectToConsole)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_ConnectToServerConsole(pConnectToConsole); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectToServerConsole -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ConnectToServerConsole(VARIANT_BOOL * pConnectToConsole) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_ConnectToServerConsole(%p)"), pConnectToConsole); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_ConnectToServerConsole(pConnectToConsole); + dbgprintf(TEXT("CAdvancedSettings::get_ConnectToServerConsole -> %08X, ConnectToConsole = %s"), hr, BooleanToString(*pConnectToConsole)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapPersistence(long pbitmapPersistence) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapPersistence(%ld)"), pbitmapPersistence); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_BitmapPersistence(pbitmapPersistence); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapPersistence -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapPersistence(long * pbitmapPersistence) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapPersistence(%p)"), pbitmapPersistence); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_BitmapPersistence(pbitmapPersistence); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapPersistence -> %08X, bitmapPersistence = %ld"), hr, *pbitmapPersistence); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_MinutesToIdleTimeout(long pminutesToIdleTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_MinutesToIdleTimeout(%ld)"), pminutesToIdleTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_MinutesToIdleTimeout(pminutesToIdleTimeout); + dbgprintf(TEXT("CAdvancedSettings::put_MinutesToIdleTimeout -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_MinutesToIdleTimeout(long * pminutesToIdleTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_MinutesToIdleTimeout(%p)"), pminutesToIdleTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_MinutesToIdleTimeout(pminutesToIdleTimeout); + dbgprintf(TEXT("CAdvancedSettings::get_MinutesToIdleTimeout -> %08X, minutesToIdleTimeout = %ld"), hr, *pminutesToIdleTimeout); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_SmartSizing(VARIANT_BOOL pfSmartSizing) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_SmartSizing(%s)"), BooleanToString(pfSmartSizing)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_SmartSizing(pfSmartSizing); + dbgprintf(TEXT("CAdvancedSettings::put_SmartSizing -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SmartSizing(VARIANT_BOOL * pfSmartSizing) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_SmartSizing(%p)"), pfSmartSizing); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_SmartSizing(pfSmartSizing); + dbgprintf(TEXT("CAdvancedSettings::get_SmartSizing -> %08X, fSmartSizing = %s"), hr, BooleanToString(*pfSmartSizing)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RdpdrLocalPrintingDocName(BSTR pLocalPrintingDocName) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RdpdrLocalPrintingDocName(%ls)"), pLocalPrintingDocName); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RdpdrLocalPrintingDocName(pLocalPrintingDocName); + dbgprintf(TEXT("CAdvancedSettings::put_RdpdrLocalPrintingDocName -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrLocalPrintingDocName(BSTR * pLocalPrintingDocName) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RdpdrLocalPrintingDocName(%p)"), pLocalPrintingDocName); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RdpdrLocalPrintingDocName(pLocalPrintingDocName); + dbgprintf(TEXT("CAdvancedSettings::get_RdpdrLocalPrintingDocName -> %08X, LocalPrintingDocName = %ls"), hr, *pLocalPrintingDocName); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RdpdrClipCleanTempDirString(BSTR clipCleanTempDirString) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RdpdrClipCleanTempDirString(%ls)"), clipCleanTempDirString); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RdpdrClipCleanTempDirString(clipCleanTempDirString); + dbgprintf(TEXT("CAdvancedSettings::put_RdpdrClipCleanTempDirString -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrClipCleanTempDirString(BSTR * clipCleanTempDirString) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RdpdrClipCleanTempDirString(%p)"), clipCleanTempDirString); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RdpdrClipCleanTempDirString(clipCleanTempDirString); + dbgprintf(TEXT("CAdvancedSettings::get_RdpdrClipCleanTempDirString -> %08X, clipCleanTempDirString = %ls"), hr, *clipCleanTempDirString); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RdpdrClipPasteInfoString(BSTR clipPasteInfoString) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RdpdrClipPasteInfoString(%ls)"), clipPasteInfoString); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RdpdrClipPasteInfoString(clipPasteInfoString); + dbgprintf(TEXT("CAdvancedSettings::put_RdpdrClipPasteInfoString -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrClipPasteInfoString(BSTR * clipPasteInfoString) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RdpdrClipPasteInfoString(%p)"), clipPasteInfoString); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RdpdrClipPasteInfoString(clipPasteInfoString); + dbgprintf(TEXT("CAdvancedSettings::get_RdpdrClipPasteInfoString -> %08X, clipPasteInfoString = %ls"), hr, *clipPasteInfoString); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ClearTextPassword(BSTR rhs) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_ClearTextPassword(%ls)"), rhs); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_ClearTextPassword(rhs); + dbgprintf(TEXT("CAdvancedSettings::put_ClearTextPassword -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DisplayConnectionBar(VARIANT_BOOL pDisplayConnectionBar) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_DisplayConnectionBar(%s)"), BooleanToString(pDisplayConnectionBar)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_DisplayConnectionBar(pDisplayConnectionBar); + dbgprintf(TEXT("CAdvancedSettings::put_DisplayConnectionBar -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DisplayConnectionBar(VARIANT_BOOL * pDisplayConnectionBar) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_DisplayConnectionBar(%p)"), pDisplayConnectionBar); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_DisplayConnectionBar(pDisplayConnectionBar); + dbgprintf(TEXT("CAdvancedSettings::get_DisplayConnectionBar -> %08X, DisplayConnectionBar = %s"), hr, BooleanToString(*pDisplayConnectionBar)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_PinConnectionBar(VARIANT_BOOL pPinConnectionBar) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_PinConnectionBar(%s)"), BooleanToString(pPinConnectionBar)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_PinConnectionBar(pPinConnectionBar); + dbgprintf(TEXT("CAdvancedSettings::put_PinConnectionBar -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_PinConnectionBar(VARIANT_BOOL * pPinConnectionBar) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_PinConnectionBar(%p)"), pPinConnectionBar); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_PinConnectionBar(pPinConnectionBar); + dbgprintf(TEXT("CAdvancedSettings::get_PinConnectionBar -> %08X, PinConnectionBar = %s"), hr, BooleanToString(*pPinConnectionBar)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_GrabFocusOnConnect(VARIANT_BOOL pfGrabFocusOnConnect) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_GrabFocusOnConnect(%s)"), BooleanToString(pfGrabFocusOnConnect)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_GrabFocusOnConnect(pfGrabFocusOnConnect); + dbgprintf(TEXT("CAdvancedSettings::put_GrabFocusOnConnect -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_GrabFocusOnConnect(VARIANT_BOOL * pfGrabFocusOnConnect) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_GrabFocusOnConnect(%p)"), pfGrabFocusOnConnect); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_GrabFocusOnConnect(pfGrabFocusOnConnect); + dbgprintf(TEXT("CAdvancedSettings::get_GrabFocusOnConnect -> %08X, fGrabFocusOnConnect = %s"), hr, BooleanToString(*pfGrabFocusOnConnect)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_LoadBalanceInfo(BSTR pLBInfo) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_LoadBalanceInfo(%ls)"), pLBInfo); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_LoadBalanceInfo(pLBInfo); + dbgprintf(TEXT("CAdvancedSettings::put_LoadBalanceInfo -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_LoadBalanceInfo(BSTR * pLBInfo) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_LoadBalanceInfo(%p)"), pLBInfo); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_LoadBalanceInfo(pLBInfo); + dbgprintf(TEXT("CAdvancedSettings::get_LoadBalanceInfo -> %08X, LBInfo = %ls"), hr, *pLBInfo); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectDrives(VARIANT_BOOL pRedirectDrives) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectDrives(%s)"), BooleanToString(pRedirectDrives)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RedirectDrives(pRedirectDrives); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectDrives -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectDrives(VARIANT_BOOL * pRedirectDrives) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectDrives(%p)"), pRedirectDrives); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RedirectDrives(pRedirectDrives); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectDrives -> %08X, RedirectDrives = %s"), hr, BooleanToString(*pRedirectDrives)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectPrinters(VARIANT_BOOL pRedirectPrinters) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectPrinters(%s)"), BooleanToString(pRedirectPrinters)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RedirectPrinters(pRedirectPrinters); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectPrinters -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectPrinters(VARIANT_BOOL * pRedirectPrinters) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectPrinters(%p)"), pRedirectPrinters); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RedirectPrinters(pRedirectPrinters); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectPrinters -> %08X, RedirectPrinters = %s"), hr, BooleanToString(*pRedirectPrinters)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectPorts(VARIANT_BOOL pRedirectPorts) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectPorts(%s)"), BooleanToString(pRedirectPorts)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RedirectPorts(pRedirectPorts); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectPorts -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectPorts(VARIANT_BOOL * pRedirectPorts) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectPorts(%p)"), pRedirectPorts); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RedirectPorts(pRedirectPorts); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectPorts -> %08X, RedirectPorts = %s"), hr, BooleanToString(*pRedirectPorts)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectSmartCards(VARIANT_BOOL pRedirectSmartCards) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectSmartCards(%s)"), BooleanToString(pRedirectSmartCards)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RedirectSmartCards(pRedirectSmartCards); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectSmartCards -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectSmartCards(VARIANT_BOOL * pRedirectSmartCards) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectSmartCards(%p)"), pRedirectSmartCards); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RedirectSmartCards(pRedirectSmartCards); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectSmartCards -> %08X, RedirectSmartCards = %s"), hr, BooleanToString(*pRedirectSmartCards)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapVirtualCache16BppSize(long pBitmapVirtualCache16BppSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapVirtualCache16BppSize(%ld)"), pBitmapVirtualCache16BppSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_BitmapVirtualCache16BppSize(pBitmapVirtualCache16BppSize); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapVirtualCache16BppSize -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCache16BppSize(long * pBitmapVirtualCache16BppSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapVirtualCache16BppSize(%p)"), pBitmapVirtualCache16BppSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_BitmapVirtualCache16BppSize(pBitmapVirtualCache16BppSize); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapVirtualCache16BppSize -> %08X, BitmapVirtualCache16BppSize = %ld"), hr, *pBitmapVirtualCache16BppSize); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapVirtualCache24BppSize(long pBitmapVirtualCache24BppSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapVirtualCache24BppSize(%ld)"), pBitmapVirtualCache24BppSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_BitmapVirtualCache24BppSize(pBitmapVirtualCache24BppSize); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapVirtualCache24BppSize -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCache24BppSize(long * pBitmapVirtualCache24BppSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapVirtualCache24BppSize(%p)"), pBitmapVirtualCache24BppSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_BitmapVirtualCache24BppSize(pBitmapVirtualCache24BppSize); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapVirtualCache24BppSize -> %08X, BitmapVirtualCache24BppSize = %ld"), hr, *pBitmapVirtualCache24BppSize); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_PerformanceFlags(long pDisableList) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_PerformanceFlags(%ld)"), pDisableList); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_PerformanceFlags(pDisableList); + dbgprintf(TEXT("CAdvancedSettings::put_PerformanceFlags -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_PerformanceFlags(long * pDisableList) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_PerformanceFlags(%p)"), pDisableList); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_PerformanceFlags(pDisableList); + dbgprintf(TEXT("CAdvancedSettings::get_PerformanceFlags -> %08X, DisableList = %ld"), hr, *pDisableList); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ConnectWithEndpoint(VARIANT * rhs) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectWithEndpoint(%s)"), VariantToString(*rhs).c_str()); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_ConnectWithEndpoint(rhs); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectWithEndpoint -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_NotifyTSPublicKey(VARIANT_BOOL pfNotify) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_NotifyTSPublicKey(%s)"), BooleanToString(pfNotify)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_NotifyTSPublicKey(pfNotify); + dbgprintf(TEXT("CAdvancedSettings::put_NotifyTSPublicKey -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_NotifyTSPublicKey(VARIANT_BOOL * pfNotify) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_NotifyTSPublicKey(%p)"), pfNotify); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_NotifyTSPublicKey(pfNotify); + dbgprintf(TEXT("CAdvancedSettings::get_NotifyTSPublicKey -> %08X, fNotify = %s"), hr, BooleanToString(*pfNotify)); + return hr; + } + + /* IMsRdpClientAdvancedSettings2 */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_CanAutoReconnect(VARIANT_BOOL * pfCanAutoReconnect) + { + IMsRdpClientAdvancedSettings2 * pIMsRdpClientAdvancedSettings2 = getIMsRdpClientAdvancedSettings2(); + dbgprintf(TEXT("CAdvancedSettings::get_CanAutoReconnect(%p)"), pfCanAutoReconnect); + HRESULT hr = pIMsRdpClientAdvancedSettings2->get_CanAutoReconnect(pfCanAutoReconnect); + dbgprintf(TEXT("CAdvancedSettings::get_CanAutoReconnect -> %08X, fCanAutoReconnect = %s"), hr, BooleanToString(*pfCanAutoReconnect)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::put_EnableAutoReconnect(VARIANT_BOOL pfEnableAutoReconnect) + { + IMsRdpClientAdvancedSettings2 * pIMsRdpClientAdvancedSettings2 = getIMsRdpClientAdvancedSettings2(); + dbgprintf(TEXT("CAdvancedSettings::put_EnableAutoReconnect(%s)"), BooleanToString(pfEnableAutoReconnect)); + HRESULT hr = pIMsRdpClientAdvancedSettings2->put_EnableAutoReconnect(pfEnableAutoReconnect); + dbgprintf(TEXT("CAdvancedSettings::put_EnableAutoReconnect -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_EnableAutoReconnect(VARIANT_BOOL * pfEnableAutoReconnect) + { + IMsRdpClientAdvancedSettings2 * pIMsRdpClientAdvancedSettings2 = getIMsRdpClientAdvancedSettings2(); + dbgprintf(TEXT("CAdvancedSettings::get_EnableAutoReconnect(%p)"), pfEnableAutoReconnect); + HRESULT hr = pIMsRdpClientAdvancedSettings2->get_EnableAutoReconnect(pfEnableAutoReconnect); + dbgprintf(TEXT("CAdvancedSettings::get_EnableAutoReconnect -> %08X, fEnableAutoReconnect = %s"), hr, BooleanToString(*pfEnableAutoReconnect)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::put_MaxReconnectAttempts(long pMaxReconnectAttempts) + { + IMsRdpClientAdvancedSettings2 * pIMsRdpClientAdvancedSettings2 = getIMsRdpClientAdvancedSettings2(); + dbgprintf(TEXT("CAdvancedSettings::put_MaxReconnectAttempts(%ld)"), pMaxReconnectAttempts); + HRESULT hr = pIMsRdpClientAdvancedSettings2->put_MaxReconnectAttempts(pMaxReconnectAttempts); + dbgprintf(TEXT("CAdvancedSettings::put_MaxReconnectAttempts -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_MaxReconnectAttempts(long * pMaxReconnectAttempts) + { + IMsRdpClientAdvancedSettings2 * pIMsRdpClientAdvancedSettings2 = getIMsRdpClientAdvancedSettings2(); + dbgprintf(TEXT("CAdvancedSettings::get_MaxReconnectAttempts(%p)"), pMaxReconnectAttempts); + HRESULT hr = pIMsRdpClientAdvancedSettings2->get_MaxReconnectAttempts(pMaxReconnectAttempts); + dbgprintf(TEXT("CAdvancedSettings::get_MaxReconnectAttempts -> %08X, MaxReconnectAttempts = %ld"), hr, *pMaxReconnectAttempts); + return hr; + } + + /* IMsRdpClientAdvancedSettings3 */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::put_ConnectionBarShowMinimizeButton(VARIANT_BOOL pfShowMinimize) + { + IMsRdpClientAdvancedSettings3 * pIMsRdpClientAdvancedSettings3 = getIMsRdpClientAdvancedSettings3(); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectionBarShowMinimizeButton(%s)"), BooleanToString(pfShowMinimize)); + HRESULT hr = pIMsRdpClientAdvancedSettings3->put_ConnectionBarShowMinimizeButton(pfShowMinimize); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectionBarShowMinimizeButton -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::get_ConnectionBarShowMinimizeButton(VARIANT_BOOL * pfShowMinimize) + { + IMsRdpClientAdvancedSettings3 * pIMsRdpClientAdvancedSettings3 = getIMsRdpClientAdvancedSettings3(); + dbgprintf(TEXT("CAdvancedSettings::get_ConnectionBarShowMinimizeButton(%p)"), pfShowMinimize); + HRESULT hr = pIMsRdpClientAdvancedSettings3->get_ConnectionBarShowMinimizeButton(pfShowMinimize); + dbgprintf(TEXT("CAdvancedSettings::get_ConnectionBarShowMinimizeButton -> %08X, fShowMinimize = %s"), hr, BooleanToString(*pfShowMinimize)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::put_ConnectionBarShowRestoreButton(VARIANT_BOOL pfShowRestore) + { + IMsRdpClientAdvancedSettings3 * pIMsRdpClientAdvancedSettings3 = getIMsRdpClientAdvancedSettings3(); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectionBarShowRestoreButton(%s)"), BooleanToString(pfShowRestore)); + HRESULT hr = pIMsRdpClientAdvancedSettings3->put_ConnectionBarShowRestoreButton(pfShowRestore); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectionBarShowRestoreButton -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::get_ConnectionBarShowRestoreButton(VARIANT_BOOL * pfShowRestore) + { + IMsRdpClientAdvancedSettings3 * pIMsRdpClientAdvancedSettings3 = getIMsRdpClientAdvancedSettings3(); + dbgprintf(TEXT("CAdvancedSettings::get_ConnectionBarShowRestoreButton(%p)"), pfShowRestore); + HRESULT hr = pIMsRdpClientAdvancedSettings3->get_ConnectionBarShowRestoreButton(pfShowRestore); + dbgprintf(TEXT("CAdvancedSettings::get_ConnectionBarShowRestoreButton -> %08X, fShowRestore = %s"), hr, BooleanToString(*pfShowRestore)); + return hr; + } + + /* IMsRdpClientAdvancedSettings4 */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings4::put_AuthenticationLevel(unsigned int puiAuthLevel) + { + IMsRdpClientAdvancedSettings4 * pIMsRdpClientAdvancedSettings4 = getIMsRdpClientAdvancedSettings4(); + dbgprintf(TEXT("CAdvancedSettings::put_AuthenticationLevel(%u)"), puiAuthLevel); + HRESULT hr = pIMsRdpClientAdvancedSettings4->put_AuthenticationLevel(puiAuthLevel); + dbgprintf(TEXT("CAdvancedSettings::put_AuthenticationLevel -> %08X"), hr); + return hr; + } + virtual STDMETHODIMP IMsRdpClientAdvancedSettings4::get_AuthenticationLevel(unsigned int * puiAuthLevel) + { + IMsRdpClientAdvancedSettings4 * pIMsRdpClientAdvancedSettings4 = getIMsRdpClientAdvancedSettings4(); + dbgprintf(TEXT("CAdvancedSettings::get_AuthenticationLevel(%p)"), puiAuthLevel); + HRESULT hr = pIMsRdpClientAdvancedSettings4->get_AuthenticationLevel(puiAuthLevel); + dbgprintf(TEXT("CAdvancedSettings::get_AuthenticationLevel -> %08X, uiAuthLevel = %ld"), hr, *puiAuthLevel); + return hr; + } + }; + + class CoClass: + /* Standard interfaces */ + public IUnknown, + public IDispatch, + public IConnectionPointContainer, + public IDataObject, + public IObjectSafety, + public IOleControl, + public IOleInPlaceActiveObject, + public IOleInPlaceObject, + public IOleObject, + public IOleWindow, + public IPersist, + public IPersistPropertyBag, + public IPersistStorage, + public IPersistStreamInit, + public IProvideClassInfo, + public IProvideClassInfo2, + public IQuickActivate, + public ISpecifyPropertyPages, + public IViewObject, + public IViewObject2, + + /* RDP client interfaces */ + public IMsRdpClient4, + public IMsRdpClientNonScriptable2 + { + private: + LONG m_refCount; + + IUnknown * m_IUnknown; + + IDispatch * m_IDispatch; + IConnectionPointContainer * m_IConnectionPointContainer; + IDataObject * m_IDataObject; + IObjectSafety * m_IObjectSafety; + IOleControl * m_IOleControl; + IOleInPlaceActiveObject * m_IOleInPlaceActiveObject; + IOleInPlaceObject * m_IOleInPlaceObject; + IOleObject * m_IOleObject; + IOleWindow * m_IOleWindow; + IPersist * m_IPersist; + IPersistPropertyBag * m_IPersistPropertyBag; + IPersistStorage * m_IPersistStorage; + IPersistStreamInit * m_IPersistStreamInit; + IProvideClassInfo * m_IProvideClassInfo; + IProvideClassInfo2 * m_IProvideClassInfo2; + IQuickActivate * m_IQuickActivate; + ISpecifyPropertyPages * m_ISpecifyPropertyPages; + IViewObject * m_IViewObject; + IViewObject2 * m_IViewObject2; + + IMsRdpClient * m_IMsRdpClient; + IMsRdpClient2 * m_IMsRdpClient2; + IMsRdpClient3 * m_IMsRdpClient3; + IMsRdpClient4 * m_IMsRdpClient4; + IMsTscAx * m_IMsTscAx; + IMsTscNonScriptable * m_IMsTscNonScriptable; + IMsRdpClientNonScriptable * m_IMsRdpClientNonScriptable; + IMsRdpClientNonScriptable2 * m_IMsRdpClientNonScriptable2; + + IDispatch * getIDispatch() + { + if(m_IDispatch) + return m_IDispatch; + + if(m_IMsRdpClient) + m_IDispatch = m_IMsRdpClient; + else if(m_IMsRdpClient2) + m_IDispatch = m_IMsRdpClient2; + else if(m_IMsRdpClient3) + m_IDispatch = m_IMsRdpClient3; + else if(m_IMsRdpClient4) + m_IDispatch = m_IMsRdpClient4; + else if(m_IMsTscAx) + m_IDispatch = m_IMsTscAx; + + if(m_IDispatch) + { + m_IDispatch->AddRef(); + return m_IDispatch; + } + + if(SUCCEEDED(m_IUnknown->QueryInterface(&m_IDispatch))) + return m_IDispatch; + + return NULL; + } + + IConnectionPointContainer * getIConnectionPointContainer() + { + if(m_IConnectionPointContainer) + return m_IConnectionPointContainer; + + m_IUnknown->QueryInterface(&m_IConnectionPointContainer); + return m_IConnectionPointContainer; + + } + + IDataObject * getIDataObject() + { + if(m_IDataObject) + return m_IDataObject; + + m_IUnknown->QueryInterface(&m_IDataObject); + return m_IDataObject; + } + + IObjectSafety * getIObjectSafety() + { + if(m_IObjectSafety) + return m_IObjectSafety; + + m_IUnknown->QueryInterface(&m_IObjectSafety); + return m_IObjectSafety; + } + + IOleControl * getIOleControl() + { + if(m_IOleControl) + return m_IOleControl; + + m_IUnknown->QueryInterface(&m_IOleControl); + return m_IOleControl; + } + + IOleInPlaceActiveObject * getIOleInPlaceActiveObject() + { + if(m_IOleInPlaceActiveObject) + return m_IOleInPlaceActiveObject; + + m_IUnknown->QueryInterface(&m_IOleInPlaceActiveObject); + return m_IOleInPlaceActiveObject; + } + + IOleInPlaceObject * getIOleInPlaceObject() + { + if(m_IOleInPlaceObject) + return m_IOleInPlaceObject; + + m_IUnknown->QueryInterface(&m_IOleInPlaceObject); + return m_IOleInPlaceObject; + } + + IOleObject * getIOleObject() + { + if(m_IOleObject) + return m_IOleObject; + + m_IUnknown->QueryInterface(&m_IOleObject); + return m_IOleObject; + } + + IOleWindow * getIOleWindow() + { + if(m_IOleWindow) + return m_IOleWindow; + + if(m_IOleInPlaceActiveObject) + m_IOleWindow = m_IOleInPlaceActiveObject; + + if(m_IOleWindow) + { + m_IOleWindow->AddRef(); + return m_IOleWindow; + } + + m_IUnknown->QueryInterface(&m_IOleWindow); + return m_IOleWindow; + } + + IPersist * getIPersist() + { + if(m_IPersist) + return m_IPersist; + + if(m_IPersistPropertyBag) + m_IPersist = m_IPersistPropertyBag; + else if(m_IPersistStorage) + m_IPersist = m_IPersistStorage; + else if(m_IPersistStreamInit) + m_IPersist = m_IPersistStreamInit; + + if(m_IPersist) + { + m_IPersist->AddRef(); + return m_IPersist; + } + + m_IUnknown->QueryInterface(&m_IPersist); + return m_IPersist; + } + + IPersistPropertyBag * getIPersistPropertyBag() + { + if(m_IPersistPropertyBag) + return m_IPersistPropertyBag; + + m_IUnknown->QueryInterface(&m_IPersistPropertyBag); + return m_IPersistPropertyBag; + } + + IPersistStorage * getIPersistStorage() + { + if(m_IPersistStorage) + return m_IPersistStorage; + + m_IUnknown->QueryInterface(&m_IPersistStorage); + return m_IPersistStorage; + } + + IPersistStreamInit * getIPersistStreamInit() + { + if(m_IPersistStreamInit) + return m_IPersistStreamInit; + + m_IUnknown->QueryInterface(&m_IPersistStreamInit); + return m_IPersistStreamInit; + } + + IProvideClassInfo * getIProvideClassInfo() + { + if(m_IProvideClassInfo) + return m_IProvideClassInfo; + + if(m_IProvideClassInfo2) + m_IProvideClassInfo = m_IProvideClassInfo2; + + if(m_IProvideClassInfo) + { + m_IProvideClassInfo->AddRef(); + return m_IProvideClassInfo; + } + + m_IUnknown->QueryInterface(&m_IProvideClassInfo); + return m_IProvideClassInfo; + } + + IProvideClassInfo2 * getIProvideClassInfo2() + { + if(m_IProvideClassInfo2) + return m_IProvideClassInfo2; + + m_IUnknown->QueryInterface(&m_IProvideClassInfo2); + return m_IProvideClassInfo2; + } + + IQuickActivate * getIQuickActivate() + { + if(m_IQuickActivate) + return m_IQuickActivate; + + m_IUnknown->QueryInterface(&m_IQuickActivate); + return m_IQuickActivate; + } + + ISpecifyPropertyPages * getISpecifyPropertyPages() + { + if(m_ISpecifyPropertyPages) + return m_ISpecifyPropertyPages; + + m_IUnknown->QueryInterface(&m_ISpecifyPropertyPages); + return m_ISpecifyPropertyPages; + } + + IViewObject * getIViewObject() + { + if(m_IViewObject) + return m_IViewObject; + + if(m_IViewObject2) + m_IViewObject = m_IViewObject2; + + if(m_IViewObject) + { + m_IViewObject->AddRef(); + return m_IViewObject; + } + + m_IUnknown->QueryInterface(&m_IViewObject); + return m_IViewObject; + } + + IViewObject2 * getIViewObject2() + { + if(m_IViewObject2) + return m_IViewObject2; + + m_IUnknown->QueryInterface(&m_IViewObject2); + return m_IViewObject2; + } + + IMsRdpClient * getIMsRdpClient() + { + if(m_IMsRdpClient) + return m_IMsRdpClient; + + if(m_IMsRdpClient2) + m_IMsRdpClient = m_IMsRdpClient2; + else if(m_IMsRdpClient3) + m_IMsRdpClient = m_IMsRdpClient3; + else if(m_IMsRdpClient4) + m_IMsRdpClient = m_IMsRdpClient4; + + if(m_IMsRdpClient) + { + m_IMsRdpClient->AddRef(); + return m_IMsRdpClient; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClient); + return m_IMsRdpClient; + } + + IMsRdpClient2 * getIMsRdpClient2() + { + if(m_IMsRdpClient2) + return m_IMsRdpClient2; + + if(m_IMsRdpClient3) + m_IMsRdpClient2 = m_IMsRdpClient3; + else if(m_IMsRdpClient4) + m_IMsRdpClient2 = m_IMsRdpClient4; + + if(m_IMsRdpClient2) + { + m_IMsRdpClient2->AddRef(); + return m_IMsRdpClient2; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClient2); + return m_IMsRdpClient2; + } + + IMsRdpClient3 * getIMsRdpClient3() + { + if(m_IMsRdpClient3) + return m_IMsRdpClient3; + + if(m_IMsRdpClient4) + m_IMsRdpClient3 = m_IMsRdpClient4; + + if(m_IMsRdpClient3) + { + m_IMsRdpClient3->AddRef(); + return m_IMsRdpClient3; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClient3); + return m_IMsRdpClient3; + } + + IMsRdpClient4 * getIMsRdpClient4() + { + if(m_IMsRdpClient4) + return m_IMsRdpClient4; + + m_IUnknown->QueryInterface(&m_IMsRdpClient4); + return m_IMsRdpClient4; + } + + IMsTscAx * getIMsTscAx() + { + if(m_IMsTscAx) + return m_IMsTscAx; + + if(m_IMsRdpClient) + m_IMsTscAx = m_IMsRdpClient; + else if(m_IMsRdpClient2) + m_IMsTscAx = m_IMsRdpClient2; + else if(m_IMsRdpClient3) + m_IMsTscAx = m_IMsRdpClient3; + else if(m_IMsRdpClient4) + m_IMsTscAx = m_IMsRdpClient4; + + if(m_IMsTscAx) + { + m_IMsTscAx->AddRef(); + return m_IMsTscAx; + } + + m_IUnknown->QueryInterface(&m_IMsTscAx); + return m_IMsTscAx; + } + + IMsTscNonScriptable * getIMsTscNonScriptable() + { + if(m_IMsTscNonScriptable) + return m_IMsTscNonScriptable; + + if(m_IMsRdpClientNonScriptable) + m_IMsTscNonScriptable = m_IMsRdpClientNonScriptable; + else if(m_IMsRdpClientNonScriptable2) + m_IMsTscNonScriptable = m_IMsRdpClientNonScriptable2; + + if(m_IMsTscNonScriptable) + { + m_IMsTscNonScriptable->AddRef(); + return m_IMsTscNonScriptable; + } + + m_IUnknown->QueryInterface(&m_IMsTscNonScriptable); + return m_IMsTscNonScriptable; + } + + IMsRdpClientNonScriptable * getIMsRdpClientNonScriptable() + { + if(m_IMsRdpClientNonScriptable) + return m_IMsRdpClientNonScriptable; + + if(m_IMsRdpClientNonScriptable2) + m_IMsRdpClientNonScriptable = m_IMsRdpClientNonScriptable2; + + if(m_IMsRdpClientNonScriptable) + { + m_IMsRdpClientNonScriptable->AddRef(); + return m_IMsRdpClientNonScriptable; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClientNonScriptable); + return m_IMsRdpClientNonScriptable; + } + + IMsRdpClientNonScriptable2 * getIMsRdpClientNonScriptable2() + { + if(m_IMsRdpClientNonScriptable2) + return m_IMsRdpClientNonScriptable2; + + m_IUnknown->QueryInterface(&m_IMsRdpClientNonScriptable2); + return m_IMsRdpClientNonScriptable2; + } + + private: + IUnknown * m_outer; + + HRESULT queryInterface(REFIID riid, void ** ppvObject) + { + HRESULT hr; + IUnknown * pvObject = NULL; + + dbgprintf(TEXT("IUnknown::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject); + +#define QIBEGIN() \ + if(riid == IID_IUnknown) \ + { \ + assert(0); \ + } + +#define QI(I) \ + else if(riid == IID_ ## I) \ + { \ + if(m_ ## I) \ + { \ + m_ ## I->AddRef(); \ + hr = S_OK; \ + } \ + else \ + { \ + hr = m_IUnknown->QueryInterface(&m_ ## I); \ + } \ + \ + if(SUCCEEDED(hr)) \ + pvObject = static_cast(this); \ + } + +#define QIEND() \ + else \ + { \ + hr = E_NOINTERFACE; \ + pvObject = NULL; \ + } + + QIBEGIN() + + /* Standard interfaces */ + QI(IDispatch) + QI(IConnectionPointContainer) + QI(IDataObject) + QI(IObjectSafety) + QI(IOleControl) + QI(IOleInPlaceActiveObject) + QI(IOleInPlaceObject) + QI(IOleObject) + QI(IOleWindow) + QI(IPersist) + QI(IPersistPropertyBag) + QI(IPersistStorage) + QI(IPersistStreamInit) + QI(IProvideClassInfo) + QI(IProvideClassInfo2) + QI(IQuickActivate) + QI(ISpecifyPropertyPages) + QI(IViewObject) + QI(IViewObject2) + + /* Terminal services client */ + QI(IMsRdpClient) + QI(IMsRdpClient2) + QI(IMsRdpClient3) + QI(IMsRdpClient4) + QI(IMsTscAx) + QI(IMsTscNonScriptable) + QI(IMsRdpClientNonScriptable) + QI(IMsRdpClientNonScriptable2) + QIEND() + +#undef QIBEGIN +#undef QIEND +#undef QI + + if(SUCCEEDED(hr)) + { + assert(pvObject); + pvObject->AddRef(); + } + else + { + assert(pvObject == NULL); + } + + *ppvObject = pvObject; + + dbgprintf(TEXT("IUnknown::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject); + return hr; + } + + ULONG addRef() + { + return InterlockedIncrement(&m_refCount); + } + + ULONG release() + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + friend class CoClassInner; + + class CoClassInner: public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + if(riid == IID_IUnknown) + { + AddRef(); + *ppvObject = this; + return S_OK; + } + + return InnerToOuter(this)->queryInterface(riid, ppvObject); + } + + virtual ULONG STDMETHODCALLTYPE AddRef() + { + return InnerToOuter(this)->addRef(); + } + + virtual ULONG STDMETHODCALLTYPE Release() + { + return InnerToOuter(this)->release(); + } + } + m_inner; + + static CoClass * InnerToOuter(CoClassInner * inner) + { + return CONTAINING_RECORD(inner, CoClass, m_inner); + } + + private: + CoClass(IUnknown * pUnknw, IUnknown * pUnkOuter): + m_refCount(1), + m_outer(pUnkOuter), + m_IUnknown(pUnknw), + m_IDispatch(NULL), + m_IConnectionPointContainer(NULL), + m_IDataObject(NULL), + m_IObjectSafety(NULL), + m_IOleControl(NULL), + m_IOleInPlaceActiveObject(NULL), + m_IOleInPlaceObject(NULL), + m_IOleObject(NULL), + m_IOleWindow(NULL), + m_IPersist(NULL), + m_IPersistPropertyBag(NULL), + m_IPersistStorage(NULL), + m_IPersistStreamInit(NULL), + m_IProvideClassInfo(NULL), + m_IProvideClassInfo2(NULL), + m_IQuickActivate(NULL), + m_ISpecifyPropertyPages(NULL), + m_IViewObject(NULL), + m_IViewObject2(NULL), + m_IMsRdpClient(NULL), + m_IMsRdpClient2(NULL), + m_IMsRdpClient3(NULL), + m_IMsRdpClient4(NULL), + m_IMsTscAx(NULL), + m_IMsTscNonScriptable(NULL), + m_IMsRdpClientNonScriptable(NULL), + m_IMsRdpClientNonScriptable2(NULL) + { + if(m_outer == NULL) + m_outer = &m_inner; + } + + public: + static HRESULT CreateInstance(IUnknown * pUnknw, IUnknown * pUnkOuter, REFIID riid, void ** ppvObject) + { + HRESULT hr = S_OK; + + if(pUnkOuter && riid != IID_IUnknown) + hr = CLASS_E_NOAGGREGATION; + else + { + CoClass * p = new CoClass(pUnknw, pUnkOuter); + + if(p == NULL) + hr = E_OUTOFMEMORY; + else + { + hr = p->m_inner.QueryInterface(riid, ppvObject); + + if(FAILED(hr)) + delete p; + else + p->m_inner.Release(); + } + } + + if(FAILED(hr)) + pUnknw->Release(); + + return hr; + } + + private: + ~CoClass() + { + if(m_IUnknown) + m_IUnknown->Release(); + + if(m_IDispatch) + m_IDispatch->Release(); + + if(m_IConnectionPointContainer) + m_IConnectionPointContainer->Release(); + + if(m_IDataObject) + m_IDataObject->Release(); + + if(m_IObjectSafety) + m_IObjectSafety->Release(); + + if(m_IOleControl) + m_IOleControl->Release(); + + if(m_IOleInPlaceActiveObject) + m_IOleInPlaceActiveObject->Release(); + + if(m_IOleInPlaceObject) + m_IOleInPlaceObject->Release(); + + if(m_IOleObject) + m_IOleObject->Release(); + + if(m_IOleWindow) + m_IOleWindow->Release(); + + if(m_IPersist) + m_IPersist->Release(); + + if(m_IPersistPropertyBag) + m_IPersistPropertyBag->Release(); + + if(m_IPersistStorage) + m_IPersistStorage->Release(); + + if(m_IPersistStreamInit) + m_IPersistStreamInit->Release(); + + if(m_IProvideClassInfo) + m_IProvideClassInfo->Release(); + + if(m_IProvideClassInfo2) + m_IProvideClassInfo2->Release(); + + if(m_IQuickActivate) + m_IQuickActivate->Release(); + + if(m_ISpecifyPropertyPages) + m_ISpecifyPropertyPages->Release(); + + if(m_IViewObject) + m_IViewObject->Release(); + + if(m_IViewObject2) + m_IViewObject2->Release(); + + if(m_IMsRdpClient) + m_IMsRdpClient->Release(); + + if(m_IMsRdpClient2) + m_IMsRdpClient2->Release(); + + if(m_IMsRdpClient3) + m_IMsRdpClient3->Release(); + + if(m_IMsRdpClient4) + m_IMsRdpClient4->Release(); + + if(m_IMsTscAx) + m_IMsTscAx->Release(); + + if(m_IMsTscNonScriptable) + m_IMsTscNonScriptable->Release(); + + if(m_IMsRdpClientNonScriptable) + m_IMsRdpClientNonScriptable->Release(); + + if(m_IMsRdpClientNonScriptable2) + m_IMsRdpClientNonScriptable2->Release(); + } + + /* IUnknown */ + public: + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + return m_outer->QueryInterface(riid, ppvObject); + } + + virtual ULONG STDMETHODCALLTYPE AddRef(void) + { + return m_outer->AddRef(); + } + + virtual ULONG STDMETHODCALLTYPE Release(void) + { + return m_outer->Release(); + } + + /* IDispatch */ + private: + static void FreeExcepInfo(const EXCEPINFO& excepInfo) + { + if(excepInfo.bstrSource) + SysFreeString(excepInfo.bstrSource); + + if(excepInfo.bstrDescription) + SysFreeString(excepInfo.bstrDescription); + + if(excepInfo.bstrHelpFile) + SysFreeString(excepInfo.bstrHelpFile); + } + + static std::basic_string ExcepInfoToString(const EXCEPINFO& excepInfo) + { + std::basic_ostringstream o; + + o << "{"; + o << " code: " << excepInfo.wCode << " from: " << std::basic_string(excepInfo.bstrSource, excepInfo.bstrSource + SysStringLen(excepInfo.bstrSource)); + + BSTR bstrDescription = NULL; + + if(excepInfo.bstrDescription) + bstrDescription = excepInfo.bstrDescription; + else if(excepInfo.pfnDeferredFillIn) + { + EXCEPINFO excepInfoCopy = excepInfo; + + if(SUCCEEDED(excepInfoCopy.pfnDeferredFillIn(&excepInfoCopy)) && excepInfoCopy.bstrDescription) + { + bstrDescription = excepInfoCopy.bstrDescription; + excepInfoCopy.bstrDescription = NULL; + } + + if(excepInfoCopy.bstrSource == excepInfo.bstrSource) + excepInfoCopy.bstrSource = NULL; + + if(excepInfoCopy.bstrHelpFile == excepInfo.bstrDescription) + excepInfoCopy.bstrDescription = NULL; + + FreeExcepInfo(excepInfoCopy); + } + + if(bstrDescription) + { + o << " msg: " << std::basic_string(bstrDescription, bstrDescription + SysStringLen(bstrDescription)); + + if(excepInfo.bstrDescription == NULL) + SysFreeString(bstrDescription); + } + + o << " }"; + + return o.str().c_str(); + } + + public: + virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT * pctinfo) + { + IDispatch * pIDispatch = getIDispatch(); + dbgprintf(TEXT("IDispatch::GetTypeInfoCount(%p)"), pctinfo); + HRESULT hr = pIDispatch->GetTypeInfoCount(pctinfo); + dbgprintf(TEXT("IDispatch::GetTypeInfoCount -> %08X, ctinfo = %lu"), hr, *pctinfo); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo ** ppTInfo) + { + IDispatch * pIDispatch = getIDispatch(); + dbgprintf(TEXT("IDispatch::GetTypeInfo(%lu, %08X, %p)"), iTInfo, lcid, ppTInfo); + HRESULT hr = pIDispatch->GetTypeInfo(iTInfo, lcid, ppTInfo); + dbgprintf(TEXT("IDispatch::GetTypeInfo -> %08X, pTInfo = %p"), hr, *ppTInfo); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId) + { + IDispatch * pIDispatch = getIDispatch(); + std::wstring strtemp; + + std::wostringstream strtempo; + + strtemp.resize(0); + strtemp += L"[ "; + + for(UINT i = 0; i < cNames; ++ i) + { + if(i) + strtemp += L", "; + + strtemp += rgszNames[i]; + } + + strtemp += L" ]"; + + dbgprintf(TEXT("IDispatch::GetIDsOfNames(%ls, %ls, %lu, %08X, %p)"), UUIDToString(riid).c_str(), strtemp.c_str(), cNames, lcid, rgDispId); + HRESULT hr = pIDispatch->GetIDsOfNames(riid, rgszNames, cNames, lcid, rgDispId); + + strtemp.resize(0); + strtempo.str(strtemp); + + strtempo << L"[ "; + + for(UINT i = 0; i < cNames; ++ i) + { + if(i) + strtempo << L", "; + + strtempo << rgDispId[i]; + } + + strtempo << L" ]"; + + dbgprintf(TEXT("IDispatch::GetIDsOfNames -> %08X, rgDispId = %ls"), hr, strtempo.str().c_str()); + + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pDispParams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, UINT * puArgErr) + { + IDispatch * pIDispatch = getIDispatch(); + + std::basic_ostringstream strtempo; + + strtempo << L"{"; + + for(unsigned int i = pDispParams->cArgs, j = pDispParams->cNamedArgs; j < pDispParams->cArgs; -- i, ++ j) + { + strtempo << L" "; + strtempo << VariantToString(pDispParams->rgvarg[i - 1]); + strtempo << L","; + } + + for(unsigned int i = pDispParams->cArgs - pDispParams->cNamedArgs; i > 0; -- i) + { + strtempo << L" "; + strtempo << L"["; strtempo << pDispParams->rgdispidNamedArgs[i - 1]; strtempo << L"] => "; + strtempo << VariantToString(pDispParams->rgvarg[i - 1]); + strtempo << L","; + } + + strtempo << L" }"; + + dbgprintf(TEXT("IDispatch::Invoke(%ld, %ls, %08X, %04X, %s, %p, %p, %p)"), dispIdMember, UUIDToString(riid).c_str(), lcid, wFlags, strtempo.str().c_str(), pVarResult, pExcepInfo, puArgErr); + + VARIANT VarResult = { }; + EXCEPINFO ExcepInfo = { }; + + if(pVarResult == NULL) + pVarResult = &VarResult; + + if(pExcepInfo == NULL) + pExcepInfo = &ExcepInfo; + + HRESULT hr = pIDispatch->Invoke(dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + + dbgprintf(TEXT("IDispatch::Invoke -> %08X, returns %s, throws %s"), hr, VariantToString(*pVarResult).c_str(), ExcepInfoToString(*pExcepInfo).c_str()); + + FreeExcepInfo(ExcepInfo); + + return hr; + } + + /* IConnectionPointContainer */ + public: + virtual HRESULT STDMETHODCALLTYPE EnumConnectionPoints(IEnumConnectionPoints ** ppEnum) + { + IConnectionPointContainer * pIConnectionPointContainer = getIConnectionPointContainer(); + dbgprintf(TEXT("IConnectionPointContainer::EnumConnectionPoints(%p)"), ppEnum); + HRESULT hr = pIConnectionPointContainer->EnumConnectionPoints(ppEnum); + dbgprintf(TEXT("IConnectionPointContainer::EnumConnectionPoints -> %08X, pEnum = %p"), hr, *ppEnum); + + if(SUCCEEDED(hr)) + *ppEnum = HookIEnumConnectionPoints(*ppEnum); + + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE FindConnectionPoint(REFIID riid, IConnectionPoint ** ppCP) + { + IConnectionPointContainer * pIConnectionPointContainer = getIConnectionPointContainer(); + dbgprintf(TEXT("IConnectionPointContainer::FindConnectionPoint(%ls, %p)"), UUIDToString(riid).c_str(), ppCP); + HRESULT hr = pIConnectionPointContainer->FindConnectionPoint(riid, ppCP); + dbgprintf(TEXT("IConnectionPointContainer::FindConnectionPoint -> %08X, pCP = %p"), hr, *ppCP); + + if(SUCCEEDED(hr)) + *ppCP = HookIConnectionPoint(*ppCP); + + return hr; + } + + /* IDataObject */ + private: + static std::basic_string TargetDeviceToString(const DVTARGETDEVICE& targetdev) + { + if(&targetdev == NULL) + return TEXT(""); + + std::basic_ostringstream o; + + o << "{"; + o << LPCWSTR(targetdev.tdData[targetdev.tdDriverNameOffset]); + + if(targetdev.tdDeviceNameOffset) + { + o << ","; + o << LPCWSTR(targetdev.tdData[targetdev.tdDeviceNameOffset]); + } + + if(targetdev.tdPortNameOffset) + { + o << ","; + o << LPCWSTR(targetdev.tdData[targetdev.tdPortNameOffset]); + } + + o << " }"; + + return o.str(); + } + + static LPCTSTR AspectToString(DWORD aspect) + { + switch(aspect) + { + case DVASPECT_CONTENT: return TEXT("content"); + case DVASPECT_THUMBNAIL: return TEXT("thumbnail"); + case DVASPECT_ICON: return TEXT("icon"); + case DVASPECT_DOCPRINT: return TEXT("printable"); + default: return TEXT(""); + } + } + + static LPCTSTR TymedToString(DWORD tymed) + { + switch(tymed) + { + case TYMED_HGLOBAL: return TEXT("memory"); + case TYMED_FILE: return TEXT("file"); + case TYMED_ISTREAM: return TEXT("IStream"); + case TYMED_ISTORAGE: return TEXT("IStorage"); + case TYMED_GDI: return TEXT("bitmap"); + case TYMED_MFPICT: return TEXT("metafile"); + case TYMED_ENHMF: return TEXT("enhanced metafile"); + case TYMED_NULL: return TEXT(""); + default: return TEXT(""); + } + } + + static std::basic_string FormatEtcToString(const FORMATETC& formatetc) + { + std::basic_ostringstream o; + + o << "{"; + + // cfFormat + o << " format: "; + + switch(formatetc.cfFormat) + { + case CF_TEXT: o << "ANSI text"; break; + case CF_BITMAP: o << "bitmap"; break; + case CF_METAFILEPICT: o << "metafile"; break; + case CF_SYLK: o << "symlink"; break; + case CF_DIF: o << "DIF"; break; + case CF_TIFF: o << "TIFF"; break; + case CF_OEMTEXT: o << "OEM text"; break; + case CF_DIB: o << "DIBv4"; break; + case CF_PALETTE: o << "palette"; break; + case CF_PENDATA: o << "pen data"; break; + case CF_RIFF: o << "RIFF"; break; + case CF_WAVE: o << "WAV"; break; + case CF_UNICODETEXT: o << "Unicode text"; break; + case CF_ENHMETAFILE: o << "enhanced metafile"; break; + case CF_HDROP: o << "list of files"; break; + case CF_LOCALE: o << "LCID"; break; + case CF_DIBV5: o << "DIBv5"; break; + case CF_OWNERDISPLAY: o << ""; break; + case CF_DSPTEXT: o << ""; break; + case CF_DSPBITMAP: o << ""; break; + case CF_DSPMETAFILEPICT: o << ""; break; + case CF_DSPENHMETAFILE: o << ""; break; + + default: + o << "<"; + + if(formatetc.cfFormat >= CF_PRIVATEFIRST && formatetc.cfFormat <= CF_PRIVATELAST) + o << "private"; + else if(formatetc.cfFormat >= CF_GDIOBJFIRST && formatetc.cfFormat <= CF_GDIOBJLAST) + o << "GDI object"; + else + o << "unknown"; + + o << " " << std::hex << formatetc.cfFormat << std::dec << ">"; + } + + // ptd + if(formatetc.ptd) + o << " device: " << TargetDeviceToString(*formatetc.ptd); + + // dwAspect + o << " aspect: " << AspectToString(formatetc.dwAspect); + + // lindex + if(formatetc.dwAspect == DVASPECT_CONTENT || formatetc.dwAspect == DVASPECT_DOCPRINT) + o << " page split: " << formatetc.lindex; + + // tymed + o << " medium: " << TymedToString(formatetc.tymed); + + return o.str(); + } + + static std::basic_string MediumToString(const STGMEDIUM& medium) + { + std::basic_ostringstream o; + + o << "{ "; + o << TymedToString(medium.tymed); + o << " }"; + + return o.str(); + } + + public: + virtual HRESULT STDMETHODCALLTYPE GetData(FORMATETC * pformatetcIn, STGMEDIUM * pmedium) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::GetData(%s, %p)"), FormatEtcToString(*pformatetcIn).c_str(), pmedium); + HRESULT hr = pIDataObject->GetData(pformatetcIn, pmedium); + dbgprintf(TEXT("IDataObject::GetData -> %08X, %s"), hr, MediumToString(*pmedium).c_str()); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetDataHere(FORMATETC * pformatetc, STGMEDIUM * pmedium) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::GetDataHere(%s, %p)"), FormatEtcToString(*pformatetc).c_str(), pmedium); + HRESULT hr = pIDataObject->GetDataHere(pformatetc, pmedium); + dbgprintf(TEXT("IDataObject::GetDataHere -> %08X, medium = %s"), hr, MediumToString(*pmedium).c_str()); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE QueryGetData(FORMATETC * pformatetc) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::QueryGetData(%s)"), FormatEtcToString(*pformatetc).c_str()); + HRESULT hr = pIDataObject->QueryGetData(pformatetc); + dbgprintf(TEXT("IDataObject::QueryGetData -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc(FORMATETC * pformatectIn, FORMATETC * pformatetcOut) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::GetCanonicalFormatEtc(%s, %p)"), FormatEtcToString(*pformatectIn).c_str(), pformatetcOut); + HRESULT hr = pIDataObject->GetCanonicalFormatEtc(pformatectIn, pformatetcOut); + dbgprintf(TEXT("IDataObject::GetCanonicalFormatEtc -> %08X, formatetcOut = %s"), hr, FormatEtcToString(*pformatetcOut).c_str()); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE SetData(FORMATETC * pformatetc, STGMEDIUM * pmedium, BOOL fRelease) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::SetData(%s, %p, %s)"), FormatEtcToString(*pformatetc).c_str(), MediumToString(*pmedium).c_str(), fRelease ? TEXT("true") : TEXT("false")); + HRESULT hr = pIDataObject->SetData(pformatetc, pmedium, fRelease); + dbgprintf(TEXT("IDataObject::SetData -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC ** ppenumFormatEtc) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::EnumFormatEtc(%lu, %p)"), dwDirection, ppenumFormatEtc); + HRESULT hr = pIDataObject->EnumFormatEtc(dwDirection, ppenumFormatEtc); + dbgprintf(TEXT("IDataObject::EnumFormatEtc -> %08X, penumFormatEtc = %p"), hr, *ppenumFormatEtc); + // TODO: hook + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE DAdvise(FORMATETC * pformatetc, DWORD advf, IAdviseSink * pAdvSink, DWORD * pdwConnection) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::DAdvise(%s, %lu, %p, %p)"), FormatEtcToString(*pformatetc).c_str(), advf, pAdvSink, pdwConnection); + HRESULT hr = pIDataObject->DAdvise(pformatetc, advf, pAdvSink, pdwConnection); + dbgprintf(TEXT("IDataObject::DAdvise -> %08X, dwConnection = %lu"), hr, *pdwConnection); + // TODO: hook + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE DUnadvise(DWORD dwConnection) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::DUnadvise(%lu)"), dwConnection); + HRESULT hr = pIDataObject->DUnadvise(dwConnection); + dbgprintf(TEXT("IDataObject::DUnadvise -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE EnumDAdvise(IEnumSTATDATA ** ppenumAdvise) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::EnumDAdvise(%p)"), ppenumAdvise); + HRESULT hr = pIDataObject->EnumDAdvise(ppenumAdvise); + dbgprintf(TEXT("IDataObject::EnumDAdvise -> %08X, penumAdvise = %p"), hr, *ppenumAdvise); + // TODO: hook + return hr; + } + + /* IObjectSafety */ + public: + virtual HRESULT STDMETHODCALLTYPE IObjectSafety::GetInterfaceSafetyOptions(REFIID riid, DWORD * pdwSupportedOptions, DWORD * pdwEnabledOptions) + { + IObjectSafety * pIObjectSafety = getIObjectSafety(); + dbgprintf(TEXT("IObjectSafety::GetInterfaceSafetyOptions(%ls, %p, %p)"), UUIDToString(riid).c_str(), pdwSupportedOptions, pdwEnabledOptions); + HRESULT hr = pIObjectSafety->GetInterfaceSafetyOptions(riid, pdwSupportedOptions, pdwEnabledOptions); + dbgprintf(TEXT("IObjectSafety::GetInterfaceSafetyOptions -> %08X, dwSupportedOptions = %08X, dwEnabledOptions = %08X"), hr, *pdwSupportedOptions, *pdwEnabledOptions); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IObjectSafety::SetInterfaceSafetyOptions(REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions) + { + IObjectSafety * pIObjectSafety = getIObjectSafety(); + dbgprintf(TEXT("IObjectSafety::SetInterfaceSafetyOptions(%ls, %08X, %08X)"), UUIDToString(riid).c_str(), dwOptionSetMask, dwEnabledOptions); + HRESULT hr = pIObjectSafety->SetInterfaceSafetyOptions(riid, dwOptionSetMask, dwEnabledOptions); + dbgprintf(TEXT("IObjectSafety::SetInterfaceSafetyOptions -> %08X"), hr); + return hr; + } + + /* IOleControl */ + private: + std::basic_string ControlInfoToString(const CONTROLINFO& ci) + { + std::basic_ostringstream o; + + int firstdone = 0; + + o << "{ "; + + if(ci.cAccel && ci.hAccel) + { + LPACCEL pAccel = static_cast(GlobalLock(ci.hAccel)); + + if(pAccel) + { + for(USHORT i = 0; i < ci.cAccel; ++ i) + { + if(i) + o << ", "; + + if(pAccel[i].fVirt & FSHIFT) + o << "SHIFT + "; + + if(pAccel[i].fVirt & FCONTROL) + o << "CONTROL + "; + + if(pAccel[i].fVirt & FALT) + o << "ALT + "; + + if(pAccel[i].fVirt & FVIRTKEY) + o << ""; + else + o << wchar_t(pAccel[i].key); + + o << " " << std::hex << pAccel[i].cmd << std::dec; + } + + firstdone = ci.cAccel; + + GlobalUnlock(pAccel); + } + } + + if(ci.dwFlags & CTRLINFO_EATS_RETURN) + { + if(!firstdone) + { + o << ", "; + ++ firstdone; + } + + o << "ENTER"; + } + + if(ci.dwFlags & CTRLINFO_EATS_ESCAPE) + { + if(!firstdone) + { + o << ", "; + ++ firstdone; + } + + o << "ESC"; + } + + if(firstdone) + o << " "; + + o << "}"; + + return o.str(); + } + + std::basic_string MnemonicToString(const MSG& msg) + { + std::basic_ostringstream o; + + o << "["; + + switch(msg.message) + { + case WM_SYSKEYDOWN: + o << "ALT + "; + + case WM_KEYDOWN: + TCHAR sz[1024]; + GetKeyNameText(LONG(msg.lParam), sz, ARRAYSIZE(sz)); + o << sz; + + default: + o << ""; + } + + o << "]"; + + return o.str(); + } + + public: + virtual HRESULT STDMETHODCALLTYPE GetControlInfo(CONTROLINFO * pCI) + { + IOleControl * pIOleControl = getIOleControl(); + dbgprintf(TEXT("IOleControl::GetControlInfo(%p)"), pCI); + HRESULT hr = pIOleControl->GetControlInfo(pCI); + dbgprintf(TEXT("IOleControl::GetControlInfo -> %08X, %s"), hr, ControlInfoToString(*pCI).c_str()); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE OnMnemonic(MSG * pMsg) + { + IOleControl * pIOleControl = getIOleControl(); + dbgprintf(TEXT("IOleControl::OnMnemonic(%s)"), MnemonicToString(*pMsg).c_str()); + HRESULT hr = pIOleControl->OnMnemonic(pMsg); + dbgprintf(TEXT("IOleControl::OnMnemonic -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE OnAmbientPropertyChange(DISPID dispID) + { + IOleControl * pIOleControl = getIOleControl(); + dbgprintf(TEXT("IOleControl::OnAmbientPropertyChange(%08X)"), dispID); + HRESULT hr = pIOleControl->OnAmbientPropertyChange(dispID); + dbgprintf(TEXT("IOleControl::OnAmbientPropertyChange -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE FreezeEvents(BOOL bFreeze) + { + IOleControl * pIOleControl = getIOleControl(); + dbgprintf(TEXT("IOleControl::FreezeEvents(%s)"), BooleanToString(bFreeze)); + HRESULT hr = pIOleControl->FreezeEvents(bFreeze); + dbgprintf(TEXT("IOleControl::FreezeEvents -> %08X"), hr); + return hr; + } + + /* IOleInPlaceActiveObject */ + public: + virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(LPMSG lpmsg) + { + IOleInPlaceActiveObject * pIOleInPlaceActiveObject = getIOleInPlaceActiveObject(); + dbgprintf(TEXT("IOleInPlaceActiveObject::TranslateAccelerator(%s)"), MnemonicToString(*lpmsg).c_str()); + HRESULT hr = pIOleInPlaceActiveObject->TranslateAccelerator(lpmsg); + dbgprintf(TEXT("IOleInPlaceActiveObject::TranslateAccelerator -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivate(BOOL fActivate) + { + IOleInPlaceActiveObject * pIOleInPlaceActiveObject = getIOleInPlaceActiveObject(); + dbgprintf(TEXT("IOleInPlaceActiveObject::OnFrameWindowActivate(%s)"), BooleanToString(fActivate)); + HRESULT hr = pIOleInPlaceActiveObject->OnFrameWindowActivate(fActivate); + dbgprintf(TEXT("IOleInPlaceActiveObject::OnFrameWindowActivate -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE OnDocWindowActivate(BOOL fActivate) + { + IOleInPlaceActiveObject * pIOleInPlaceActiveObject = getIOleInPlaceActiveObject(); + dbgprintf(TEXT("IOleInPlaceActiveObject::OnDocWindowActivate(%s)"), BooleanToString(fActivate)); + HRESULT hr = pIOleInPlaceActiveObject->OnDocWindowActivate(fActivate); + dbgprintf(TEXT("IOleInPlaceActiveObject::OnDocWindowActivate -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE ResizeBorder(LPCRECT prcBorder, IOleInPlaceUIWindow * pUIWindow, BOOL fFrameWindow) + { + // TODO: hook pUIWindow + IOleInPlaceActiveObject * pIOleInPlaceActiveObject = getIOleInPlaceActiveObject(); + dbgprintf(TEXT("IOleInPlaceActiveObject::ResizeBorder(%s)"), RectToString(*prcBorder).c_str(), pUIWindow, BooleanToString(fFrameWindow)); + HRESULT hr = pIOleInPlaceActiveObject->ResizeBorder(prcBorder, pUIWindow, fFrameWindow); + dbgprintf(TEXT("IOleInPlaceActiveObject::ResizeBorder -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE EnableModeless(BOOL fEnable) + { + IOleInPlaceActiveObject * pIOleInPlaceActiveObject = getIOleInPlaceActiveObject(); + dbgprintf(TEXT("IOleInPlaceActiveObject::EnableModeless(%s)"), BooleanToString(fEnable)); + HRESULT hr = pIOleInPlaceActiveObject->EnableModeless(fEnable); + dbgprintf(TEXT("IOleInPlaceActiveObject::EnableModeless -> %08X"), hr); + return hr; + } + + /* IOleInPlaceObject */ + public: + virtual HRESULT STDMETHODCALLTYPE InPlaceDeactivate(void) + { + IOleInPlaceObject * pIOleInPlaceObject = getIOleInPlaceObject(); + dbgprintf(TEXT("IOleInPlaceObject::InPlaceDeactivate()")); + HRESULT hr = pIOleInPlaceObject->InPlaceDeactivate(); + dbgprintf(TEXT("IOleInPlaceObject::InPlaceDeactivate -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE UIDeactivate(void) + { + IOleInPlaceObject * pIOleInPlaceObject = getIOleInPlaceObject(); + dbgprintf(TEXT("IOleInPlaceObject::UIDeactivate()")); + HRESULT hr = pIOleInPlaceObject->UIDeactivate(); + dbgprintf(TEXT("IOleInPlaceObject::UIDeactivate -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE SetObjectRects(LPCRECT lprcPosRect, LPCRECT lprcClipRect) + { + IOleInPlaceObject * pIOleInPlaceObject = getIOleInPlaceObject(); + dbgprintf(TEXT("IOleInPlaceObject::SetObjectRects(%s, %s)"), RectToString(*lprcPosRect).c_str(), RectToString(*lprcClipRect).c_str()); + HRESULT hr = pIOleInPlaceObject->SetObjectRects(lprcPosRect, lprcClipRect); + dbgprintf(TEXT("IOleInPlaceObject::SetObjectRects -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE ReactivateAndUndo(void) + { + IOleInPlaceObject * pIOleInPlaceObject = getIOleInPlaceObject(); + dbgprintf(TEXT("IOleInPlaceObject::ReactivateAndUndo()")); + HRESULT hr = pIOleInPlaceObject->ReactivateAndUndo(); + dbgprintf(TEXT("IOleInPlaceObject::ReactivateAndUndo -> %08X"), hr); + return hr; + } + + /* IOleWindow */ + public: + virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND * phwnd) + { + IOleWindow * pIOleWindow = getIOleWindow(); + dbgprintf(TEXT("IOleWindow::GetWindow(%p)"), phwnd); + HRESULT hr = pIOleWindow->GetWindow(phwnd); + dbgprintf(TEXT("IOleWindow::GetWindow -> %08X, hwnd = %X"), hr, *phwnd); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode) + { + IOleWindow * pIOleWindow = getIOleWindow(); + dbgprintf(TEXT("IOleWindow::ContextSensitiveHelp(%s)"), BooleanToString(fEnterMode)); + HRESULT hr = pIOleWindow->ContextSensitiveHelp(fEnterMode); + dbgprintf(TEXT("IOleWindow::ContextSensitiveHelp -> %08X"), hr); + return hr; + } + + /* IOleObject */ + public: + virtual HRESULT STDMETHODCALLTYPE SetClientSite(IOleClientSite * pClientSite) + { + // TODO: hook pClientSite + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::SetClientSite(%p)"), pClientSite); + HRESULT hr = pIOleObject->SetClientSite(pClientSite); + dbgprintf(TEXT("IOleObject::SetClientSite -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetClientSite(IOleClientSite ** ppClientSite) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::GetClientSite(%s)"), ppClientSite); + HRESULT hr = pIOleObject->GetClientSite(ppClientSite); + dbgprintf(TEXT("IOleObject::GetClientSite -> %08X"), hr, ppClientSite); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE SetHostNames(LPCOLESTR szContainerApp, LPCOLESTR szContainerObj) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::SetHostNames(%ls, %ls)"), szContainerApp, szContainerObj); + HRESULT hr = pIOleObject->SetHostNames(szContainerApp, szContainerObj); + dbgprintf(TEXT("IOleObject::SetHostNames -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Close(DWORD dwSaveOption) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::Close(%lu)"), dwSaveOption); + HRESULT hr = pIOleObject->Close(dwSaveOption); + dbgprintf(TEXT("IOleObject::Close -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE SetMoniker(DWORD dwWhichMoniker, IMoniker * pmk) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::SetMoniker(%lu, %p)"), dwWhichMoniker, MonikerToString(pmk).c_str()); + HRESULT hr = pIOleObject->SetMoniker(dwWhichMoniker, pmk); + dbgprintf(TEXT("IOleObject::SetMoniker -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker ** ppmk) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::GetMoniker(%lu, %lu, %p)"), dwAssign, dwWhichMoniker, ppmk); + HRESULT hr = pIOleObject->GetMoniker(dwAssign, dwWhichMoniker, ppmk); + dbgprintf(TEXT("IOleObject::GetMoniker -> %08X, pmk = %s"), hr, SUCCEEDED(hr) ? MonikerToString(*ppmk).c_str() : TEXT("")); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE InitFromData(IDataObject * pDataObject, BOOL fCreation, DWORD dwReserved) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::InitFromData(%p, %s, %lu)"), pDataObject, BooleanToString(fCreation), dwReserved); + HRESULT hr = pIOleObject->InitFromData(pDataObject, fCreation, dwReserved); + dbgprintf(TEXT("IOleObject::InitFromData -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetClipboardData(DWORD dwReserved, IDataObject ** ppDataObject) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::GetClipboardData(%lu, %p)"), dwReserved, ppDataObject); + HRESULT hr = pIOleObject->GetClipboardData(dwReserved, ppDataObject); + dbgprintf(TEXT("IOleObject::GetClipboardData -> %08X, pDataObject = %p"), hr, *ppDataObject); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE DoVerb(LONG iVerb, LPMSG lpmsg, IOleClientSite * pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::DoVerb(%ld, %p, %p, %ld, %p, %s)"), iVerb, lpmsg, pActiveSite, lindex, hwndParent, RectToString(*lprcPosRect).c_str()); + HRESULT hr = pIOleObject->DoVerb(iVerb, lpmsg, pActiveSite, lindex, hwndParent, lprcPosRect); + dbgprintf(TEXT("IOleObject::DoVerb -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE EnumVerbs(IEnumOLEVERB ** ppEnumOleVerb) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::EnumVerbs(%p)"), ppEnumOleVerb); + HRESULT hr = pIOleObject->EnumVerbs(ppEnumOleVerb); + dbgprintf(TEXT("IOleObject::EnumVerbs -> %08X, pEnumOleVerb = %p"), hr, *ppEnumOleVerb); + // TODO: hook + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Update(void) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::Update(%s)")); + HRESULT hr = pIOleObject->Update(); + dbgprintf(TEXT("IOleObject::Update -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IsUpToDate(void) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::IsUpToDate(%s)")); + HRESULT hr = pIOleObject->IsUpToDate(); + dbgprintf(TEXT("IOleObject::IsUpToDate -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetUserClassID(CLSID * pClsid) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::GetUserClassID(%p)"), pClsid); + HRESULT hr = pIOleObject->GetUserClassID(pClsid); + dbgprintf(TEXT("IOleObject::GetUserClassID -> %08X, Clsid = %ls"), hr, UUIDToString(*pClsid).c_str()); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetUserType(DWORD dwFormOfType, LPOLESTR * pszUserType) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::GetUserType(%lu, %p)"), dwFormOfType, pszUserType); + HRESULT hr = pIOleObject->GetUserType(dwFormOfType, pszUserType); + dbgprintf(TEXT("IOleObject::GetUserType -> %08X, szUserType = %s"), hr, *pszUserType); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE SetExtent(DWORD dwDrawAspect, SIZEL * psizel) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::SetExtent(%lu, %s)"), dwDrawAspect, SizeToString(*psizel).c_str()); + HRESULT hr = pIOleObject->SetExtent(dwDrawAspect, psizel); + dbgprintf(TEXT("IOleObject::SetExtent -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetExtent(DWORD dwDrawAspect, SIZEL * psizel) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::GetExtent(%lu, %p)"), dwDrawAspect, psizel); + HRESULT hr = pIOleObject->GetExtent(dwDrawAspect, psizel); + dbgprintf(TEXT("IOleObject::GetExtent -> %08X"), hr, SizeToString(*psizel).c_str()); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Advise(IAdviseSink * pAdvSink, DWORD * pdwConnection) + { + // TODO: hook pAdvSink + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::Advise(%p, %p)"), pAdvSink, pdwConnection); + HRESULT hr = pIOleObject->Advise(pAdvSink, pdwConnection); + dbgprintf(TEXT("IOleObject::Advise -> %08X, dwConnection = %lu"), hr, *pdwConnection); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Unadvise(DWORD dwConnection) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::Unadvise(%lu)"), dwConnection); + HRESULT hr = pIOleObject->Unadvise(dwConnection); + dbgprintf(TEXT("IOleObject::Unadvise -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE EnumAdvise(IEnumSTATDATA ** ppenumAdvise) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::EnumAdvise(%p)"), ppenumAdvise); + HRESULT hr = pIOleObject->EnumAdvise(ppenumAdvise); + dbgprintf(TEXT("IOleObject::EnumAdvise -> %08X, penumAdvise = %p"), hr, *ppenumAdvise); + // TODO: hook + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetMiscStatus(DWORD dwAspect, DWORD * pdwStatus) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::GetMiscStatus(%lu, %p)"), dwAspect, pdwStatus); + HRESULT hr = pIOleObject->GetMiscStatus(dwAspect, pdwStatus); + dbgprintf(TEXT("IOleObject::GetMiscStatus -> %08X, dwStatus = %08X"), hr, *pdwStatus); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE SetColorScheme(LOGPALETTE * pLogpal) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::SetColorScheme(%p)"), pLogpal); + HRESULT hr = pIOleObject->SetColorScheme(pLogpal); + dbgprintf(TEXT("IOleObject::SetColorScheme -> %08X"), hr); + return hr; + } + + /* IPersist */ + public: + virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID * pClassID) + { + IPersist * pIPersist = getIPersist(); + dbgprintf(TEXT("IPersist::GetClassID(%p)"), pClassID); + HRESULT hr = pIPersist->GetClassID(pClassID); + dbgprintf(TEXT("IPersist::GetClassID -> %08X, ClassId = %ls"), hr, UUIDToString(*pClassID).c_str()); + return hr; + } + + /* IPersistPropertyBag */ + public: + virtual HRESULT STDMETHODCALLTYPE InitNew(void) + { + IPersistPropertyBag * pIPersistPropertyBag = getIPersistPropertyBag(); + dbgprintf(TEXT("IPersistPropertyBag::InitNew()")); + HRESULT hr = pIPersistPropertyBag->InitNew(); + dbgprintf(TEXT("IPersistPropertyBag::InitNew -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Load(IPropertyBag * pPropBag, IErrorLog * pErrorLog) + { + // TODO: hook pPropBag, pErrorLog + IPersistPropertyBag * pIPersistPropertyBag = getIPersistPropertyBag(); + dbgprintf(TEXT("IPersistPropertyBag::Load(%p, %p)"), pPropBag, pErrorLog); + HRESULT hr = pIPersistPropertyBag->Load(pPropBag, pErrorLog); + dbgprintf(TEXT("IPersistPropertyBag::Load -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Save(IPropertyBag * pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties) + { + // TODO: hook pPropBag + IPersistPropertyBag * pIPersistPropertyBag = getIPersistPropertyBag(); + dbgprintf(TEXT("IPersistPropertyBag::Save(%p, %s, %s)"), pPropBag, BooleanToString(fClearDirty), BooleanToString(fSaveAllProperties)); + HRESULT hr = pIPersistPropertyBag->Save(pPropBag, fClearDirty, fSaveAllProperties); + dbgprintf(TEXT("IPersistPropertyBag::Save -> %08X"), hr); + return hr; + } + + /* IPersistStorage */ + public: + virtual HRESULT STDMETHODCALLTYPE IPersistStorage::IsDirty(void) + { + IPersistStorage * pIPersistStorage = getIPersistStorage(); + dbgprintf(TEXT("IPersistStorage::IsDirty()")); + HRESULT hr = pIPersistStorage->IsDirty(); + dbgprintf(TEXT("IPersistStorage::IsDirty -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IPersistStorage::InitNew(IStorage * pStg) + { + IPersistStorage * pIPersistStorage = getIPersistStorage(); + dbgprintf(TEXT("IPersistStorage::InitNew(%p)"), pStg); + HRESULT hr = pIPersistStorage->InitNew(pStg); + dbgprintf(TEXT("IPersistStorage::InitNew -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IPersistStorage::Load(IStorage * pStg) + { + IPersistStorage * pIPersistStorage = getIPersistStorage(); + dbgprintf(TEXT("IPersistStorage::Load(%p)"), pStg); + HRESULT hr = pIPersistStorage->Load(pStg); + dbgprintf(TEXT("IPersistStorage::Load -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IPersistStorage::Save(IStorage * pStgSave, BOOL fSameAsLoad) + { + IPersistStorage * pIPersistStorage = getIPersistStorage(); + dbgprintf(TEXT("IPersistStorage::Save(%p, %s)"), pStgSave, BooleanToString(fSameAsLoad)); + HRESULT hr = pIPersistStorage->Save(pStgSave, fSameAsLoad); + dbgprintf(TEXT("IPersistStorage::Save -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE SaveCompleted(IStorage * pStgNew) + { + IPersistStorage * pIPersistStorage = getIPersistStorage(); + dbgprintf(TEXT("IPersistStorage::SaveCompleted(%p)"), pStgNew); + HRESULT hr = pIPersistStorage->SaveCompleted(pStgNew); + dbgprintf(TEXT("IPersistStorage::SaveCompleted -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE HandsOffStorage(void) + { + IPersistStorage * pIPersistStorage = getIPersistStorage(); + dbgprintf(TEXT("IPersistStorage::HandsOffStorage()")); + HRESULT hr = pIPersistStorage->HandsOffStorage(); + dbgprintf(TEXT("IPersistStorage::HandsOffStorage -> %08X"), hr); + return hr; + } + + /* IPersistStreamInit */ + public: + virtual HRESULT STDMETHODCALLTYPE IPersistStreamInit::IsDirty(void) + { + IPersistStreamInit * pIPersistStreamInit = getIPersistStreamInit(); + dbgprintf(TEXT("IPersistStreamInit::IsDirty()")); + HRESULT hr = pIPersistStreamInit->IsDirty(); + dbgprintf(TEXT("IPersistStreamInit::IsDirty -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IPersistStreamInit::Load(LPSTREAM pStm) + { + IPersistStreamInit * pIPersistStreamInit = getIPersistStreamInit(); + dbgprintf(TEXT("IPersistStreamInit::Load(%p)"), pStm); + HRESULT hr = pIPersistStreamInit->Load(pStm); + dbgprintf(TEXT("IPersistStreamInit::Load -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IPersistStreamInit::Save(LPSTREAM pStm, BOOL fClearDirty) + { + IPersistStreamInit * pIPersistStreamInit = getIPersistStreamInit(); + dbgprintf(TEXT("IPersistStreamInit::Save(%p, %s)"), pStm, BooleanToString(fClearDirty)); + HRESULT hr = pIPersistStreamInit->Save(pStm, fClearDirty); + dbgprintf(TEXT("IPersistStreamInit::Save -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IPersistStreamInit::GetSizeMax(ULARGE_INTEGER * pCbSize) + { + IPersistStreamInit * pIPersistStreamInit = getIPersistStreamInit(); + dbgprintf(TEXT("IPersistStreamInit::GetSizeMax(%p)"), pCbSize); + HRESULT hr = pIPersistStreamInit->GetSizeMax(pCbSize); + dbgprintf(TEXT("IPersistStreamInit::GetSizeMax -> %08X, CbSize = %llu"), hr, pCbSize->QuadPart); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IPersistStreamInit::InitNew(void) + { + IPersistStreamInit * pIPersistStreamInit = getIPersistStreamInit(); + dbgprintf(TEXT("IPersistStreamInit::InitNew()")); + HRESULT hr = pIPersistStreamInit->InitNew(); + dbgprintf(TEXT("IPersistStreamInit::InitNew -> %08X"), hr); + return hr; + } + + /* IProvideClassInfo */ + public: + virtual HRESULT STDMETHODCALLTYPE GetClassInfo(ITypeInfo ** ppTI) + { + IProvideClassInfo * pIProvideClassInfo = getIProvideClassInfo(); + dbgprintf(TEXT("IProvideClassInfo::GetClassInfo(%p)"), ppTI); + HRESULT hr = pIProvideClassInfo->GetClassInfo(ppTI); + dbgprintf(TEXT("IProvideClassInfo::GetClassInfo -> %08X, pTI = %p"), hr, *ppTI); + return hr; + } + + /* IProvideClassInfo2 */ + public: + virtual HRESULT STDMETHODCALLTYPE IProvideClassInfo2::GetGUID(DWORD dwGuidKind, GUID * pGUID) + { + IProvideClassInfo2 * pIProvideClassInfo2 = getIProvideClassInfo2(); + dbgprintf(TEXT("IProvideClassInfo2::GetGUID(%lu, %p)"), dwGuidKind, pGUID); + HRESULT hr = pIProvideClassInfo2->GetGUID(dwGuidKind, pGUID); + dbgprintf(TEXT("IProvideClassInfo2::GetGUID -> %08X, GUID = %ls"), hr, UUIDToString(*pGUID).c_str()); + return hr; + } + + /* IQuickActivate */ + public: + virtual HRESULT STDMETHODCALLTYPE IQuickActivate::QuickActivate(QACONTAINER * pQaContainer, QACONTROL * pQaControl) // TODO + { + IQuickActivate * pIQuickActivate = getIQuickActivate(); + + std::basic_stringstream o1; + + o1 << "{ "; + o1 << "pClientSite = " << (void *)pQaContainer->pClientSite << ", "; + o1 << "pAdviseSink = " << (void *)pQaContainer->pAdviseSink << ", "; + o1 << "pPropertyNotifySink = " << (void *)pQaContainer->pPropertyNotifySink << ", "; + o1 << "pUnkEventSink = " << (void *)pQaContainer->pUnkEventSink << ", "; + + o1 << std::hex; + o1 << "dwAmbientFlags = " << pQaContainer->dwAmbientFlags << ", "; + o1 << "colorFore = " << pQaContainer->colorFore << ", "; + o1 << "colorBack = " << pQaContainer->colorBack << ", "; + o1 << std::dec; + + o1 << "pFont = " << (void *)pQaContainer->pFont << ", "; + o1 << "pUndoMgr = " << (void *)pQaContainer->pUndoMgr << ", "; + + o1 << std::hex; + o1 << "dwAppearance = " << pQaContainer->dwAppearance << ", "; + o1 << "lcid = " << pQaContainer->lcid << ", "; + o1 << std::dec; + + o1 << "hpal = " << (void *)pQaContainer->hpal << ", "; + o1 << "pBindHost = " << (void *)pQaContainer->pBindHost << ", "; + o1 << "pOleControlSite = " << (void *)pQaContainer->pOleControlSite << ", "; + o1 << "pServiceProvider = " << (void *)pQaContainer->pServiceProvider << ", "; + o1 << "}"; + + dbgprintf(TEXT("IQuickActivate::QuickActivate(%s, %p)"), o1.str().c_str(), pQaControl); + + HRESULT hr = pIQuickActivate->QuickActivate(pQaContainer, pQaControl); + + std::basic_stringstream o2; + + o2 << "{ "; + o2 << std::hex; + o2 << "dwMiscStatus = " << pQaControl->dwMiscStatus << ", "; + o2 << "dwViewStatus = " << pQaControl->dwViewStatus << ", "; + o2 << "dwEventCookie = " << pQaControl->dwEventCookie << ", "; + o2 << "dwPropNotifyCookie = " << pQaControl->dwPropNotifyCookie << ", "; + o2 << "dwPointerActivationPolicy = " << pQaControl->dwPointerActivationPolicy << ", "; + o2 << std::dec; + o2 << "}"; + + dbgprintf(TEXT("IQuickActivate::QuickActivate -> %08X, QaControl = %s"), hr, o2.str().c_str()); + + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IQuickActivate::SetContentExtent(LPSIZEL pSizel) + { + IQuickActivate * pIQuickActivate = getIQuickActivate(); + dbgprintf(TEXT("IQuickActivate::SetContentExtent(%s)"), SizeToString(*pSizel).c_str()); + HRESULT hr = pIQuickActivate->SetContentExtent(pSizel); + dbgprintf(TEXT("IQuickActivate::SetContentExtent -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IQuickActivate::GetContentExtent(LPSIZEL pSizel) + { + IQuickActivate * pIQuickActivate = getIQuickActivate(); + dbgprintf(TEXT("IQuickActivate::GetContentExtent(%p)"), pSizel); + HRESULT hr = pIQuickActivate->GetContentExtent(pSizel); + dbgprintf(TEXT("IQuickActivate::GetContentExtent -> %08X, Sizel = %s"), hr, SizeToString(*pSizel).c_str()); + return hr; + } + + /* ISpecifyPropertyPages */ + private: + std::basic_string CauuidToString(const CAUUID& cauuid) + { + std::basic_ostringstream o; + + o << "{"; + + for(ULONG i = 0; i < cauuid.cElems; ++ i) + { + if(i) + o << ", "; + else + o << " "; + + o << UUIDToString(cauuid.pElems[i]); + } + + o << " }"; + + return o.str(); + } + + public: + virtual HRESULT STDMETHODCALLTYPE ISpecifyPropertyPages::GetPages(CAUUID * pPages) + { + ISpecifyPropertyPages * pISpecifyPropertyPages = getISpecifyPropertyPages(); + dbgprintf(TEXT("ISpecifyPropertyPages::GetPages(%p)"), pPages); + HRESULT hr = pISpecifyPropertyPages->GetPages(pPages); + dbgprintf(TEXT("ISpecifyPropertyPages::GetPages -> %08X, Pages = %s"), hr, CauuidToString(*pPages).c_str()); + return hr; + } + + /* IViewObject */ + public: + virtual HRESULT STDMETHODCALLTYPE IViewObject::Draw(DWORD dwDrawAspect, LONG lindex, void * pvAspect, DVTARGETDEVICE * ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL (STDMETHODCALLTYPE * pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue) + { + IViewObject * pIViewObject = getIViewObject(); + dbgprintf(TEXT("IViewObject::Draw(%s, %ld, %p, %s, %p, %p, %s, %s, %p, %p)"), AspectToString(dwDrawAspect), lindex, pvAspect, TargetDeviceToString(*ptd).c_str(), hdcTargetDev, hdcDraw, RectToString(*lprcBounds).c_str(), RectToString(*lprcWBounds).c_str(), pfnContinue, dwContinue); + HRESULT hr = pIViewObject->Draw(dwDrawAspect, lindex, pvAspect, ptd, hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue, dwContinue); + dbgprintf(TEXT("IViewObject::Draw -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IViewObject::GetColorSet(DWORD dwDrawAspect, LONG lindex, void * pvAspect, DVTARGETDEVICE * ptd, HDC hicTargetDev, LOGPALETTE ** ppColorSet) + { + IViewObject * pIViewObject = getIViewObject(); + dbgprintf(TEXT("IViewObject::GetColorSet(%s, %ld, %p, %s, %p, %p)"), AspectToString(dwDrawAspect), lindex, pvAspect, TargetDeviceToString(*ptd).c_str(), hicTargetDev, ppColorSet); + HRESULT hr = pIViewObject->GetColorSet(dwDrawAspect, lindex, pvAspect, ptd, hicTargetDev, ppColorSet); + dbgprintf(TEXT("IViewObject::GetColorSet -> %08X, pColorSet = %p"), hr, *ppColorSet); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IViewObject::Freeze(DWORD dwDrawAspect, LONG lindex, void * pvAspect, DWORD * pdwFreeze) + { + IViewObject * pIViewObject = getIViewObject(); + dbgprintf(TEXT("IViewObject::Freeze(%s, %ld, %p, %p)"), AspectToString(dwDrawAspect), lindex, pvAspect, pdwFreeze); + HRESULT hr = pIViewObject->Freeze(dwDrawAspect, lindex, pvAspect, pdwFreeze); + dbgprintf(TEXT("IViewObject::Freeze -> %08X, dwFreeze = %08X"), hr, *pdwFreeze); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IViewObject::Unfreeze(DWORD dwFreeze) + { + IViewObject * pIViewObject = getIViewObject(); + dbgprintf(TEXT("IViewObject::Unfreeze(%08X)"), dwFreeze); + HRESULT hr = pIViewObject->Unfreeze(dwFreeze); + dbgprintf(TEXT("IViewObject::Unfreeze -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IViewObject::SetAdvise(DWORD aspects, DWORD advf, IAdviseSink * pAdvSink) + { + IViewObject * pIViewObject = getIViewObject(); + dbgprintf(TEXT("IViewObject::SetAdvise(%s, %08X, %p)"), AspectToString(aspects), advf, pAdvSink); + HRESULT hr = pIViewObject->SetAdvise(aspects, advf, pAdvSink); + dbgprintf(TEXT("IViewObject::SetAdvise -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IViewObject::GetAdvise(DWORD * pAspects, DWORD * pAdvf, IAdviseSink ** ppAdvSink) + { + IViewObject * pIViewObject = getIViewObject(); + dbgprintf(TEXT("IViewObject::GetAdvise(%p, %p, %p)"), pAspects, pAdvf, ppAdvSink); + HRESULT hr = pIViewObject->GetAdvise(pAspects, pAdvf, ppAdvSink); + dbgprintf(TEXT("IViewObject::GetAdvise -> %08X, aspects = %s, advf = %08X, pAdvSink %p"), hr, AspectToString(*pAspects), *pAdvf, *ppAdvSink); + return hr; + } + + /* IViewObject2 */ + public: + virtual HRESULT STDMETHODCALLTYPE IViewObject2::GetExtent(DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE * ptd, LPSIZEL lpsizel) + { + IViewObject2 * pIViewObject2 = getIViewObject2(); + dbgprintf(TEXT("IViewObject2::GetExtent(%s, %ld, %s, %p)"), AspectToString(dwDrawAspect), lindex, TargetDeviceToString(*ptd).c_str(), lpsizel); + HRESULT hr = pIViewObject2->GetExtent(dwDrawAspect, lindex, ptd, lpsizel); + dbgprintf(TEXT("IViewObject2::GetExtent -> %08X, sizel = %s"), hr, SizeToString(*lpsizel).c_str()); + return hr; + } + + /* IMsTscAx */ + public: + virtual HRESULT __stdcall put_Server(BSTR pServer) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_Server(%ls)"), pServer); + HRESULT hr = pIMsTscAx->put_Server(pServer); + dbgprintf(TEXT("IMsTscAx::put_Server -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_Server(BSTR * pServer) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_Server()"), pServer); + HRESULT hr = pIMsTscAx->get_Server(pServer); + dbgprintf(TEXT("IMsTscAx::get_Server -> %08X, server = %ls"), hr, *pServer); + return hr; + } + + virtual HRESULT __stdcall put_Domain(BSTR pDomain) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_Domain(%ls)"), pDomain); + HRESULT hr = pIMsTscAx->put_Domain(pDomain); + dbgprintf(TEXT("IMsTscAx::put_Domain -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_Domain(BSTR * pDomain) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_Domain(%p)"), pDomain); + HRESULT hr = pIMsTscAx->get_Domain(pDomain); + dbgprintf(TEXT("IMsTscAx::get_Domain -> %08X, Domain = %ls"), hr, *pDomain); + return hr; + } + + virtual HRESULT __stdcall put_UserName(BSTR pUserName) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_UserName(%ls)"), pUserName); + HRESULT hr = pIMsTscAx->put_UserName(pUserName); + dbgprintf(TEXT("IMsTscAx::put_UserName -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_UserName(BSTR * pUserName) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_UserName(%p)"), pUserName); + HRESULT hr = pIMsTscAx->get_UserName(pUserName); + dbgprintf(TEXT("IMsTscAx::get_UserName -> %08X, UserName = %ls"), hr, *pUserName); + return hr; + } + + virtual HRESULT __stdcall put_DisconnectedText(BSTR pDisconnectedText) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_DisconnectedText(%ls)"), pDisconnectedText); + HRESULT hr = pIMsTscAx->put_DisconnectedText(pDisconnectedText); + dbgprintf(TEXT("IMsTscAx::put_DisconnectedText -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_DisconnectedText(BSTR * pDisconnectedText) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_DisconnectedText(%p)"), pDisconnectedText); + HRESULT hr = pIMsTscAx->get_DisconnectedText(pDisconnectedText); + dbgprintf(TEXT("IMsTscAx::get_DisconnectedText -> %08X, DisconnectedText = %ls"), hr, *pDisconnectedText); + return hr; + } + + virtual HRESULT __stdcall put_ConnectingText(BSTR pConnectingText) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_ConnectingText(%ls)"), pConnectingText); + HRESULT hr = pIMsTscAx->put_ConnectingText(pConnectingText); + dbgprintf(TEXT("IMsTscAx::put_ConnectingText -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_ConnectingText(BSTR * pConnectingText) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_ConnectingText(%p)"), pConnectingText); + HRESULT hr = pIMsTscAx->get_ConnectingText(pConnectingText); + dbgprintf(TEXT("IMsTscAx::get_ConnectingText -> %08X, ConnectingText = %ls"), hr, *pConnectingText); + return hr; + } + + virtual HRESULT __stdcall get_Connected(short * pIsConnected) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_Connected(%p)"), pIsConnected); + HRESULT hr = pIMsTscAx->get_Connected(pIsConnected); + dbgprintf(TEXT("IMsTscAx::get_Connected -> %08X, IsConnected = %s"), hr, BooleanToString(*pIsConnected)); + return hr; + } + + virtual HRESULT __stdcall put_DesktopWidth(long pVal) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_DesktopWidth(%ld)"), pVal); + HRESULT hr = pIMsTscAx->put_DesktopWidth(pVal); + dbgprintf(TEXT("IMsTscAx::put_DesktopWidth -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_DesktopWidth(long * pVal) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_DesktopWidth(%p)"), pVal); + HRESULT hr = pIMsTscAx->get_DesktopWidth(pVal); + dbgprintf(TEXT("IMsTscAx::get_DesktopWidth -> %08X, Val = %lu"), hr, *pVal); + return hr; + } + + virtual HRESULT __stdcall put_DesktopHeight(long pVal) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_DesktopHeight(%ld)"), pVal); + HRESULT hr = pIMsTscAx->put_DesktopHeight(pVal); + dbgprintf(TEXT("IMsTscAx::put_DesktopHeight -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_DesktopHeight(long * pVal) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_DesktopHeight(%p)"), pVal); + HRESULT hr = pIMsTscAx->get_DesktopHeight(pVal); + dbgprintf(TEXT("IMsTscAx::get_DesktopHeight -> %08X, Val = %lu"), hr, *pVal); + return hr; + } + + virtual HRESULT __stdcall put_StartConnected(long pfStartConnected) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_StartConnected(%s)"), BooleanToString(pfStartConnected)); + HRESULT hr = pIMsTscAx->put_StartConnected(pfStartConnected); + dbgprintf(TEXT("IMsTscAx::put_StartConnected -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_StartConnected(long * pfStartConnected) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_StartConnected(%p)"), pfStartConnected); + HRESULT hr = pIMsTscAx->get_StartConnected(pfStartConnected); + dbgprintf(TEXT("IMsTscAx::get_StartConnected -> %08X, fStartConnected = %s"), hr, BooleanToString(*pfStartConnected)); + return hr; + } + + virtual HRESULT __stdcall get_HorizontalScrollBarVisible(long * pfHScrollVisible) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_HorizontalScrollBarVisible(%p)"), pfHScrollVisible); + HRESULT hr = pIMsTscAx->get_HorizontalScrollBarVisible(pfHScrollVisible); + dbgprintf(TEXT("IMsTscAx::get_HorizontalScrollBarVisible -> %08X, fHScrollVisible = %s"), hr, BooleanToString(*pfHScrollVisible)); + return hr; + } + + virtual HRESULT __stdcall get_VerticalScrollBarVisible(long * pfVScrollVisible) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_VerticalScrollBarVisible(%p)"), pfVScrollVisible); + HRESULT hr = pIMsTscAx->get_VerticalScrollBarVisible(pfVScrollVisible); + dbgprintf(TEXT("IMsTscAx::get_VerticalScrollBarVisible -> %08X, fVScrollVisible"), hr, *pfVScrollVisible); + return hr; + } + + virtual HRESULT __stdcall put_FullScreenTitle(BSTR _arg1) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_FullScreenTitle(%ls)"), _arg1); + HRESULT hr = pIMsTscAx->put_FullScreenTitle(_arg1); + dbgprintf(TEXT("IMsTscAx::put_FullScreenTitle -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_CipherStrength(long * pCipherStrength) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_CipherStrength(%p)"), pCipherStrength); + HRESULT hr = pIMsTscAx->get_CipherStrength(pCipherStrength); + dbgprintf(TEXT("IMsTscAx::get_CipherStrength -> %08X, CipherStrength = %ld"), hr, *pCipherStrength); + return hr; + } + + virtual HRESULT __stdcall get_Version(BSTR * pVersion) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_Version(%p)"), pVersion); + HRESULT hr = pIMsTscAx->get_Version(pVersion); + dbgprintf(TEXT("IMsTscAx::get_Version -> %08X, Version = %ls"), hr, *pVersion); + return hr; + } + + virtual HRESULT __stdcall get_SecuredSettingsEnabled(long * pSecuredSettingsEnabled) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_SecuredSettingsEnabled(%p)"), pSecuredSettingsEnabled); + HRESULT hr = pIMsTscAx->get_SecuredSettingsEnabled(pSecuredSettingsEnabled); + dbgprintf(TEXT("IMsTscAx::get_SecuredSettingsEnabled -> %08X, SecuredSettingsEnabled = %s"), hr, BooleanToString(*pSecuredSettingsEnabled)); + return hr; + } + + virtual HRESULT __stdcall get_SecuredSettings(IMsTscSecuredSettings ** ppSecuredSettings) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_SecuredSettings(%p)"), ppSecuredSettings); + HRESULT hr = pIMsTscAx->get_SecuredSettings(ppSecuredSettings); + dbgprintf(TEXT("IMsTscAx::get_SecuredSettings -> %08X, pSecuredSettings = %p"), hr, *ppSecuredSettings); + return hr; + } + + virtual HRESULT __stdcall get_AdvancedSettings(IMsTscAdvancedSettings ** ppAdvSettings) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_AdvancedSettings(%p)"), ppAdvSettings); + HRESULT hr = pIMsTscAx->get_AdvancedSettings(ppAdvSettings); + dbgprintf(TEXT("IMsTscAx::get_AdvancedSettings -> %08X, pAdvSettings = %p"), hr, *ppAdvSettings); + + if(SUCCEEDED(hr)) + *ppAdvSettings = new CAdvancedSettings(*ppAdvSettings); + + return hr; + } + + virtual HRESULT __stdcall get_Debugger(IMsTscDebug ** ppDebugger) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_Debugger(%p)"), ppDebugger); + HRESULT hr = pIMsTscAx->get_Debugger(ppDebugger); + dbgprintf(TEXT("IMsTscAx::get_Debugger -> %08X, pDebugger = %p"), hr, *ppDebugger); + return hr; + } + + virtual HRESULT __stdcall Connect() + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::Connect()")); + HRESULT hr = pIMsTscAx->Connect(); + dbgprintf(TEXT("IMsTscAx::Connect -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall Disconnect() + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::Disconnect()")); + HRESULT hr = pIMsTscAx->Disconnect(); + dbgprintf(TEXT("IMsTscAx::Disconnect -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall CreateVirtualChannels(BSTR newVal) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::CreateVirtualChannels(%ls)"), newVal); + HRESULT hr = pIMsTscAx->CreateVirtualChannels(newVal); + dbgprintf(TEXT("IMsTscAx::CreateVirtualChannels -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall SendOnVirtualChannel(BSTR chanName, BSTR ChanData) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::SendOnVirtualChannel(%ls, %p)"), chanName, ChanData); + HRESULT hr = pIMsTscAx->SendOnVirtualChannel(chanName, ChanData); + dbgprintf(TEXT("IMsTscAx::SendOnVirtualChannel -> %08X"), hr); + return hr; + } + + /* IMsRdpClient */ + public: + virtual HRESULT __stdcall put_ColorDepth(long pcolorDepth) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::put_ColorDepth(%ld)"), pcolorDepth); + HRESULT hr = pIMsRdpClient->put_ColorDepth(pcolorDepth); + dbgprintf(TEXT("IMsRdpClient::put_ColorDepth -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_ColorDepth(long * pcolorDepth) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::get_ColorDepth(%p)"), pcolorDepth); + HRESULT hr = pIMsRdpClient->get_ColorDepth(pcolorDepth); + dbgprintf(TEXT("IMsRdpClient::get_ColorDepth -> %08X, colorDepth = %ld"), hr, *pcolorDepth); + return hr; + } + + virtual HRESULT __stdcall get_AdvancedSettings2(IMsRdpClientAdvancedSettings ** ppAdvSettings) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::get_AdvancedSettings2(%p)"), ppAdvSettings); + HRESULT hr = pIMsRdpClient->get_AdvancedSettings2(ppAdvSettings); + dbgprintf(TEXT("IMsRdpClient::get_AdvancedSettings2 -> %08X, pAdvSettings = %p"), hr, *ppAdvSettings); + + if(SUCCEEDED(hr)) + *ppAdvSettings = new CAdvancedSettings(*ppAdvSettings); + + return hr; + } + + virtual HRESULT __stdcall get_SecuredSettings2(IMsRdpClientSecuredSettings ** ppSecuredSettings) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::get_SecuredSettings2(%p)"), ppSecuredSettings); + HRESULT hr = pIMsRdpClient->get_SecuredSettings2(ppSecuredSettings); + dbgprintf(TEXT("IMsRdpClient::get_SecuredSettings2 -> %08X, pSecuredSettings = %p"), hr, *ppSecuredSettings); + return hr; + } + + virtual HRESULT __stdcall get_ExtendedDisconnectReason(ExtendedDisconnectReasonCode * pExtendedDisconnectReason) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::get_ExtendedDisconnectReason(%p)"), pExtendedDisconnectReason); + HRESULT hr = pIMsRdpClient->get_ExtendedDisconnectReason(pExtendedDisconnectReason); + dbgprintf(TEXT("IMsRdpClient::get_ExtendedDisconnectReason -> %08X, ExtendedDisconnectReason = %u"), hr, *pExtendedDisconnectReason); + return hr; + } + + virtual HRESULT __stdcall put_FullScreen(VARIANT_BOOL pfFullScreen) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::put_FullScreen(%s)"), BooleanToString(pfFullScreen)); + HRESULT hr = pIMsRdpClient->put_FullScreen(pfFullScreen); + dbgprintf(TEXT("IMsRdpClient::put_FullScreen -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_FullScreen(VARIANT_BOOL * pfFullScreen) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::get_FullScreen(%p)"), pfFullScreen); + HRESULT hr = pIMsRdpClient->get_FullScreen(pfFullScreen); + dbgprintf(TEXT("IMsRdpClient::get_FullScreen -> %08X, pfFullScreen = %s"), hr, BooleanToString(*pfFullScreen)); + return hr; + } + + virtual HRESULT __stdcall SetVirtualChannelOptions(BSTR chanName, long chanOptions) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::SetVirtualChannelOptions(%ls, %08X)"), chanName, chanOptions); + HRESULT hr = pIMsRdpClient->SetVirtualChannelOptions(chanName, chanOptions); + dbgprintf(TEXT("IMsRdpClient::SetVirtualChannelOptions -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall GetVirtualChannelOptions(BSTR chanName, long * pChanOptions) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::GetVirtualChannelOptions(%ls, %p)"), chanName, pChanOptions); + HRESULT hr = pIMsRdpClient->GetVirtualChannelOptions(chanName, pChanOptions); + dbgprintf(TEXT("IMsRdpClient::GetVirtualChannelOptions -> %08X, ChanOptions = %08X"), hr, *pChanOptions); + return hr; + } + + virtual HRESULT __stdcall RequestClose(ControlCloseStatus * pCloseStatus) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::RequestClose(%p)"), pCloseStatus); + HRESULT hr = pIMsRdpClient->RequestClose(pCloseStatus); + dbgprintf(TEXT("IMsRdpClient::RequestClose -> %08X, CloseStatus = %ld"), hr, *pCloseStatus); + return hr; + } + + /* IMsRdpClient2 */ + public: + virtual HRESULT __stdcall get_AdvancedSettings3(IMsRdpClientAdvancedSettings2 ** ppAdvSettings) + { + IMsRdpClient2 * pIMsRdpClient2 = getIMsRdpClient2(); + dbgprintf(TEXT("IMsRdpClient2::get_AdvancedSettings3(%p)"), ppAdvSettings); + HRESULT hr = pIMsRdpClient2->get_AdvancedSettings3(ppAdvSettings); + dbgprintf(TEXT("IMsRdpClient2::get_AdvancedSettings3 -> %08X, pAdvSettings = %p"), hr, *ppAdvSettings); + + if(SUCCEEDED(hr)) + *ppAdvSettings = new CAdvancedSettings(*ppAdvSettings); + + return hr; + } + + virtual HRESULT __stdcall put_ConnectedStatusText(BSTR pConnectedStatusText) + { + IMsRdpClient2 * pIMsRdpClient2 = getIMsRdpClient2(); + dbgprintf(TEXT("IMsRdpClient2::put_ConnectedStatusText(%ls)"), pConnectedStatusText); + HRESULT hr = pIMsRdpClient2->put_ConnectedStatusText(pConnectedStatusText); + dbgprintf(TEXT("IMsRdpClient2::put_ConnectedStatusText -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_ConnectedStatusText(BSTR * pConnectedStatusText) + { + IMsRdpClient2 * pIMsRdpClient2 = getIMsRdpClient2(); + dbgprintf(TEXT("IMsRdpClient2::get_ConnectedStatusText(%p)"), pConnectedStatusText); + HRESULT hr = pIMsRdpClient2->get_ConnectedStatusText(pConnectedStatusText); + dbgprintf(TEXT("IMsRdpClient2::get_ConnectedStatusText -> %08X, ConnectedStatusText = %ls"), hr, *pConnectedStatusText); + return hr; + } + + /* IMsRdpClient3 */ + public: + virtual HRESULT __stdcall get_AdvancedSettings4(IMsRdpClientAdvancedSettings3 ** ppAdvSettings) + { + IMsRdpClient3 * pIMsRdpClient3 = getIMsRdpClient3(); + dbgprintf(TEXT("IMsRdpClient3::get_AdvancedSettings4(%p)"), ppAdvSettings); + HRESULT hr = pIMsRdpClient3->get_AdvancedSettings4(ppAdvSettings); + dbgprintf(TEXT("IMsRdpClient3::get_AdvancedSettings4 -> %08X, pAdvSettings = %p"), hr, *ppAdvSettings); + + if(SUCCEEDED(hr)) + *ppAdvSettings = new CAdvancedSettings(*ppAdvSettings); + + return hr; + } + + /* IMsRdpClient4 */ + public: + virtual HRESULT __stdcall get_AdvancedSettings5(IMsRdpClientAdvancedSettings4 ** ppAdvSettings5) + { + IMsRdpClient4 * pIMsRdpClient4 = getIMsRdpClient4(); + dbgprintf(TEXT("IMsRdpClient4::get_AdvancedSettings5(%p)"), ppAdvSettings5); + HRESULT hr = pIMsRdpClient4->get_AdvancedSettings5(ppAdvSettings5); + dbgprintf(TEXT("IMsRdpClient4::get_AdvancedSettings5 -> %08X, pAdvSettings5 = %p"), hr, *ppAdvSettings5); + + if(SUCCEEDED(hr)) + *ppAdvSettings5 = new CAdvancedSettings(*ppAdvSettings5); + + return hr; + } + + /* IMsTscNonScriptable */ + public: + virtual HRESULT __stdcall put_ClearTextPassword(BSTR _arg1) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::put_ClearTextPassword(%ls)"), _arg1); + HRESULT hr = pIMsTscNonScriptable->put_ClearTextPassword(_arg1); + dbgprintf(TEXT("IMsTscNonScriptable::put_ClearTextPassword -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall put_PortablePassword(BSTR pPortablePass) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::put_PortablePassword(%ls)"), pPortablePass); + HRESULT hr = pIMsTscNonScriptable->put_PortablePassword(pPortablePass); + dbgprintf(TEXT("IMsTscNonScriptable::put_PortablePassword -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_PortablePassword(BSTR * pPortablePass) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::get_PortablePassword(%p)"), pPortablePass); + HRESULT hr = pIMsTscNonScriptable->get_PortablePassword(pPortablePass); + dbgprintf(TEXT("IMsTscNonScriptable::get_PortablePassword -> %08X, PortablePass = %ls"), hr, *pPortablePass); + return hr; + } + + virtual HRESULT __stdcall put_PortableSalt(BSTR pPortableSalt) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::put_PortableSalt(%ls)"), pPortableSalt); + HRESULT hr = pIMsTscNonScriptable->put_PortableSalt(pPortableSalt); + dbgprintf(TEXT("IMsTscNonScriptable::put_PortableSalt -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_PortableSalt(BSTR * pPortableSalt) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::get_PortableSalt()"), pPortableSalt); + HRESULT hr = pIMsTscNonScriptable->get_PortableSalt(pPortableSalt); + dbgprintf(TEXT("IMsTscNonScriptable::get_PortableSalt -> %08X, PortableSalt = %ls"), hr, *pPortableSalt); + return hr; + } + + virtual HRESULT __stdcall put_BinaryPassword(BSTR pBinaryPassword) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::put_BinaryPassword(%p)"), pBinaryPassword); + HRESULT hr = pIMsTscNonScriptable->put_BinaryPassword(pBinaryPassword); + dbgprintf(TEXT("IMsTscNonScriptable::put_BinaryPassword -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_BinaryPassword(BSTR * pBinaryPassword) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::get_BinaryPassword()"), pBinaryPassword); + HRESULT hr = pIMsTscNonScriptable->get_BinaryPassword(pBinaryPassword); + dbgprintf(TEXT("IMsTscNonScriptable::get_BinaryPassword -> %08X, BinaryPassword = %ls"), hr, *pBinaryPassword); + return hr; + } + + virtual HRESULT __stdcall put_BinarySalt(BSTR pSalt) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::put_BinarySalt(%p)"), pSalt); + HRESULT hr = pIMsTscNonScriptable->put_BinarySalt(pSalt); + dbgprintf(TEXT("IMsTscNonScriptable::put_BinarySalt -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_BinarySalt(BSTR * pSalt) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::get_BinarySalt()"), pSalt); + HRESULT hr = pIMsTscNonScriptable->get_BinarySalt(pSalt); + dbgprintf(TEXT("IMsTscNonScriptable::get_BinarySalt -> %08X, pSalt = %ls"), hr, *pSalt); + return hr; + } + + virtual HRESULT __stdcall ResetPassword() + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::ResetPassword()")); + HRESULT hr = pIMsTscNonScriptable->ResetPassword(); + dbgprintf(TEXT("IMsTscNonScriptable::ResetPassword -> %08X"), hr); + return hr; + } + + + /* IMsRdpClientNonScriptable */ + public: + virtual HRESULT __stdcall IMsRdpClientNonScriptable::NotifyRedirectDeviceChange(UINT_PTR wParam, LONG_PTR lParam) + { + IMsRdpClientNonScriptable * pIMsRdpClientNonScriptable = getIMsRdpClientNonScriptable(); + dbgprintf(TEXT("IMsRdpClientNonScriptable::NotifyRedirectDeviceChange(%p, %p)"), wParam, lParam); + HRESULT hr = pIMsRdpClientNonScriptable->NotifyRedirectDeviceChange(wParam, lParam); + dbgprintf(TEXT("IMsRdpClientNonScriptable::NotifyRedirectDeviceChange -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall IMsRdpClientNonScriptable::SendKeys(long numKeys, VARIANT_BOOL * pbArrayKeyUp, long * plKeyData) // TBD + { + IMsRdpClientNonScriptable * pIMsRdpClientNonScriptable = getIMsRdpClientNonScriptable(); + dbgprintf(TEXT("IMsRdpClientNonScriptable::SendKeys(%ld, %p, %p)"), numKeys, pbArrayKeyUp, plKeyData); + HRESULT hr = pIMsRdpClientNonScriptable->SendKeys(numKeys, pbArrayKeyUp, plKeyData); + dbgprintf(TEXT("IMsRdpClientNonScriptable::SendKeys -> %08X"), hr); + return hr; + } + + /* IMsRdpClientNonScriptable2 */ + public: + virtual HRESULT __stdcall IMsRdpClientNonScriptable2::put_UIParentWindowHandle(wireHWND phwndUIParentWindowHandle) + { + IMsRdpClientNonScriptable2 * pIMsRdpClientNonScriptable2 = getIMsRdpClientNonScriptable2(); + dbgprintf(TEXT("IMsRdpClientNonScriptable2::put_UIParentWindowHandle(%p)"), phwndUIParentWindowHandle); + HRESULT hr = pIMsRdpClientNonScriptable2->put_UIParentWindowHandle(phwndUIParentWindowHandle); + dbgprintf(TEXT("IMsRdpClientNonScriptable2::put_UIParentWindowHandle -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall IMsRdpClientNonScriptable2::get_UIParentWindowHandle(wireHWND * phwndUIParentWindowHandle) + { + IMsRdpClientNonScriptable2 * pIMsRdpClientNonScriptable2 = getIMsRdpClientNonScriptable2(); + dbgprintf(TEXT("IMsRdpClientNonScriptable2::get_UIParentWindowHandle(%p)"), phwndUIParentWindowHandle); + HRESULT hr = pIMsRdpClientNonScriptable2->get_UIParentWindowHandle(phwndUIParentWindowHandle); + dbgprintf(TEXT("IMsRdpClientNonScriptable2::get_UIParentWindowHandle -> %08X, hwndUIParentWindowHandle = %p"), hr, *phwndUIParentWindowHandle); + return hr; + } + + /* + { + * p = m_; + dbgprintf(TEXT("::()"), ); + HRESULT hr = p->(); + dbgprintf(TEXT(":: -> %08X, "), hr, ); + return hr; + } + */ + }; + + class ClassFactory: public IClassFactory2 + { + private: + LONG m_refCount; + IUnknown * m_IUnknown; + IClassFactory * m_IClassFactory; + IClassFactory2 * m_IClassFactory2; + + IClassFactory * getIClassFactory() + { + if(m_IClassFactory) + return m_IClassFactory; + + if(m_IClassFactory2) + m_IClassFactory = m_IClassFactory2; + + if(m_IClassFactory) + { + m_IClassFactory->AddRef(); + return m_IClassFactory; + } + + m_IUnknown->QueryInterface(&m_IClassFactory); + return m_IClassFactory; + } + + IClassFactory2 * getIClassFactory2() + { + if(m_IClassFactory2) + return m_IClassFactory2; + + m_IUnknown->QueryInterface(&m_IClassFactory2); + return m_IClassFactory2; + } + + public: + ClassFactory(IUnknown * pUnknwn): + m_refCount(1), + m_IUnknown(pUnknwn), + m_IClassFactory(NULL), + m_IClassFactory2(NULL) + { + m_IUnknown->AddRef(); + } + + ~ClassFactory() + { + if(m_IUnknown) + m_IUnknown->Release(); + + if(m_IClassFactory) + m_IClassFactory->Release(); + + if(m_IClassFactory2) + m_IClassFactory2->Release(); + } + + /* IUnknown */ + public: + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + HRESULT hr; + IUnknown * pvObject = NULL; + + dbgprintf(TEXT("IUnknown::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject); + +#define QIBEGIN() \ + if(riid == IID_IUnknown) \ + { \ + hr = S_OK; \ + pvObject = (IUnknown *)(this); \ + } + +#define QI(I) \ + else if(riid == IID_ ## I) \ + { \ + if(m_ ## I) \ + { \ + m_ ## I->AddRef(); \ + hr = S_OK; \ + } \ + else \ + { \ + hr = m_IUnknown->QueryInterface(&m_ ## I); \ + } \ + \ + if(SUCCEEDED(hr)) \ + pvObject = static_cast(this); \ + } + +#define QIEND() \ + else \ + { \ + hr = E_NOINTERFACE; \ + pvObject = NULL; \ + } + + QIBEGIN() + QI(IClassFactory) + QI(IClassFactory2) + QIEND() + +#undef QIBEGIN +#undef QIEND +#undef QI + + if(SUCCEEDED(hr)) + { + assert(pvObject); + pvObject->AddRef(); + } + else + { + assert(pvObject == NULL); + } + + *ppvObject = pvObject; + + dbgprintf(TEXT("IUnknown::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject); + return hr; + } + + virtual ULONG STDMETHODCALLTYPE AddRef(void) + { + return InterlockedIncrement(&m_refCount); + } + + virtual ULONG STDMETHODCALLTYPE Release(void) + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + /* IClassFactory */ + public: + virtual HRESULT STDMETHODCALLTYPE CreateInstance(IUnknown * pUnkOuter, REFIID riid, void ** ppvObject) + { + IClassFactory * pIClassFactory = getIClassFactory(); + dbgprintf(TEXT("IClassFactory::CreateInstance(%p, %ls, %p)"), pUnkOuter, UUIDToString(riid).c_str(), ppvObject); + HRESULT hr = pIClassFactory->CreateInstance(NULL, riid, ppvObject); + dbgprintf(TEXT("IClassFactory::CreateInstance -> %08X, pvObject = %p"), hr, *ppvObject); + return CoClass::CreateInstance((IUnknown *)*ppvObject, pUnkOuter, riid, ppvObject); + } + + virtual HRESULT STDMETHODCALLTYPE LockServer(BOOL fLock) + { + IClassFactory * pIClassFactory = getIClassFactory(); + dbgprintf(TEXT("IClassFactory::LockServer(%s)"), BooleanToString(fLock)); + HRESULT hr = pIClassFactory->LockServer(fLock); + dbgprintf(TEXT("IClassFactory::LockServer -> %08X"), hr); + return hr; + } + + /* IClassFactory2 */ + public: + virtual HRESULT STDMETHODCALLTYPE GetLicInfo(LICINFO * pLicInfo) + { + IClassFactory2 * pIClassFactory2 = getIClassFactory2(); + dbgprintf(TEXT("IClassFactory2::GetLicInfo(%p)"), pLicInfo); + HRESULT hr = pIClassFactory2->GetLicInfo(pLicInfo); + dbgprintf(TEXT("IClassFactory2::GetLicInfo -> %08X, LicInfo = %p"), hr, pLicInfo); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE RequestLicKey(DWORD dwReserved, BSTR * pBstrKey) + { + IClassFactory2 * pIClassFactory2 = getIClassFactory2(); + dbgprintf(TEXT("IClassFactory2::RequestLicKey(%lu, %p)"), dwReserved, pBstrKey); + HRESULT hr = pIClassFactory2->RequestLicKey(dwReserved, pBstrKey); + dbgprintf(TEXT("IClassFactory2::RequestLicKey -> %08X, bstrKey = %ls"), hr, *pBstrKey); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE CreateInstanceLic(IUnknown * pUnkOuter, IUnknown * pUnkReserved, REFIID riid, BSTR bstrKey, PVOID * ppvObj) + { + IClassFactory2 * pIClassFactory2 = getIClassFactory2(); + dbgprintf(TEXT("IClassFactory2::CreateInstanceLic(%p, %p, %ls, %ls, %p)"), pUnkOuter, pUnkReserved, UUIDToString(riid).c_str(), bstrKey, ppvObj); + HRESULT hr = pIClassFactory2->CreateInstanceLic(NULL, pUnkReserved, riid, bstrKey, ppvObj); + dbgprintf(TEXT("IClassFactory2::CreateInstanceLic -> %08X, pvObj = %p"), hr, *ppvObj); + return CoClass::CreateInstance((IUnknown *)*ppvObj, pUnkOuter, riid, ppvObj); + } + }; + + STDAPI DllGetClassObject(IN REFCLSID rclsid, IN REFIID riid, OUT LPVOID * ppv) + { + init(); + + dbgprintf(TEXT("DllGetClassObject(%ls, %ls, %p)"), UUIDToString(rclsid).c_str(), UUIDToString(riid).c_str(), ppv); + HRESULT hr = pfnDllGetClassObject(rclsid, IID_IUnknown, ppv); + dbgprintf(TEXT("DllGetClassObject -> %08X, pv = %p"), hr, *ppv); + + IUnknown * pv = NULL; + + if(SUCCEEDED(hr)) + { + IUnknown * punk = (IUnknown *)*ppv; + + if(rclsid == CLSID_MsTscAx || rclsid == CLSID_MsRdpClient || rclsid == CLSID_MsRdpClient2 || rclsid == CLSID_MsRdpClient3 || rclsid == CLSID_MsRdpClient4) + pv = new ClassFactory(punk); + else + hr = CLASS_E_CLASSNOTAVAILABLE; + + punk->Release(); + } + + if(pv) + { + hr = pv->QueryInterface(riid, ppv); + + if(FAILED(hr)) + pv->Release(); + } + + return hr; + } + + STDAPI DllCanUnloadNow(void) + { + init(); + + dbgprintf(TEXT("DllCanUnloadNow()")); + HRESULT hr = pfnDllCanUnloadNow(); + dbgprintf(TEXT("DllCanUnloadNow -> %08X"), hr); + + return hr; + } + + STDAPI_(ULONG) DllGetTscCtlVer(void) + { + init(); + + dbgprintf(TEXT("DllGetTscCtlVer()")); + ULONG ul = pfnDllGetTscCtlVer(); + dbgprintf(TEXT("DllGetTscCtlVer-> %08X"), ul); + + return ul; + } +} + +// EOF diff --git a/rosapps/applications/net/tsclient/porting-tools/mstscax/mstscax.def b/rosapps/applications/net/tsclient/porting-tools/mstscax/mstscax.def new file mode 100644 index 00000000000..5da85892a99 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/mstscax/mstscax.def @@ -0,0 +1,14 @@ +LIBRARY mstscax.dll + +EXPORTS + ; OLE inproc server + DllGetClassObject PRIVATE + DllCanUnloadNow PRIVATE + + ; OLE self-registration + ; TODO + + ; Private APIs + DllGetTscCtlVer + +; EOF diff --git a/rosapps/applications/net/tsclient/porting-tools/mstscax/mstscax.sln b/rosapps/applications/net/tsclient/porting-tools/mstscax/mstscax.sln new file mode 100644 index 00000000000..2abaf3db1b1 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/mstscax/mstscax.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual C++ Express 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mstscax", "mstscax.vcproj", "{933B2293-F12F-4B01-98B4-BF635B8B4F36}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {933B2293-F12F-4B01-98B4-BF635B8B4F36}.Debug|Win32.ActiveCfg = Debug|Win32 + {933B2293-F12F-4B01-98B4-BF635B8B4F36}.Debug|Win32.Build.0 = Debug|Win32 + {933B2293-F12F-4B01-98B4-BF635B8B4F36}.Release|Win32.ActiveCfg = Release|Win32 + {933B2293-F12F-4B01-98B4-BF635B8B4F36}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/rosapps/applications/net/tsclient/porting-tools/mstscax/mstscax.vcproj b/rosapps/applications/net/tsclient/porting-tools/mstscax/mstscax.vcproj new file mode 100644 index 00000000000..7e3def8edf7 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/mstscax/mstscax.vcproj @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rosapps/applications/net/tsclient/porting-tools/mstscax/stdafx.cpp b/rosapps/applications/net/tsclient/porting-tools/mstscax/stdafx.cpp new file mode 100644 index 00000000000..fd4f341c7b2 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/mstscax/stdafx.cpp @@ -0,0 +1 @@ +#include "stdafx.h" diff --git a/rosapps/applications/net/tsclient/porting-tools/mstscax/stdafx.h b/rosapps/applications/net/tsclient/porting-tools/mstscax/stdafx.h new file mode 100644 index 00000000000..9c317402891 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/mstscax/stdafx.h @@ -0,0 +1,33 @@ +#pragma once + +#include +#include +#include + +#include +#include +#include +#include + +#define WIN32_LEAN_AND_MEAN +#define STRICT +#define NOMINMAX + +#include +#include +#include + +#include + +#include + +#import "./rdesktop-core-tester.tlb" \ + exclude("LONG_PTR", "UINT_PTR", "wireHWND", "_RemotableHandle", "__MIDL_IWinTypes_0009") \ + named_guids \ + no_implementation \ + no_smart_pointers \ + raw_dispinterfaces \ + raw_interfaces_only \ + raw_native_types + +// EOF diff --git a/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/activex.cpp b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/activex.cpp new file mode 100644 index 00000000000..80a03b6a379 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/activex.cpp @@ -0,0 +1,6095 @@ +#include "stdafx.h" + +namespace MSTSCLib +{ +#include "mstsclib_h.h" +}; + +namespace MSTSCLib_Redist +{ +// extremely ew, but actually the cleanest way to import the alternate UUIDs +#include "mstsclib_redist_i.c" +}; + +#include "rdesktop/rdesktop.h" +#include "rdesktop/proto.h" + +namespace +{ +#ifdef _MSC_VER +extern "C" char __ImageBase; +#endif + +HMODULE GetCurrentModule() +{ + return reinterpret_cast(&__ImageBase); +} + +} + +namespace +{ + +LONG g_moduleRefCount = 0; + +void lockServer() +{ + InterlockedIncrement(&g_moduleRefCount); +} + +void unlockServer() +{ + InterlockedDecrement(&g_moduleRefCount); +} + +bool canUnloadServer() +{ + return g_moduleRefCount == 0; +} + +} + +namespace +{ + +void FreeLpsz(LPSTR lpsz) +{ + if(lpsz) + delete[] lpsz; +} + +LPSTR AllocLpsz(const CHAR * lpsz, size_t cb) +{ + LPSTR lpszNew = new CHAR[cb + 1]; + + if(lpszNew == NULL) + return NULL; + + CopyMemory(lpszNew, lpsz, cb); + lpszNew[cb] = 0; + + return lpszNew; +} + +LPSTR AllocLpsz(const WCHAR * lpwsz, int cchIn) +{ + int cch = WideCharToMultiByte(CP_ACP, 0, lpwsz, cchIn, NULL, 0, NULL, NULL); + + if(cch <= 0) + return NULL; + + LPSTR lpsz = new CHAR[cch]; + + if(lpsz == NULL) + return NULL; + + cch = WideCharToMultiByte(CP_ACP, 0, lpwsz, cchIn, lpsz, cch, NULL, NULL); + + if(cch <= 0) + { + FreeLpsz(lpsz); + return NULL; + } + + return lpsz; +} + +LPSTR BstrToLpsz(BSTR bstr) +{ + return AllocLpsz(bstr, SysStringLen(bstr)); +} + +BSTR LpszToBstr(LPSTR lpsz) +{ + int cch = MultiByteToWideChar(CP_ACP, 0, lpsz, -1, NULL, 0); + + if(cch <= 0) + return NULL; + + BSTR bstr = SysAllocStringLen(NULL, cch); + + if(bstr == NULL) + return NULL; + + cch = MultiByteToWideChar(CP_ACP, 0, lpsz, -1, bstr, cch); + + if(cch <= 0) + { + SysFreeString(bstr); + return NULL; + } + + return bstr; +} + +} + +namespace +{ + +template T aligndown(const T& X, const U& align) +{ + return X & ~(T(align) - 1); +} + +template T alignup(const T& X, const U& align) +{ + return aligndown(X + (align - 1), align); +} + +/* Convert between bitmap formats */ +uint8 * win32_convert_scanlines(int width, int height, int bitcount, int fromalign, int toalign, const uint8 * data, uint8 ** buffer) +{ + // TBD: profile & optimize the most common cases + assert(width > 0); + assert(height); + assert(bitcount && bitcount <= 32); + assert(fromalign <= toalign); + assert(data); + assert(buffer); + + bool flipped = height < 0; + + if(flipped) + height = - height; + + int bytesperrow = alignup(width * bitcount, 8) / 8; + int fromstride = alignup(bytesperrow, fromalign); + int tostride = alignup(bytesperrow, toalign); + assert(fromstride <= tostride); + + int datasize = tostride * height; + + uint8 * dibits = new uint8[datasize]; + + const uint8 * src = data; + uint8 * dest = dibits; + + const int pad = tostride - fromstride; + + assert(pad < 4); + __assume(pad < 4); + + if(flipped) + { + dest += (height - 1) * tostride; + tostride = - tostride; + } + + for(int i = 0; i < height; ++ i) + { + memcpy(dest, src, fromstride); + memset(dest + fromstride, 0, pad); + src += fromstride; + dest += tostride; + } + + *buffer = dibits; + return dibits; +} + +/* Creates bitmaps */ +HBITMAP win32_create_dib(LONG width, LONG height, WORD bitcount, const BYTE * data) +{ + struct b_ + { + BITMAPINFO bmi; + RGBQUAD colormap[256 - ARRAYSIZE(RTL_FIELD_TYPE(BITMAPINFO, bmiColors))]; + } + b; + + b.bmi.bmiHeader.biSize = sizeof(b.bmi.bmiHeader); + b.bmi.bmiHeader.biWidth = width; + b.bmi.bmiHeader.biHeight = height; + b.bmi.bmiHeader.biPlanes = 1; + b.bmi.bmiHeader.biBitCount = bitcount; + b.bmi.bmiHeader.biCompression = BI_RGB; + b.bmi.bmiHeader.biSizeImage = 0; + b.bmi.bmiHeader.biXPelsPerMeter = 0; + b.bmi.bmiHeader.biYPelsPerMeter = 0; + + if(bitcount > 8) + { + b.bmi.bmiHeader.biClrUsed = 0; + b.bmi.bmiHeader.biClrImportant = 0; + } + else + { + b.bmi.bmiHeader.biClrUsed = 2 << bitcount; + b.bmi.bmiHeader.biClrImportant = 2 << bitcount; + + // TODO: palette + } + + // FIXME: beyond ugly + HDC hdc = CreateCompatibleDC(NULL); + + if(hdc == NULL) + return NULL; + + HBITMAP hbm = CreateDIBitmap(hdc, &b.bmi.bmiHeader, CBM_INIT, data, &b.bmi, DIB_RGB_COLORS); + + if(hbm == NULL) + error("CreateDIBitmap %dx%dx%d failed\n", width, height, bitcount); + + DeleteDC(hdc); + return hbm; +} + +/* Creates brushes */ +HBRUSH win32_create_brush(BRUSH * brush, COLORREF fgcolour) +{ + if(brush == NULL) + return (HBRUSH)GetStockObject(NULL_BRUSH); + + switch(brush->style) + { + case BS_SOLID: + case BS_NULL: + case BS_HATCHED: + case BS_PATTERN: + case BS_PATTERN8X8: + break; + + default: + return NULL; + } + + switch(brush->style) + { + case BS_SOLID: + return CreateSolidBrush(fgcolour); + + case BS_HATCHED: + return CreateHatchBrush(brush->pattern[0], fgcolour); + + case BS_NULL: + return (HBRUSH)GetStockObject(NULL_BRUSH); + + case BS_PATTERN: + case BS_PATTERN8X8: + { + uint16 pattern[8]; + + for(size_t i = 0; i < 8; ++ i) + pattern[i] = brush->pattern[i]; + + HBITMAP hpattern = CreateBitmap(8, 8, 1, 1, pattern); + HBRUSH hbr = CreatePatternBrush(hpattern); + DeleteObject(hpattern); + return hbr; + } + + DEFAULT_UNREACHABLE; + } +} +}; + +/* + "sealed" can improve optimizations by asserting a class cannot be derived + from, optimizing out accesses to the v-table from inside the class +*/ +#if defined(_MSC_VER) && _MSC_VER >= 1400 +#define SEALED_ sealed +#else +#define SEALED_ +#endif + + +/* Class that implements the RDP client GUI */ +class RdpClientUI +{ +public: + // TODO: pass the client settings relevant to the GUI here + HRESULT Initialize(HWND hwndParent) + { + // TODO: create the various windows + // TODO: create display window thread + // TODO: create input thread + return E_FAIL; + } + +public: + static BOOL Startup() + { + WNDCLASSEX wcexUI = { sizeof(wcexUI) }; + WNDCLASSEX wcexConsole = { sizeof(wcexConsole) }; + WNDCLASSEX wcexDisplay = { sizeof(wcexDisplay) }; + WNDCLASSEX wcexInput = { sizeof(wcexInput) }; + + HBRUSH nullBrush = (HBRUSH)GetStockObject(HOLLOW_BRUSH); + + wcexUI.lpfnWndProc = NULL; // TODO + wcexUI.hInstance = GetCurrentModule(); + wcexUI.hCursor = LoadCursor(NULL, IDC_ARROW); + wcexUI.hbrBackground = nullBrush; + wcexUI.lpszClassName = TEXT("MissTosca_UI"); + + wcexConsole.style = CS_VREDRAW | CS_HREDRAW; + wcexConsole.lpfnWndProc = NULL; // TODO + wcexConsole.hInstance = GetCurrentModule(); + wcexConsole.hCursor = LoadCursor(NULL, IDC_ARROW); + wcexConsole.hbrBackground = nullBrush; + wcexConsole.lpszClassName = TEXT("MissTosca_Console"); + + wcexDisplay.style = CS_VREDRAW | CS_HREDRAW; + wcexDisplay.lpfnWndProc = NULL; // TODO + wcexDisplay.hInstance = GetCurrentModule(); + wcexDisplay.hCursor = LoadCursor(NULL, IDC_ARROW); + wcexDisplay.hbrBackground = nullBrush; + wcexDisplay.lpszClassName = TEXT("MissTosca_Display"); + + wcexInput.style = CS_VREDRAW | CS_HREDRAW; + wcexInput.lpfnWndProc = NULL; // TODO + wcexInput.hInstance = GetCurrentModule(); + wcexInput.hCursor = NULL; + wcexInput.hbrBackground = nullBrush; + wcexInput.lpszClassName = TEXT("MissTosca_Input"); + + return + RegisterClassEx(&wcexUI) && + RegisterClassEx(&wcexConsole) && + RegisterClassEx(&wcexDisplay) && + RegisterClassEx(&wcexInput); + } + + static void Shutdown() + { + // TODO + } + + /* + This is the main UI window. It's the direct child of the control + window, it fills its whole extent and it contains the scrollbars. + When activated, it will move keyboard focus to the input window + */ +private: + HWND m_uiWindow; + LONG m_scrollHPos; + LONG m_scrollVPos; + + LRESULT UIWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam) + { + switch(uMsg) + { + // Keep the keyboard focus on the input window + case WM_ACTIVATE: + switch(LOWORD(wParam)) + { + case WA_INACTIVE: + break; + + case WA_ACTIVE: + case WA_CLICKACTIVE: + if(!HIWORD(wParam)) + SetFocus(m_inputWindow); + } + + return 0; + + // Resized: rearrange children windows, adjust scrollbars + case WM_SIZE: + { + if(IsIconic(m_uiWindow)) + break; + + RECT rcClient; + GetWindowRect(m_uiWindow, &rcClient); + + if(m_smartSizing) + { + // we are not supposed to maintain aspect ratio. Container has to do that + m_consoleX = 0; + m_consoleY = 0; + m_consoleWidth = rcClient.right; + m_consoleHeight = rcClient.bottom; + } + else + { + // center horizontally, no horizontal scrollbar + if(rcClient.right >= m_consoleWidth) + m_consoleX = (m_consoleWidth - rcClient.right) / 2; + + // center vertically, no vertical scrollbar + if(rcClient.bottom >= m_consoleHeight) + m_consoleY = (m_consoleHeight - rcClient.right) / 2; + } + + SCROLLINFO scroll = { sizeof(scroll), SIF_ALL, 0 }; + + // update the horizontal scrollbar + scroll.nMax = m_consoleWidth; + scroll.nPage = rcClient.right; + scroll.nPos = 0 - m_consoleX; + SetScrollInfo(m_uiWindow, SB_HORZ, &scroll, TRUE); + + // update the vertical scrollbar + scroll.nMax = m_consoleHeight; + scroll.nPage = rcClient.bottom; + scroll.nPos = 0 - m_consoleY; + SetScrollInfo(m_uiWindow, SB_VERT, &scroll, TRUE); + + // move/resize the console window + MoveWindow(m_consoleWindow, m_consoleX, m_consoleY, m_consoleWidth, m_consoleHeight, TRUE); + } + + return 0; + + case WM_HSCROLL: + { + SCROLLINFO scroll = { sizeof(scroll), SIF_TRACKPOS }; + GetScrollInfo(m_uiWindow, SB_HORZ, &scroll); + m_consoleX = - scroll.nTrackPos; + MoveWindow(m_consoleWindow, m_consoleX, m_consoleY, m_consoleWidth, m_consoleHeight, TRUE); + } + + return 0; + + case WM_VSCROLL: + { + SCROLLINFO scroll = { sizeof(scroll), SIF_TRACKPOS }; + GetScrollInfo(m_uiWindow, SB_VERT, &scroll); + m_consoleY = - scroll.nTrackPos; + MoveWindow(m_consoleWindow, m_consoleX, m_consoleY, m_consoleWidth, m_consoleHeight, TRUE); + } + + return 0; + + default: + break; + } + + return DefWindowProc(m_uiWindow, uMsg, wParam, lParam); + } + + /* + This is the full-screen title bar. It's displayed at the top of the + main UI window while in full-screen mode, and it contains two toolbars + with the pin, minimize, restore and close buttons + */ + HWND m_fullScreenBarWindow; + + /* + This is the console window. It has the same extent as the display on + the remote computer, or it fills the UI window in smart resizing mode, + and it contains the input and display windows + */ +private: + HWND m_consoleWindow; + LONG m_consoleX; + LONG m_consoleY; + LONG m_consoleWidth; + LONG m_consoleHeight; + bool m_smartSizing; + + LRESULT ConsoleWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam) + { + switch(uMsg) + { + case WM_SIZE: + { + RECT rcClient; + GetClientRect(m_consoleWindow, &rcClient); + + MoveWindow(m_inputWindow, 0, 0, rcClient.right, rcClient.bottom, TRUE); + MoveWindow(m_displayWindow, 0, 0, rcClient.right, rcClient.bottom, TRUE); + } + + return 0; + + default: + break; + } + + return DefWindowProc(m_consoleWindow, uMsg, wParam, lParam); + } + + /* + This is the display window. It represents the virtual display of the + remote computer. It completely fills its parent, the console window, + and it runs in its own thread for performance reasons + */ +private: + HWND m_displayWindow; + LONG m_displayBufferWidth; + LONG m_displayBufferHeight; + HDC m_displayBuffer; + void * m_displayBufferRaw; + int m_displayBufferSave; + int m_displayBufferBitDepth; + int m_displayBufferByteDepth; + int m_displayBufferStride; + RECT m_displayBufferClip; + CRITICAL_SECTION m_displayBufferMutex; + + LRESULT DisplayWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam) + { + switch(uMsg) + { + case WM_DESTROY: + PostQuitMessage(0); + return 0; + + case WM_PRINTCLIENT: + if(wParam == 0) + break; + + case WM_PAINT: + { + HDC hdc = (HDC)wParam; + + EnterCriticalSection(&m_displayBufferMutex); + + if(hdc) + { + RECT rc; + GetClientRect(m_displayWindow, &rc); + BitBlt(hdc, 0, 0, rc.right, rc.bottom, m_displayBuffer, 0, 0, SRCCOPY); + } + else + { + PAINTSTRUCT ps; + hdc = BeginPaint(m_displayWindow, &ps); + + if(!m_smartSizing) + { + BitBlt + ( + hdc, + ps.rcPaint.left, + ps.rcPaint.top, + ps.rcPaint.right - ps.rcPaint.left, + ps.rcPaint.bottom - ps.rcPaint.top, + m_displayBuffer, + ps.rcPaint.left, + ps.rcPaint.top, + SRCCOPY + ); + } + else + { + // bleh. There has to be a better way + SetStretchBltMode(hdc, HALFTONE); + + StretchBlt + ( + hdc, + 0, + 0, + m_consoleWidth, + m_consoleHeight, + m_displayBuffer, + 0, + 0, + m_displayBufferWidth, + m_displayBufferHeight, + SRCCOPY + ); + } + + EndPaint(m_displayWindow, &ps); + } + + LeaveCriticalSection(&m_displayBufferMutex); + } + + return 0; + + default: + break; + } + + return DefWindowProc(m_displayWindow, uMsg, wParam, lParam); + } + + /* Screen repainting */ + void Display_RepaintRect(const RECT * lprc) + { + if(m_smartSizing) + return Display_RepaintAll(); + + RECT rcDamage; + IntersectRect(&rcDamage, lprc, &m_displayBufferClip); + InvalidateRect(m_displayWindow, &rcDamage, FALSE); + } + + void Display_RepaintArea(int x, int y, int cx, int cy) + { + if(m_smartSizing) + return Display_RepaintAll(); + + RECT rcDamage; + rcDamage.left = x; + rcDamage.top = y; + rcDamage.right = x + cx; + rcDamage.bottom = y + cy; + Display_RepaintRect(&rcDamage); + } + + void Display_RepaintPolygon(POINT * point, int npoints, int linewidth) + { + if(m_smartSizing) + return Display_RepaintAll(); + + RECT rcDamage; + + rcDamage.left = MAXLONG; + rcDamage.top = MAXLONG; + rcDamage.right = 0; + rcDamage.bottom = 0; + + for(int i = 0; i < npoints; ++ i) + { + if(point[i].x < rcDamage.left) + rcDamage.left = point[i].x; + + if(point[i].y < rcDamage.top) + rcDamage.top = point[i].y; + + if(point[i].x > rcDamage.right) + rcDamage.right = point[i].x; + + if(point[i].y > rcDamage.bottom) + rcDamage.bottom = point[i].y; + } + + InflateRect(&rcDamage, linewidth, linewidth); + Display_RepaintRect(&rcDamage); + } + + void Display_RepaintAll() + { + InvalidateRgn(m_displayWindow, NULL, FALSE); + } + +public: + void Display_SetClip(int x, int y, int cx, int cy) + { + m_displayBufferClip.left = x; + m_displayBufferClip.top = y; + m_displayBufferClip.right = x + cx + 1; + m_displayBufferClip.bottom = y + cy + 1; + + HRGN hrgn = CreateRectRgnIndirect(&m_displayBufferClip); + SelectClipRgn(m_displayBuffer, hrgn); + DeleteObject(hrgn); + } + + void Display_ResetClip() + { + m_displayBufferClip.left = 0; + m_displayBufferClip.top = 0; + m_displayBufferClip.right = m_displayBufferWidth; + m_displayBufferClip.bottom = m_displayBufferHeight; + SelectClipRgn(m_displayBuffer, NULL); + } + + void Display_PaintBitmap(int x, int y, int cx, int cy, int width, int height, uint8 * data) + { + GdiFlush(); + + int fromstride = alignup(width * m_displayBufferByteDepth, 4); + int sizex = cx * m_displayBufferByteDepth; + + const uint8 * src = data; + + uint8 * dst = + (uint8 *)m_displayBufferRaw + + (m_displayBufferHeight - y - cy) * m_displayBufferStride + + x * m_displayBufferByteDepth; + + for(int i = 0; i < cy; ++ i) + { + memcpy(dst, src, sizex); + src += fromstride; + dst += m_displayBufferStride; + } + + Display_RepaintArea(x, y, cx, cy); + } + + void Display_DestBlt(uint8 opcode, int x, int y, int cx, int cy) + { + int dcsave = SaveDC(m_displayBuffer); + SelectObject(m_displayBuffer, GetStockObject(BLACK_BRUSH)); + PatBlt(m_displayBuffer, x, y, cx, cy, MAKELONG(0, opcode)); + RestoreDC(m_displayBuffer, dcsave); + Display_RepaintArea(x, y, cx, cy); + } + + void Display_PatBlt(uint8 opcode, int x, int y, int cx, int cy, BRUSH * brush, int bgcolour, int fgcolour) + { + HBRUSH hbr = win32_create_brush(brush, fgcolour); + + int dcsave = SaveDC(m_displayBuffer); + + SetBkColor(m_displayBuffer, bgcolour); + SetTextColor(m_displayBuffer, fgcolour); + SetBrushOrgEx(m_displayBuffer, brush->xorigin, brush->yorigin, NULL); + SelectObject(m_displayBuffer, hbr); + + PatBlt(m_displayBuffer, x, y, cx, cy, MAKELONG(0, opcode)); + + RestoreDC(m_displayBuffer, dcsave); + + DeleteObject(hbr); + + Display_RepaintArea(x, y, cx, cy); + } + + void Display_ScreenBlt(uint8 opcode, int x, int y, int cx, int cy, int srcx, int srcy) + { + BitBlt(m_displayBuffer, x, y, cx, cy, m_displayBuffer, srcx, srcy, MAKELONG(0, opcode)); + Display_RepaintArea(x, y, cx, cy); + } + + void Display_MemBlt(uint8 opcode, int x, int y, int cx, int cy, HBITMAP src, int srcx, int srcy) + { + HDC hdcSrc = CreateCompatibleDC(m_displayBuffer); + HGDIOBJ hOld = SelectObject(hdcSrc, src); + + BitBlt(m_displayBuffer, x, y, cx, cy, hdcSrc, srcx, srcy, MAKELONG(0, opcode)); + + SelectObject(hdcSrc, hOld); + DeleteDC(hdcSrc); + + Display_RepaintArea(x, y, cx, cy); + } + + void Display_TriBlt(uint8 opcode, int x, int y, int cx, int cy, HBITMAP src, int srcx, int srcy, BRUSH * brush, int bgcolour, int fgcolour) + { + // TODO + HDC hdcSrc = CreateCompatibleDC(m_displayBuffer); + HGDIOBJ hOld = SelectObject(hdcSrc, src); + + //SELECT_BRUSH(brush, bgcolour, fgcolour); + + BitBlt(m_displayBuffer, x, y, cx, cy, hdcSrc, srcx, srcy, MAKELONG(0, opcode)); + + //RESET_BRUSH(); + + SelectObject(hdcSrc, hOld); + DeleteDC(hdcSrc); + + Display_RepaintArea(x, y, cx, cy); + } + + void Display_Line(uint8 opcode, int startx, int starty, int endx, int endy, PEN * pen) + { + HPEN hpen = CreatePen(pen->style, pen->width, pen->colour); + + int dcsave = SaveDC(m_displayBuffer); + + SetROP2(m_displayBuffer, opcode); + SelectObject(m_displayBuffer, hpen); + MoveToEx(m_displayBuffer, startx, starty, NULL); + + LineTo(m_displayBuffer, endx, endy); + + RestoreDC(m_displayBuffer, dcsave); + + DeleteObject(hpen); + + RECT rcDamage; + + if(startx < endx) + { + rcDamage.left = startx; + rcDamage.right = endx; + } + else + { + rcDamage.left = endx; + rcDamage.right = startx; + } + + if(starty < endy) + { + rcDamage.top = starty; + rcDamage.bottom = endy; + } + else + { + rcDamage.top = endy; + rcDamage.bottom = starty; + } + + InflateRect(&rcDamage, pen->width, pen->width); + Display_RepaintRect(&rcDamage); + } + + void Display_Rect(int x, int y, int cx, int cy, int colour) + { + HBRUSH hbr = CreateSolidBrush(colour); + + int dcsave = SaveDC(m_displayBuffer); + + SelectObject(m_displayBuffer, hbr); + SelectObject(m_displayBuffer, GetStockObject(NULL_PEN)); + + Rectangle(m_displayBuffer, x, y, x + cx + 1, y + cy + 1); + + RestoreDC(m_displayBuffer, dcsave); + + DeleteObject(hbr); + + Display_RepaintArea(x, y, cx, cy); + } + + void Display_Polygon(uint8 opcode, uint8 fillmode, POINT * point, int npoints, BRUSH * brush, int bgcolour, int fgcolour) + { + HBRUSH hbr = win32_create_brush(brush, fgcolour); + + int dcsave = SaveDC(m_displayBuffer); + + SetBkColor(m_displayBuffer, bgcolour); + SetTextColor(m_displayBuffer, fgcolour); + SetPolyFillMode(m_displayBuffer, fillmode); + SelectObject(m_displayBuffer, hbr); + + Polygon(m_displayBuffer, point, npoints); + + RestoreDC(m_displayBuffer, dcsave); + + Display_RepaintPolygon(point, npoints, 0); + } + + void Display_Polyline(uint8 opcode, POINT * points, int npoints, PEN * pen) + { + POINT last = points[0]; + + for(int i = 1; i < npoints; ++ i) + { + points[i].x += last.x; + points[i].y += last.y; + last = points[i]; + } + + HPEN hpen = CreatePen(pen->style, pen->width, pen->colour); + + int dcsave = SaveDC(m_displayBuffer); + + SetROP2(m_displayBuffer, opcode); + SelectObject(m_displayBuffer, hpen); + + Polyline(m_displayBuffer, points, npoints); + + RestoreDC(m_displayBuffer, dcsave); + + DeleteObject(hpen); + + Display_RepaintPolygon(points, npoints, pen->width); + } + + void Display_Ellypse(uint8 opcode, uint8 fillmode, int x, int y, int cx, int cy, BRUSH * brush, int bgcolour, int fgcolour) + { + // TODO + + Display_RepaintArea(x, y, cx, cy); + } + + // TBD: optimize text drawing + void Display_DrawGlyph(int mixmode, int x, int y, int cx, int cy, HGLYPH glyph, int srcx, int srcy, int bgcolour, int fgcolour) + { + HBITMAP hbmGlyph = (HBITMAP)glyph; + HDC hdcGlyph = CreateCompatibleDC(m_displayBuffer); + HGDIOBJ hOld = SelectObject(hdcGlyph, hbmGlyph); + + int dcsave = SaveDC(m_displayBuffer); + + switch(mixmode) + { + case MIX_TRANSPARENT: + { + /* + ROP is DSPDxax: + - where the glyph (S) is white, D is set to the foreground color (P) + - where the glyph (S) is black, D is left untouched + + This paints a transparent glyph in the specified color + */ + HBRUSH hbr = CreateSolidBrush(fgcolour); + SelectObject(m_displayBuffer, hbr); + BitBlt(m_displayBuffer, x, y, cx, cy, hdcGlyph, srcx, srcy, MAKELONG(0, 0xe2)); + DeleteObject(hbr); + } + + break; + + case MIX_OPAQUE: + { + /* Curiously, glyphs are inverted (white-on-black) */ + SetBkColor(m_displayBuffer, fgcolour); + SetTextColor(m_displayBuffer, bgcolour); + BitBlt(m_displayBuffer, x, y, cx, cy, hdcGlyph, srcx, srcy, SRCCOPY); + } + + break; + } + + RestoreDC(m_displayBuffer, dcsave); + + SelectObject(hdcGlyph, hOld); + DeleteDC(hdcGlyph); + + Display_RepaintArea(x, y, cx, cy); + } + + void Display_DoGlyph(uint8 font, uint8 flags, int mixmode, int& x, int& y, int bgcolour, int fgcolour, const uint8 * ttext, int& idx) + { + FONTGLYPH * glyph; + + glyph = cache_get_font(/*This*/NULL, font, ttext[idx]); + + if(!(flags & TEXT2_IMPLICIT_X)) + { + int xyoffset = ttext[++ idx]; + + if((xyoffset & 0x80)) + { + if (flags & TEXT2_VERTICAL) + y += ttext[idx + 1] | (ttext[idx + 2] << 8); + else + x += ttext[idx + 1] | (ttext[idx + 2] << 8); + + idx += 2; + } + else + { + if (flags & TEXT2_VERTICAL) + y += xyoffset; + else + x += xyoffset; + } + } + + if(glyph) + { + Display_DrawGlyph + ( + mixmode, + x + (short)glyph->offset, + y + (short)glyph->baseline, + glyph->width, + glyph->height, + glyph->pixmap, + 0, + 0, + bgcolour, + fgcolour + ); + + if(flags & TEXT2_IMPLICIT_X) + x += glyph->width; + } + } + + void Display_DrawText + ( + uint8 font, + uint8 flags, + uint8 opcode, + int mixmode, + int x, + int y, + int clipx, + int clipy, + int clipcx, + int clipcy, + int boxx, + int boxy, + int boxcx, + int boxcy, + BRUSH * brush, + int bgcolour, + int fgcolour, + uint8 * text, + uint8 length + ) + { + int i, j; + DATABLOB *entry; + + HBRUSH hbr = CreateSolidBrush(bgcolour); + HGDIOBJ holdbrush = SelectObject(m_displayBuffer, hbr); + HGDIOBJ holdpen = SelectObject(m_displayBuffer, GetStockObject(NULL_PEN)); + + if (boxcx > 1) + Rectangle(m_displayBuffer, boxx, boxy, boxx + boxcx + 1, boxy + boxcy + 1); + else if (mixmode == MIX_OPAQUE) + Rectangle(m_displayBuffer, clipx, clipy, clipx + clipcx + 1, clipy + clipcy + 1); + + SelectObject(m_displayBuffer, holdpen); + SelectObject(m_displayBuffer, holdbrush); + + DeleteObject(hbr); + + if(boxcx > 1) + Display_RepaintArea(boxx, boxy, boxcx, boxcy); + else + Display_RepaintArea(clipx, clipy, clipcx, clipcy); + + /* Paint text, character by character */ + for (i = 0; i < length;) + { + switch (text[i]) + { + case 0xff: + /* At least two bytes needs to follow */ + if (i + 3 > length) + { + warning("Skipping short 0xff command:"); + for (j = 0; j < length; j++) + fprintf(stderr, "%02x ", text[j]); + fprintf(stderr, "\n"); + i = length = 0; + break; + } + cache_put_text(NULL /* TODO */, text[i + 1], text, text[i + 2]); + i += 3; + length -= i; + /* this will move pointer from start to first character after FF command */ + text = &(text[i]); + i = 0; + break; + + case 0xfe: + /* At least one byte needs to follow */ + if (i + 2 > length) + { + warning("Skipping short 0xfe command:"); + for (j = 0; j < length; j++) + fprintf(stderr, "%02x ", text[j]); + fprintf(stderr, "\n"); + i = length = 0; + break; + } + entry = cache_get_text(/*This*/NULL, text[i + 1]); + if (entry->data != NULL) + { + if ((((uint8 *) (entry->data))[1] == 0) + && (!(flags & TEXT2_IMPLICIT_X)) && (i + 2 < length)) + { + if (flags & TEXT2_VERTICAL) + y += text[i + 2]; + else + x += text[i + 2]; + } + for (j = 0; j < entry->size; j++) + Display_DoGlyph(font, flags, mixmode, x, y, bgcolour, fgcolour, ((uint8 *) (entry->data)), j); + } + if (i + 2 < length) + i += 3; + else + i += 2; + length -= i; + /* this will move pointer from start to first character after FE command */ + text = &(text[i]); + i = 0; + break; + + default: + Display_DoGlyph(font, flags, mixmode, x, y, bgcolour, fgcolour, text, i); + i++; + break; + } + } + } + + void Display_SaveDesktop(uint32 offset, int x, int y, int cx, int cy) + { + GdiFlush(); + + uint8 * data = + (uint8 *)m_displayBufferRaw + + x * m_displayBufferByteDepth + + (m_displayBufferHeight - y - cy) * m_displayBufferStride; + + cache_put_desktop + ( + /*This*/NULL, + offset * m_displayBufferByteDepth, + cx, + cy, + m_displayBufferStride, + m_displayBufferByteDepth, + data + ); + } + + void Display_RestoreDesktop(uint32 offset, int x, int y, int cx, int cy) + { + int fromstride = cx * m_displayBufferByteDepth; + + const uint8 * src = cache_get_desktop(/*This*/NULL, offset, cx, cy, m_displayBufferByteDepth); + + uint8 * dst = + (uint8 *)m_displayBufferRaw + + x * m_displayBufferByteDepth + + (m_displayBufferHeight - y - cy) * m_displayBufferStride; + + GdiFlush(); + + for(int i = 0; i < cy; ++ i) + { + memcpy(dst, src, fromstride); + src += fromstride; + dst += m_displayBufferStride; + } + + Display_RepaintArea(x, y, cx, cy); + } + + + void Display_BeginUpdate() + { + EnterCriticalSection(&m_displayBufferMutex); + m_displayBufferSave = SaveDC(m_displayBuffer); + } + + void Display_EndUpdate() + { + RestoreDC(m_displayBuffer, m_displayBufferSave); + LeaveCriticalSection(&m_displayBufferMutex); + } + + /* + This is the input window. It receives the keyboard and mouse input from + the user, and it's the only window that can receive the keyboard focus. + It completely fills its parent, the console window, and it runs in its + own thread for performance reasons and because of technical reasons + involving keyboard hooks in full-screen mode + */ + HWND m_inputWindow; + HCURSOR m_inputCursor; + + LRESULT InputWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam) + { + switch(uMsg) + { + case WM_DESTROY: + PostQuitMessage(0); + return 0; + + /* Keyboard stuff */ + // TODO: we need a good way to post output cross-thread + case WM_SYSKEYDOWN: + case WM_KEYDOWN: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_SCANCODE, RDP_KEYPRESS | (lparam & 0x1000000 ? KBD_FLAG_EXT : 0), LOBYTE(HIWORD(lparam)), 0); + break; + + case WM_SYSKEYUP: + case WM_KEYUP: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_SCANCODE, RDP_KEYRELEASE | (lparam & 0x1000000 ? KBD_FLAG_EXT : 0), LOBYTE(HIWORD(lparam)), 0); + break; + + /* Mouse stuff */ + // Cursor shape + case WM_SETCURSOR: + if(LOWORD(lParam) == HTCLIENT) + { + SetCursor(m_inputCursor); + return TRUE; + } + + break; + + // Movement + case WM_MOUSEMOVE: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_MOVE, LOWORD(lparam), HIWORD(lparam)); + break; + + // Buttons + // TODO: X buttons + case WM_LBUTTONDOWN: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON1 | MOUSE_FLAG_DOWN, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_RBUTTONDOWN: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON2 | MOUSE_FLAG_DOWN, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_MBUTTONDOWN: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON3 | MOUSE_FLAG_DOWN, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_LBUTTONUP: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON1, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_RBUTTONUP: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON2, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_MBUTTONUP: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON3, LOWORD(lparam), HIWORD(lparam)); + break; + + // Wheel + case WM_MOUSEWHEEL: + //mstsc_mousewheel(This, (SHORT)HIWORD(wparam), lparam); + break; + } + + return DefWindowProc(m_inputWindow, uMsg, wParam, lParam); + } + +public: +}; + +#pragma warning(push) +#pragma warning(disable: 4584) + +/* The ActiveX control */ +class RdpClient SEALED_: + /* COM basics */ + public IUnknown, + public IDispatch, + + /* ActiveX stuff */ + public IConnectionPointContainer, + public IDataObject, + public IObjectSafety, + public IOleControl, + public IOleInPlaceActiveObject, + public IOleInPlaceObject, + public IOleObject, + public IOleWindow, + public IPersist, + public IPersistPropertyBag, + public IPersistStorage, + public IPersistStreamInit, + public IProvideClassInfo, + public IProvideClassInfo2, + public IQuickActivate, + public IViewObject, + public IViewObject2, + + // NOTE: the original has a vestigial, non-functional implementation of this, which we omit + // ISpecifyPropertyPages + + // Hidden interfaces, not available through QueryInterface + public IConnectionPoint, + + /* RDP client interface */ + public MSTSCLib::IMsRdpClient4, + public MSTSCLib::IMsRdpClientNonScriptable2 + + // NOTE: implemented by inner classes due to requiring distinct IDispatch implementations + // IMsRdpClientAdvancedSettings4 + // IMsRdpClientSecuredSettings +{ +private: + /* An endless amount of COM glue */ + // Reference counting + LONG m_refCount; + +#ifdef _DEBUG + DWORD m_apartmentThreadId; + + bool InsideApartment() const + { + return GetCurrentThreadId() == m_apartmentThreadId; + } +#endif + + // Aggregation support + IUnknown * m_punkOuter; + + class RdpClientInner: public IUnknown + { + private: + RdpClient * Outer() + { + return InnerToOuter(this); + } + + public: + virtual STDMETHODIMP IUnknown::QueryInterface(REFIID riid, void ** ppvObject) + { + return Outer()->queryInterface(riid, ppvObject); + } + + virtual STDMETHODIMP_(ULONG) IUnknown::AddRef() + { + return Outer()->addRef(); + } + + virtual STDMETHODIMP_(ULONG) IUnknown::Release() + { + return Outer()->release(); + } + + } + m_inner; + + // Persistence support + CLSID m_classId; + + // Late binding support + unsigned m_typeLibIndex; + ITypeLib * m_typeLib; + ITypeInfo * m_dispTypeInfo; + + // Event sinks + size_t m_EventSinksCount; + + union + { + MSTSCLib::IMsTscAxEvents * m_EventSinksStatic[1]; + MSTSCLib::IMsTscAxEvents ** m_EventSinks; + }; + + // OLE control glue + HWND m_controlWindow; + IOleClientSite * m_clientSite; + IOleInPlaceSite * m_inPlaceSite; + IOleAdviseHolder * m_adviseHolder; + LONG m_freezeEvents; + bool m_uiActive; + + // UrlMon security + DWORD m_SafetyOptions; + + bool IsSafeForScripting() const + { + return m_SafetyOptions & INTERFACESAFE_FOR_UNTRUSTED_CALLER; + } + + /* Glue to interface to rdesktop-core */ + RdpClientUI * m_clientUI; + RDPCLIENT m_protocolState; + HANDLE m_protocolThread; + HANDLE m_protocolThreadWaitingReconnection; + bool m_reconnectAborted; + bool m_actuallyConnected; + bool m_loggedIn; + + /* Properties */ + // Storage fields + // NOTE: keep sorted by alignment (pointers and handles, integers, enumerations, booleans) + BSTR m_Domain; + BSTR m_UserName; + BSTR m_DisconnectedText; + BSTR m_ConnectingText; + BSTR m_FullScreenTitle; + BSTR m_StartProgram; + BSTR m_WorkDir; + BSTR m_ConnectedStatusText; + BSTR m_ClearTextPassword; // FIXME! dangerous, shouldn't store in cleartext! + BSTR m_RdpdrLocalPrintingDocName; + BSTR m_RdpdrClipCleanTempDirString; + BSTR m_RdpdrClipPasteInfoString; + BSTR m_KeyboardLayoutString; + LPSTR m_Server; + LPSTR m_LoadBalanceInfo; + // TODO: plugin DLLs + HWND m_UIParentWindowHandle; + long m_DesktopWidth; + long m_DesktopHeight; + long m_StartConnected; + long m_ColorDepth; + long m_KeyboardHookMode; + long m_AudioRedirectionMode; + long m_TransportType; + long m_SasSequence; + long m_RDPPort; + long m_HotKeyFullScreen; + long m_HotKeyAltEsc; + long m_HotKeyAltShiftTab; + long m_HotKeyAltSpace; + long m_HotKeyAltTab; + long m_HotKeyCtrlAltDel; + long m_HotKeyCtrlEsc; + long m_orderDrawThresold; + long m_BitmapCacheSize; + long m_BitmapVirtualCacheSize; + long m_NumBitmapCaches; + long m_brushSupportLevel; + long m_minInputSendInterval; + long m_InputEventsAtOnce; + long m_maxEventCount; + long m_keepAliveInternal; + long m_shutdownTimeout; + long m_overallConnectionTimeout; + long m_singleConnectionTimeout; + long m_MinutesToIdleTimeout; + long m_BitmapVirtualCache16BppSize; + long m_BitmapVirtualCache24BppSize; + long m_PerformanceFlags; + long m_MaxReconnectAttempts; + unsigned int m_AuthenticationLevel; + + MSTSCLib::ExtendedDisconnectReasonCode m_ExtendedDisconnectReason; + + bool m_Connected; + bool m_Compress; + bool m_BitmapPersistence; + bool m_allowBackgroundInput; + bool m_ContainerHandledFullScreen; + bool m_DisableRdpdr; + bool m_SecuredSettingsEnabled; + bool m_FullScreen; + bool m_AcceleratorPassthrough; + bool m_ShadowBitmap; + bool m_EncryptionEnabled; + bool m_DedicatedTerminal; + bool m_DisableCtrlAltDel; + bool m_EnableWindowsKey; + bool m_DoubleClickDetect; + bool m_MaximizeShell; + bool m_ScaleBitmapCachesByBpp; + bool m_CachePersistenceActive; + bool m_ConnectToServerConsole; + bool m_SmartSizing; // FIXME: this can be set while the control is connected + bool m_DisplayConnectionBar; + bool m_PinConnectionBar; + bool m_GrabFocusOnConnect; + bool m_RedirectDrives; + bool m_RedirectPrinters; + bool m_RedirectPorts; + bool m_RedirectSmartCards; + bool m_NotifyTSPublicKey; + bool m_CanAutoReconnect; + bool m_EnableAutoReconnect; + bool m_ConnectionBarShowMinimizeButton; + bool m_ConnectionBarShowRestoreButton; + + // Generic getters/setters + HRESULT GetProperty(BSTR& prop, BSTR * retVal) const + { + assert(InsideApartment()); + + if(retVal == NULL) + return E_POINTER; + + *retVal = SysAllocStringLen(prop, SysStringLen(prop)); + + if(*retVal == NULL) + return E_OUTOFMEMORY; + + return S_OK; + } + + HRESULT GetProperty(LPSTR& prop, BSTR * retVal) const + { + assert(InsideApartment()); + + if(retVal == NULL) + return E_POINTER; + + *retVal = LpszToBstr(prop); + + if(*retVal == NULL) + return E_OUTOFMEMORY; + + return S_OK; + } + + HRESULT SetProperty(BSTR& prop, BSTR newValue) + { + assert(InsideApartment()); + + if(m_Connected) + return E_FAIL; + + SysFreeString(prop); + + UINT len = SysStringLen(newValue); + + if(len) + { + // no embedded NULs, please + if(len != lstrlenW(newValue)) + return E_INVALIDARG; + + prop = SysAllocStringLen(newValue, len); + + if(prop == NULL) + return E_OUTOFMEMORY; + } + else + prop = NULL; + + return S_OK; + } + + HRESULT ReplaceProperty(BSTR& prop, BSTR newValue) + { + assert(InsideApartment()); + assert((prop == NULL && newValue == NULL) || prop != newValue); + + SysFreeString(prop); + prop = newValue; + return S_OK; + } + + HRESULT SetProperty(LPSTR& prop, BSTR newValue) + { + assert(InsideApartment()); + + if(m_Connected) + return E_FAIL; + + delete[] prop; + + if(SysStringLen(newValue)) + { + prop = BstrToLpsz(newValue); + + if(prop == NULL) + return E_OUTOFMEMORY; + } + else + prop = NULL; + + return S_OK; + } + + HRESULT ReplaceProperty(LPSTR& prop, LPSTR newValue) + { + assert(InsideApartment()); + assert((prop == NULL && newValue == NULL) || prop != newValue); + + if(prop) + delete[] prop; + + prop = newValue; + return S_OK; + } + + template HRESULT SetProperty(bool& prop, const Type& newValue) + { + assert(InsideApartment()); + + if(m_Connected) + return E_FAIL; + + prop = !!newValue; + return S_OK; + } + + template HRESULT SetProperty(Type& prop, const Type& newValue) + { + assert(InsideApartment()); + + if(m_Connected) + return E_FAIL; + + prop = newValue; + return S_OK; + } + + template HRESULT GetProperty(const bool& prop, Type * retVal) const + { + assert(InsideApartment()); + + if(retVal == NULL) + return E_POINTER; + + *retVal = prop ? VARIANT_TRUE : VARIANT_FALSE; + return S_OK; + } + + template HRESULT GetProperty(const Type& prop, Type * retVal) const + { + assert(InsideApartment()); + + if(retVal == NULL) + return E_POINTER; + + *retVal = prop; + return S_OK; + } + + /* Events */ + MSTSCLib::IMsTscAxEvents ** GetSinks() const + { + if(m_EventSinksCount > 1) + return m_EventSinks; + else + return const_cast(m_EventSinksStatic); + } + + // Event freezing + void UnfreezeEvents() + { + // Just in case + } + + // Generic event riser & helpers + void InvokeSinks(DISPID eventId, VARIANTARG rgvarg[], unsigned int cArgs, VARIANTARG * retval) + { + assert(InsideApartment()); + + DISPPARAMS params; + + params.rgvarg = rgvarg; + params.rgdispidNamedArgs = NULL; + params.cArgs = cArgs; + params.cNamedArgs = 0; + + MSTSCLib::IMsTscAxEvents ** sinks = GetSinks(); + + for(size_t i = 0; i < m_EventSinksCount; ++ i) + sinks[i]->Invoke(eventId, IID_NULL, 0, DISPATCH_METHOD, ¶ms, retval, NULL, NULL); + } + + typedef void (RdpClient::* AsyncEventCallback) + ( + DISPID eventId, + VARIANTARG * rgvarg, + unsigned int cArgs, + VARIANTARG * retVal + ); + + void CleanupEventArgumentsCallback + ( + DISPID eventId, + VARIANTARG * rgvarg, + unsigned int cArgs, + VARIANTARG * retVal + ) + { + assert((rgvarg == NULL) == (cArgs == 0)); + + for(unsigned int i = 0; i < cArgs; ++ i) + VariantClear(&rgvarg[i]); + + if(retVal) + VariantClear(retVal); + } + + // synchronous call from inside the apartment that owns the object + void FireEventInsideApartment + ( + DISPID eventId, + VARIANTARG * rgvarg = NULL, + unsigned int cArgs = 0, + VARIANTARG * retval = NULL, + AsyncEventCallback callback = NULL + ) + { + assert(InsideApartment()); + + if(retval == NULL && callback) + { + VARIANTARG localRetval = { }; + retval = &localRetval; + } + + InvokeSinks(eventId, rgvarg, cArgs, retval); + + if(callback) + (this->*callback)(eventId, rgvarg, cArgs, retval); + } + + struct EventArguments + { + DISPID eventId; + VARIANTARG * rgvarg; + unsigned int cArgs; + VARIANTARG * retval; + AsyncEventCallback callback; + }; + + struct RedirectArguments + { + uint32 flags; + uint32 server_len; + wchar_t * server; + uint32 cookie_len; + char * cookie; + uint32 username_len; + wchar_t * username; + uint32 domain_len; + wchar_t * domain; + uint32 password_len; + wchar_t * password; + }; + + enum + { + RDPC_WM_ = WM_USER, + RDPC_WM_SYNC_EVENT, + RDPC_WM_ASYNC_EVENT, + RDPC_WM_DISCONNECT, + RDPC_WM_REQUEST_CLOSE, + RDPC_WM_REDIRECT, + }; + + static VOID CALLBACK DisconnectAPC(ULONG_PTR) + { + // no need to do anything. The interruption will be enough + } + + bool HandleEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT& result) + { + result = 0; + + switch(uMsg) + { + /* Regular event to be dispatched to the container's sink */ + case RDPC_WM_SYNC_EVENT: + assert(InSendMessage()); + + case RDPC_WM_ASYNC_EVENT: + { + const EventArguments * eventArgs = reinterpret_cast(lParam); + assert(eventArgs); + + FireEventInsideApartment + ( + eventArgs->eventId, + eventArgs->rgvarg, + eventArgs->cArgs, + eventArgs->retval, + eventArgs->callback + ); + + if(uMsg == RDPC_WM_ASYNC_EVENT) + delete eventArgs; + } + + break; + + /* The protocol thread is about to die: prepare for disconnection */ + case RDPC_WM_DISCONNECT: + { + assert(m_Connected); + assert(InsideApartment()); + assert(InSendMessage()); + + // Unblock the protocol thread and wait for it to terminate + ReplyMessage(0); + JoinProtocolThread(); + + // Finish disconnecting + PerformDisconnect(static_cast(wParam)); + } + + break; + + case RDPC_WM_REDIRECT: + { + assert(InSendMessage()); + assert(lParam); + assert(m_Connected); + assert(m_protocolState.redirect); + + RedirectArguments * redirectArgs = reinterpret_cast(lParam); + + // BUGBUG: this is extremely messy and more prone to out-of-memory than it should be + LPSTR lpszNewServer = NULL; + LPSTR lpszNewCookie = NULL; + BSTR strNewUsername = NULL; + BSTR strNewDomain = NULL; + BSTR strNewPassword = NULL; + HRESULT hr = S_OK; + + for(;;) + { + // Allocate the new properties + hr = E_OUTOFMEMORY; + + // FIXME: convert the hostname to Punycode, not the ANSI codepage + lpszNewServer = AllocLpsz(redirectArgs->server, redirectArgs->server_len / sizeof(OLECHAR)); + + if(lpszNewServer == NULL && redirectArgs->server_len) + break; + + lpszNewCookie = AllocLpsz(redirectArgs->cookie, redirectArgs->cookie_len); + + if(lpszNewCookie == NULL && redirectArgs->cookie_len) + break; + + strNewUsername = SysAllocStringLen(redirectArgs->username, redirectArgs->username_len / sizeof(OLECHAR)); + + if(strNewUsername == NULL && redirectArgs->username_len) + break; + + strNewDomain = SysAllocStringLen(redirectArgs->domain, redirectArgs->domain_len / sizeof(OLECHAR)); + + if(strNewDomain == NULL && redirectArgs->domain_len) + break; + + strNewPassword = SysAllocStringLen(redirectArgs->password, redirectArgs->password_len / sizeof(OLECHAR)); + + if(strNewPassword == NULL && redirectArgs->password_len) + break; + + hr = S_OK; + break; + } + + // Success + if(SUCCEEDED(hr)) + { + // set the new properties + ReplaceProperty(m_Server, lpszNewServer); + ReplaceProperty(m_LoadBalanceInfo, lpszNewCookie); + ReplaceProperty(m_UserName, strNewUsername); + ReplaceProperty(m_Domain, strNewDomain); + ReplaceProperty(m_ClearTextPassword, strNewPassword); + } + // Failure + else + { + // free the buffers + FreeLpsz(lpszNewServer); + FreeLpsz(lpszNewCookie); + SysFreeString(strNewUsername); + SysFreeString(strNewDomain); + SysFreeString(strNewPassword); + + // signal the error + m_protocolState.disconnect_reason = 262; + m_protocolState.redirect = False; + result = -1; + } + } + + break; + + // BUGBUG: this could potentially disconnect an unrelated connection established later... + case RDPC_WM_REQUEST_CLOSE: + { + assert(!InSendMessage()); + + if(m_Connected) + { + // Ask confirmation to the container in case we are logged in + if(m_loggedIn && !FireConfirmClose()) + break; + + // For reentrancy (OnConfirmClose could deviously call Disconnect) + if(m_protocolThread == NULL) + break; + + // Terminate the protocol thread. It will fire the Disconnected event on exit + TerminateProtocolThread(); + } + } + + break; + + default: + return false; + } + + // If the calling thread is blocked, unblock it ASAP + if(InSendMessage()) + ReplyMessage(result); + + return true; + } + + // synchronous call from outside the apartment + void FireEventOutsideApartment + ( + DISPID eventId, + VARIANTARG * rgvarg = NULL, + unsigned int cArgs = 0, + VARIANTARG * retval = NULL, + AsyncEventCallback callback = NULL + ) + { + assert(!InsideApartment()); + EventArguments syncEvent = { eventId, rgvarg, cArgs, retval, callback }; + SendMessage(m_controlWindow, RDPC_WM_SYNC_EVENT, 0, reinterpret_cast(&syncEvent)); + } + + // asynchronous call from outside the apartment + HRESULT FireEventOutsideApartmentAsync + ( + DISPID eventId, + VARIANTARG * rgvarg = NULL, + unsigned int cArgs = 0, + VARIANTARG * retval = NULL, + AsyncEventCallback callback = NULL + ) + { + assert(!InsideApartment()); + + EventArguments * asyncEvent = new EventArguments(); + + if(asyncEvent == NULL) + return E_OUTOFMEMORY; + + asyncEvent->eventId = eventId; + asyncEvent->rgvarg = rgvarg; + asyncEvent->cArgs = cArgs; + asyncEvent->retval = NULL; + + if(!PostMessage(m_controlWindow, RDPC_WM_ASYNC_EVENT, 0, reinterpret_cast(asyncEvent))) + { + delete asyncEvent; + return HRESULT_FROM_WIN32(GetLastError()); + } + + return S_OK; + } + + // Specific events + void FireConnecting() + { + // Source: protocol + FireEventOutsideApartment(1); + } + + void FireConnected() + { + // Source: protocol + FireEventOutsideApartment(2); + } + + void FireLoginComplete() + { + // Source: protocol + FireEventOutsideApartment(3); + } + + void FireDisconnected(long reason) + { + // Source: protocol. Special handling + SendMessage(m_controlWindow, RDPC_WM_DISCONNECT, reason, 0); + } + + void FireEnterFullScreenMode() + { + // Source: UI window + FireEventInsideApartment(5); + } + + void FireLeaveFullScreenMode() + { + // Source: UI window + FireEventInsideApartment(6); + } + + HRESULT FireChannelReceivedData(char (& chanName)[CHANNEL_NAME_LEN + 1], void * chanData, unsigned int chanDataSize) + { + // BUGBUG: what to do when we run out of memory? + + OLECHAR wchanName[ARRAYSIZE(chanName)]; + std::copy(chanName + 0, chanName + ARRAYSIZE(chanName), wchanName); + + BSTR bstrChanName = SysAllocString(wchanName); + + if(bstrChanName == NULL) + return E_OUTOFMEMORY; + + BSTR bstrChanData = SysAllocStringByteLen(NULL, chanDataSize); + + if(bstrChanData == NULL) + { + SysFreeString(bstrChanName); + return E_OUTOFMEMORY; + } + + CopyMemory(bstrChanData, chanData, chanDataSize); + + VARIANTARG args[2] = { }; + + args[1].vt = VT_BSTR; + args[1].bstrVal = bstrChanName; + + args[0].vt = VT_BSTR; + args[0].bstrVal = bstrChanData; + + // Source: protocol + HRESULT hr = FireEventOutsideApartmentAsync(7, args, ARRAYSIZE(args), NULL, &RdpClient::CleanupEventArgumentsCallback); + + if(FAILED(hr)) + CleanupEventArgumentsCallback(7, args, ARRAYSIZE(args), NULL); + + return hr; + } + + void FireRequestGoFullScreen() + { + // Source: UI window + FireEventInsideApartment(8); + } + + void FireRequestLeaveFullScreen() + { + // Source: UI window + FireEventInsideApartment(9); + } + + void FireFatalError(long errorCode) + { + VARIANTARG arg = { }; + + arg.vt = VT_I4; + arg.lVal = errorCode; + + // Source: protocol + FireEventOutsideApartment(10, &arg, 1); + } + + void FireFatalErrorFromApartment(long errorCode) + { + VARIANTARG arg = { }; + + arg.vt = VT_I4; + arg.lVal = errorCode; + + // Source: control + FireEventInsideApartment(10, &arg, 1); + } + + void FireWarning(long warningCode) + { + VARIANTARG arg = { }; + + arg.vt = VT_I4; + arg.lVal = warningCode; + + // Source: protocol + FireEventOutsideApartment(11, &arg, 1); + } + + void FireRemoteDesktopSizeChange(long width, long height) + { + VARIANTARG args[2] = { }; + + args[1].vt = VT_I4; + args[1].lVal = width; + + args[0].vt = VT_I4; + args[0].lVal = height; + + // Source: UI window + FireEventInsideApartment(12, args, ARRAYSIZE(args)); + } + + void FireIdleTimeoutNotification() + { + // Source: input thread + FireEventOutsideApartment(13); + } + + void FireRequestContainerMinimize() + { + // Source: UI window + FireEventInsideApartment(14); + } + + bool FireConfirmClose() + { + VARIANTARG retval = { }; + VARIANT_BOOL allowClose = VARIANT_TRUE; + + retval.vt = VT_BYREF | VT_BOOL; + retval.pboolVal = &allowClose; + + // Source: control + FireEventInsideApartment(15, NULL, 0, &retval); + + return allowClose != VARIANT_FALSE; + } + + HRESULT FireReceivedTSPublicKey(void * publicKey, unsigned int publicKeyLength) + { + assert(m_Connected); + + if(!m_NotifyTSPublicKey) + return S_OK; + + BSTR bstrPublicKey = SysAllocStringByteLen(NULL, publicKeyLength); + + if(bstrPublicKey == NULL) + return E_OUTOFMEMORY; + + CopyMemory(bstrPublicKey, publicKey, publicKeyLength); + + VARIANT_BOOL continueLogon = VARIANT_TRUE; + VARIANTARG arg = { }; + VARIANTARG retval = { }; + + arg.vt = VT_BSTR; + arg.bstrVal = bstrPublicKey; + + retval.vt = VT_BYREF | VT_BOOL; + retval.pboolVal = &continueLogon; + + // Source: protocol + FireEventOutsideApartment(16, &arg, 1, &retval); + + return continueLogon ? S_OK : S_FALSE; + } + + LONG FireAutoReconnecting(long disconnectReason, long attemptCount) + { + LONG continueStatus = MSTSCLib::autoReconnectContinueAutomatic; + VARIANTARG args[2] = { }; + VARIANTARG retval = { }; + + args[1].vt = VT_I4; + args[1].lVal = disconnectReason; + + args[0].vt = VT_I4; + args[0].lVal = attemptCount; + + retval.vt = VT_BYREF | VT_I4; + retval.plVal = &continueStatus; + + // Source: protocol + FireEventOutsideApartment(17, args, ARRAYSIZE(args), &retval); + + return continueStatus; + } + + void FireAuthenticationWarningDisplayed() + { + // Source: protocol + FireEventOutsideApartment(18); + } + + void FireAuthenticationWarningDismissed() + { + // Source: protocol + FireEventOutsideApartment(19); + } + + /* Actual IUnknown implementation */ + HRESULT queryInterface(REFIID riid, void ** ppvObject) + { + IUnknown * pvObject = NULL; + + using namespace MSTSCLib; + + if(riid == IID_IUnknown) + pvObject = static_cast(&m_inner); + else if(riid == IID_IConnectionPointContainer) + pvObject = static_cast(this); + else if(riid == IID_IDataObject) + pvObject = static_cast(this); + else if(riid == IID_IObjectSafety) + pvObject = static_cast(this); + else if(riid == IID_IOleControl) + pvObject = static_cast(this); + else if(riid == IID_IOleInPlaceActiveObject) + pvObject = static_cast(this); + else if(riid == IID_IOleInPlaceObject) + pvObject = static_cast(this); + else if(riid == IID_IOleObject) + pvObject = static_cast(this); + else if(riid == IID_IOleWindow) + pvObject = static_cast(this); + else if(riid == IID_IPersist) + pvObject = static_cast(this); + else if(riid == IID_IPersistPropertyBag) + pvObject = static_cast(this); + else if(riid == IID_IPersistStorage) + pvObject = static_cast(this); + else if(riid == IID_IPersistStreamInit) + pvObject = static_cast(this); + else if(riid == IID_IQuickActivate) + pvObject = static_cast(this); + else if(riid == IID_IViewObject) + pvObject = static_cast(this); + else if(riid == IID_IViewObject2) + pvObject = static_cast(this); + else if(riid == IID_IMsTscAx || riid == MSTSCLib_Redist::IID_IMsTscAx) + pvObject = static_cast(this); + else if(riid == IID_IMsRdpClient) + pvObject = static_cast(this); + else if(riid == IID_IMsRdpClient2) + pvObject = static_cast(this); + else if(riid == IID_IMsRdpClient3) + pvObject = static_cast(this); + else if(riid == IID_IMsRdpClient4) + pvObject = static_cast(this); + else if(riid == IID_IMsTscNonScriptable) + pvObject = static_cast(this); + else if(riid == IID_IMsRdpClientNonScriptable) + pvObject = static_cast(this); + else if(riid == IID_IMsRdpClientNonScriptable2) + pvObject = static_cast(this); + + *ppvObject = pvObject; + + if(pvObject) + { + pvObject->AddRef(); + return S_OK; + } + + return E_NOINTERFACE; + } + + ULONG addRef() + { + return InterlockedIncrement(&m_refCount); + } + + ULONG release() + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + /* Constructor */ + RdpClient(REFCLSID classId, unsigned libIndex, IUnknown * punkOuter): + // COM/OLE internals + m_refCount(0), + m_punkOuter(punkOuter), + m_classId(classId), + m_typeLibIndex(libIndex), + m_typeLib(), + m_dispTypeInfo(), + m_controlWindow(NULL), + m_clientSite(), + m_inPlaceSite(), + m_adviseHolder(), + m_freezeEvents(0), + m_uiActive(false), + m_SafetyOptions(), + +#ifdef _DEBUG + m_apartmentThreadId(GetCurrentThreadId()), +#endif + + // rdesktop-core interface + m_protocolState(), + m_protocolThread(), + + // Properties + m_Server(), + m_Domain(), + m_UserName(), + m_DisconnectedText(), + m_ConnectingText(), + m_FullScreenTitle(), + m_StartProgram(), + m_WorkDir(), + m_LoadBalanceInfo(), + m_ConnectedStatusText(), + m_ClearTextPassword(), + m_RdpdrLocalPrintingDocName(), + m_RdpdrClipCleanTempDirString(), + m_RdpdrClipPasteInfoString(), + m_UIParentWindowHandle(), + m_DesktopWidth(), + m_DesktopHeight(), + m_StartConnected(), + m_ColorDepth(16), + m_KeyboardHookMode(2), + m_AudioRedirectionMode(0), + m_TransportType(1), // BUGBUG: ??? what's this ??? + m_SasSequence(0xAA03), // BUGBUG: ??? what's this ??? + m_RDPPort(3389), + m_HotKeyFullScreen(VK_CANCEL), + m_HotKeyAltEsc(VK_INSERT), + m_HotKeyAltShiftTab(VK_NEXT), + m_HotKeyAltSpace(VK_DELETE), + m_HotKeyAltTab(VK_PRIOR), + m_HotKeyCtrlAltDel(VK_END), + m_HotKeyCtrlEsc(VK_HOME), + m_orderDrawThresold(0), + m_BitmapCacheSize(1500), + m_BitmapVirtualCacheSize(10), + m_brushSupportLevel(), + m_minInputSendInterval(), + m_InputEventsAtOnce(), + m_maxEventCount(), + m_keepAliveInternal(0), + m_shutdownTimeout(10), + m_overallConnectionTimeout(120), + m_singleConnectionTimeout(30), + m_MinutesToIdleTimeout(0), + m_BitmapVirtualCache16BppSize(20), + m_BitmapVirtualCache24BppSize(30), + m_PerformanceFlags(), + m_MaxReconnectAttempts(20), + m_AuthenticationLevel(0), + m_ExtendedDisconnectReason(MSTSCLib::exDiscReasonNoInfo), + m_Connected(false), + m_Compress(true), + m_BitmapPersistence(true), + m_allowBackgroundInput(false), + m_ContainerHandledFullScreen(false), + m_DisableRdpdr(false), + m_SecuredSettingsEnabled(true), + m_FullScreen(false), + m_AcceleratorPassthrough(true), + m_ShadowBitmap(true), + m_EncryptionEnabled(true), + m_DedicatedTerminal(false), + m_DisableCtrlAltDel(true), + m_EnableWindowsKey(true), + m_DoubleClickDetect(false), + m_MaximizeShell(true), + m_ScaleBitmapCachesByBpp(false), + m_CachePersistenceActive(false), + m_ConnectToServerConsole(false), + m_SmartSizing(false), + m_DisplayConnectionBar(true), + m_PinConnectionBar(true), + m_GrabFocusOnConnect(true), + m_RedirectDrives(false), + m_RedirectPrinters(false), + m_RedirectPorts(false), + m_RedirectSmartCards(false), + m_NotifyTSPublicKey(false), + m_CanAutoReconnect(false), + m_EnableAutoReconnect(true), + m_ConnectionBarShowMinimizeButton(true), + m_ConnectionBarShowRestoreButton(true) + { + if(m_punkOuter == NULL) + m_punkOuter = &m_inner; + } + + /* Destructor */ + ~RdpClient() + { + assert(m_refCount == 0); + + if(m_Connected) + { + // Terminate the protocol thread + TerminateProtocolThread(); + + // Dispatch the RDPC_WM_DISCONNECT message sent by the dying thread + MSG msg; + PeekMessage(&msg, m_controlWindow, 0, 0, PM_NOREMOVE); + + assert(!m_Connected); + } + + DestroyControlWindow(); + + if(m_typeLib) + m_typeLib->Release(); + + if(m_dispTypeInfo) + m_dispTypeInfo->Release(); + + MSTSCLib::IMsTscAxEvents ** sinks = GetSinks(); + + for(size_t i = 0; i < m_EventSinksCount; ++ i) + sinks[i]->Release(); + + if(m_EventSinksCount > 1) + delete[] m_EventSinks; + + if(m_clientSite) + m_clientSite->Release(); + + if(m_inPlaceSite) + m_inPlaceSite->Release(); + + if(m_adviseHolder) + m_adviseHolder->Release(); + + SysFreeString(m_Domain); + SysFreeString(m_UserName); + SysFreeString(m_DisconnectedText); + SysFreeString(m_DisconnectedText); + SysFreeString(m_FullScreenTitle); + SysFreeString(m_StartProgram); + SysFreeString(m_WorkDir); + SysFreeString(m_ConnectedStatusText); + SysFreeString(m_ClearTextPassword); + SysFreeString(m_RdpdrLocalPrintingDocName); + SysFreeString(m_RdpdrClipCleanTempDirString); + SysFreeString(m_RdpdrClipPasteInfoString); + + FreeLpsz(m_LoadBalanceInfo); + FreeLpsz(m_Server); + + unlockServer(); + } + + /* Advanced settings wrapper */ + friend class AdvancedSettings; + + class AdvancedSettings SEALED_: public MSTSCLib::IMsRdpClientAdvancedSettings4 + { + private: + RdpClient * Outer() + { + return InnerToOuter(this); + } + + const RdpClient * Outer() const + { + return InnerToOuter(this); + } + + /* IDispatch type information */ + ITypeInfo * m_dispTypeInfo; + + HRESULT LoadDispTypeInfo() + { + if(m_dispTypeInfo) + return S_OK; + + HRESULT hr = Outer()->LoadTypeLibrary(); + + if(FAILED(hr)) + return hr; + + assert(MSTSCLib::IID_IMsRdpClientAdvancedSettings4 == MSTSCLib_Redist::IID_IMsRdpClientAdvancedSettings4); + + hr = Outer()->m_typeLib->GetTypeInfoOfGuid(MSTSCLib::IID_IMsRdpClientAdvancedSettings4, &m_dispTypeInfo); + + if(FAILED(hr)) + return hr; + + assert(m_dispTypeInfo); + return S_OK; + } + + HRESULT AcquireDispTypeInfo(ITypeInfo ** ppTI) + { + HRESULT hr = LoadDispTypeInfo(); + + if(FAILED(hr)) + return hr; + + m_dispTypeInfo->AddRef(); + *ppTI = m_dispTypeInfo; + return S_OK; + } + + public: + ~AdvancedSettings() + { + if(m_dispTypeInfo) + m_dispTypeInfo->Release(); + } + + /* IUnknown */ + virtual STDMETHODIMP IUnknown::QueryInterface(REFIID riid, void ** ppvObject) + { + using namespace MSTSCLib; + + if + ( + riid == IID_IUnknown || + riid == IID_IDispatch || + riid == IID_IMsTscAdvancedSettings || + riid == IID_IMsRdpClientAdvancedSettings || + riid == IID_IMsRdpClientAdvancedSettings2 || + riid == IID_IMsRdpClientAdvancedSettings3 || + riid == IID_IMsRdpClientAdvancedSettings4 + ) + { + *ppvObject = this; + Outer()->addRef(); + return S_OK; + } + else + { + *ppvObject = NULL; + return E_NOINTERFACE; + } + } + + virtual STDMETHODIMP_(ULONG) IUnknown::AddRef() + { + return Outer()->addRef(); + } + + virtual STDMETHODIMP_(ULONG) IUnknown::Release() + { + return Outer()->release(); + } + + /* IDispatch */ + virtual STDMETHODIMP IDispatch::GetTypeInfoCount(UINT * pctinfo) + { + *pctinfo = 1; + return S_OK; + } + + virtual STDMETHODIMP IDispatch::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo ** ppTInfo) + { + if(iTInfo != 0) + return DISP_E_BADINDEX; + + return AcquireDispTypeInfo(ppTInfo); + } + + virtual STDMETHODIMP IDispatch::GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId) + { + HRESULT hr = LoadDispTypeInfo(); + + if(FAILED(hr)) + return hr; + + return m_dispTypeInfo->GetIDsOfNames(rgszNames, cNames, rgDispId); + } + + virtual STDMETHODIMP IDispatch::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pDispParams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, UINT * puArgErr) + { + return m_dispTypeInfo->Invoke + ( + static_cast(this), + dispIdMember, + wFlags, + pDispParams, + pVarResult, + pExcepInfo, + puArgErr + ); + } + + /* IMsTscAdvancedSettings */ + virtual STDMETHODIMP IMsTscAdvancedSettings::put_Compress(long pcompress) + { + return Outer()->SetProperty(Outer()->m_Compress, pcompress); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_Compress(long * pcompress) const + { + return Outer()->GetProperty(Outer()->m_Compress, pcompress); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_BitmapPeristence(long pbitmapPeristence) + { + return Outer()->SetProperty(Outer()->m_BitmapPersistence, pbitmapPeristence); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_BitmapPeristence(long * pbitmapPeristence) const + { + return Outer()->GetProperty(Outer()->m_BitmapPersistence, pbitmapPeristence); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_allowBackgroundInput(long pallowBackgroundInput) + { + if(Outer()->IsSafeForScripting()) + return S_FALSE; + + return Outer()->SetProperty(Outer()->m_allowBackgroundInput, pallowBackgroundInput); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_allowBackgroundInput(long * pallowBackgroundInput) const + { + return Outer()->GetProperty(Outer()->m_allowBackgroundInput, pallowBackgroundInput); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_KeyBoardLayoutStr(BSTR rhs) + { + return Outer()->SetProperty(Outer()->m_KeyboardLayoutString, rhs); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_PluginDlls(BSTR rhs) + { + // TODO: split rhs into an array + + // Control marked safe for scripting: only allow filenames + if(Outer()->IsSafeForScripting()) + { + // TODO: validate entries + // TODO: replace each entry with a full path based on the Virtual Channel DLL path + } + + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_IconFile(BSTR rhs) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_IconIndex(long rhs) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_ContainerHandledFullScreen(long pContainerHandledFullScreen) + { + if(Outer()->IsSafeForScripting()) + return S_FALSE; + + return Outer()->SetProperty(Outer()->m_ContainerHandledFullScreen, pContainerHandledFullScreen); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_ContainerHandledFullScreen(long * pContainerHandledFullScreen) const + { + return Outer()->GetProperty(Outer()->m_ContainerHandledFullScreen, pContainerHandledFullScreen); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_DisableRdpdr(long pDisableRdpdr) + { + return Outer()->SetProperty(Outer()->m_DisableRdpdr, pDisableRdpdr); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_DisableRdpdr(long * pDisableRdpdr) const + { + return Outer()->GetProperty(Outer()->m_DisableRdpdr, pDisableRdpdr); + } + + /* IMsRdpClientAdvancedSettings */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_SmoothScroll(long psmoothScroll) + { + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SmoothScroll(long * psmoothScroll) const + { + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_AcceleratorPassthrough(long pacceleratorPassthrough) + { + return Outer()->SetProperty(Outer()->m_AcceleratorPassthrough, pacceleratorPassthrough); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_AcceleratorPassthrough(long * pacceleratorPassthrough) const + { + return Outer()->GetProperty(Outer()->m_AcceleratorPassthrough, pacceleratorPassthrough); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ShadowBitmap(long pshadowBitmap) + { + return Outer()->SetProperty(Outer()->m_ShadowBitmap, pshadowBitmap); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ShadowBitmap(long * pshadowBitmap) const + { + return Outer()->GetProperty(Outer()->m_ShadowBitmap, pshadowBitmap); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_TransportType(long ptransportType) + { + // Reserved + return Outer()->SetProperty(Outer()->m_TransportType, ptransportType); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_TransportType(long * ptransportType) const + { + // Reserved + return Outer()->GetProperty(Outer()->m_TransportType, ptransportType); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_SasSequence(long psasSequence) + { + // Reserved + return Outer()->SetProperty(Outer()->m_SasSequence, psasSequence); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SasSequence(long * psasSequence) const + { + // Reserved + return Outer()->GetProperty(Outer()->m_SasSequence, psasSequence); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_EncryptionEnabled(long pencryptionEnabled) + { + return Outer()->SetProperty(Outer()->m_EncryptionEnabled, pencryptionEnabled); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EncryptionEnabled(long * pencryptionEnabled) const + { + return Outer()->GetProperty(Outer()->m_EncryptionEnabled, pencryptionEnabled); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DedicatedTerminal(long pdedicatedTerminal) + { + return Outer()->SetProperty(Outer()->m_DedicatedTerminal, pdedicatedTerminal); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DedicatedTerminal(long * pdedicatedTerminal) const + { + return Outer()->GetProperty(Outer()->m_DedicatedTerminal, pdedicatedTerminal); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RDPPort(long prdpPort) + { + if(prdpPort == 0 || prdpPort > 65535) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_RDPPort, prdpPort); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RDPPort(long * prdpPort) const + { + return Outer()->GetProperty(Outer()->m_RDPPort, prdpPort); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_EnableMouse(long penableMouse) + { + return S_FALSE; // TBD? implement? + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EnableMouse(long * penableMouse) const + { + return S_FALSE; // TBD? implement? + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DisableCtrlAltDel(long pdisableCtrlAltDel) + { + return Outer()->SetProperty(Outer()->m_DisableCtrlAltDel, pdisableCtrlAltDel); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DisableCtrlAltDel(long * pdisableCtrlAltDel) const + { + return Outer()->GetProperty(Outer()->m_DisableCtrlAltDel, pdisableCtrlAltDel); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_EnableWindowsKey(long penableWindowsKey) + { + return Outer()->SetProperty(Outer()->m_EnableWindowsKey, penableWindowsKey); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EnableWindowsKey(long * penableWindowsKey) const + { + return Outer()->GetProperty(Outer()->m_EnableWindowsKey, penableWindowsKey); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DoubleClickDetect(long pdoubleClickDetect) + { + return Outer()->SetProperty(Outer()->m_DoubleClickDetect, pdoubleClickDetect); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DoubleClickDetect(long * pdoubleClickDetect) const + { + return Outer()->GetProperty(Outer()->m_DoubleClickDetect, pdoubleClickDetect); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_MaximizeShell(long pmaximizeShell) + { + return Outer()->SetProperty(Outer()->m_MaximizeShell, pmaximizeShell); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_MaximizeShell(long * pmaximizeShell) const + { + return Outer()->GetProperty(Outer()->m_MaximizeShell, pmaximizeShell); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyFullScreen(long photKeyFullScreen) + { + return Outer()->SetProperty(Outer()->m_HotKeyFullScreen, photKeyFullScreen); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyFullScreen(long * photKeyFullScreen) const + { + return Outer()->GetProperty(Outer()->m_HotKeyFullScreen, photKeyFullScreen); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyCtrlEsc(long photKeyCtrlEsc) + { + return Outer()->SetProperty(Outer()->m_HotKeyCtrlEsc, photKeyCtrlEsc); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyCtrlEsc(long * photKeyCtrlEsc) const + { + return Outer()->GetProperty(Outer()->m_HotKeyCtrlEsc, photKeyCtrlEsc); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltEsc(long photKeyAltEsc) + { + return Outer()->SetProperty(Outer()->m_HotKeyAltEsc, photKeyAltEsc); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltEsc(long * photKeyAltEsc) const + { + return Outer()->GetProperty(Outer()->m_HotKeyAltEsc, photKeyAltEsc); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltTab(long photKeyAltTab) + { + return Outer()->SetProperty(Outer()->m_HotKeyAltTab, photKeyAltTab); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltTab(long * photKeyAltTab) const + { + return Outer()->GetProperty(Outer()->m_HotKeyAltTab, photKeyAltTab); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltShiftTab(long photKeyAltShiftTab) + { + return Outer()->SetProperty(Outer()->m_HotKeyAltShiftTab, photKeyAltShiftTab); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltShiftTab(long * photKeyAltShiftTab) const + { + return Outer()->GetProperty(Outer()->m_HotKeyAltShiftTab, photKeyAltShiftTab); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltSpace(long photKeyAltSpace) + { + return Outer()->SetProperty(Outer()->m_HotKeyAltSpace, photKeyAltSpace); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltSpace(long * photKeyAltSpace) const + { + return Outer()->GetProperty(Outer()->m_HotKeyAltSpace, photKeyAltSpace); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyCtrlAltDel(long photKeyCtrlAltDel) + { + return Outer()->SetProperty(Outer()->m_HotKeyCtrlAltDel, photKeyCtrlAltDel); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyCtrlAltDel(long * photKeyCtrlAltDel) const + { + return Outer()->GetProperty(Outer()->m_HotKeyCtrlAltDel, photKeyCtrlAltDel); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_orderDrawThreshold(long porderDrawThreshold) + { + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_orderDrawThreshold(long * porderDrawThreshold) const + { + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapCacheSize(long pbitmapCacheSize) + { + // NOTE: the upper bound of "32" for a field with a default value of 1500 seems to be a bug + if(pbitmapCacheSize < 0 || pbitmapCacheSize > 32) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_BitmapCacheSize, pbitmapCacheSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapCacheSize(long * pbitmapCacheSize) const + { + return Outer()->GetProperty(Outer()->m_BitmapCacheSize, pbitmapCacheSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapVirtualCacheSize(long pbitmapVirtualCacheSize) + { + if(pbitmapVirtualCacheSize < 0 || pbitmapVirtualCacheSize > 32) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_BitmapVirtualCacheSize, pbitmapVirtualCacheSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCacheSize(long * pbitmapVirtualCacheSize) const + { + return Outer()->GetProperty(Outer()->m_BitmapVirtualCacheSize, pbitmapVirtualCacheSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ScaleBitmapCachesByBPP(long pbScale) + { + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ScaleBitmapCachesByBPP(long * pbScale) const + { + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_NumBitmapCaches(long pnumBitmapCaches) + { + return Outer()->SetProperty(Outer()->m_NumBitmapCaches, pnumBitmapCaches); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_NumBitmapCaches(long * pnumBitmapCaches) const + { + return Outer()->GetProperty(Outer()->m_NumBitmapCaches, pnumBitmapCaches); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_CachePersistenceActive(long pcachePersistenceActive) + { + return Outer()->SetProperty(Outer()->m_CachePersistenceActive, pcachePersistenceActive); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_CachePersistenceActive(long * pcachePersistenceActive) const + { + return Outer()->GetProperty(Outer()->m_CachePersistenceActive, pcachePersistenceActive); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_PersistCacheDirectory(BSTR rhs) + { + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_brushSupportLevel(long pbrushSupportLevel) + { + return Outer()->SetProperty(Outer()->m_brushSupportLevel, pbrushSupportLevel); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_brushSupportLevel(long * pbrushSupportLevel) const + { + return Outer()->GetProperty(Outer()->m_brushSupportLevel, pbrushSupportLevel); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_minInputSendInterval(long pminInputSendInterval) + { + // TODO + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_minInputSendInterval(long * pminInputSendInterval) const + { + // TODO + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_InputEventsAtOnce(long pinputEventsAtOnce) + { + // TODO + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_InputEventsAtOnce(long * pinputEventsAtOnce) const + { + // TODO + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_maxEventCount(long pmaxEventCount) + { + // TODO + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_maxEventCount(long * pmaxEventCount) const + { + // TODO + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_keepAliveInterval(long pkeepAliveInterval) + { + if(pkeepAliveInterval && pkeepAliveInterval < 10) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_keepAliveInternal, pkeepAliveInterval); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_keepAliveInterval(long * pkeepAliveInterval) const + { + return Outer()->GetProperty(Outer()->m_keepAliveInternal, pkeepAliveInterval); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_shutdownTimeout(long pshutdownTimeout) + { + if(pshutdownTimeout >= 600) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_shutdownTimeout, pshutdownTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_shutdownTimeout(long * pshutdownTimeout) const + { + return Outer()->GetProperty(Outer()->m_shutdownTimeout, pshutdownTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_overallConnectionTimeout(long poverallConnectionTimeout) + { + if(poverallConnectionTimeout < 0 || poverallConnectionTimeout >= 600) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_overallConnectionTimeout, poverallConnectionTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_overallConnectionTimeout(long * poverallConnectionTimeout) const + { + return Outer()->GetProperty(Outer()->m_overallConnectionTimeout, poverallConnectionTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_singleConnectionTimeout(long psingleConnectionTimeout) + { + if(psingleConnectionTimeout >= 600) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_singleConnectionTimeout, psingleConnectionTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_singleConnectionTimeout(long * psingleConnectionTimeout) const + { + return Outer()->GetProperty(Outer()->m_singleConnectionTimeout, psingleConnectionTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_KeyboardType(long pkeyboardType) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardType(long * pkeyboardType) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_KeyboardSubType(long pkeyboardSubType) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardSubType(long * pkeyboardSubType) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_KeyboardFunctionKey(long pkeyboardFunctionKey) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardFunctionKey(long * pkeyboardFunctionKey) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_WinceFixedPalette(long pwinceFixedPalette) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_WinceFixedPalette(long * pwinceFixedPalette) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ConnectToServerConsole(VARIANT_BOOL pConnectToConsole) + { + return Outer()->SetProperty(Outer()->m_ConnectToServerConsole, pConnectToConsole); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ConnectToServerConsole(VARIANT_BOOL * pConnectToConsole) const + { + return Outer()->GetProperty(Outer()->m_ConnectToServerConsole, pConnectToConsole); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapPersistence(long pbitmapPersistence) + { + return put_BitmapPeristence(pbitmapPersistence); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapPersistence(long * pbitmapPersistence) const + { + return get_BitmapPeristence(pbitmapPersistence); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_MinutesToIdleTimeout(long pminutesToIdleTimeout) + { + if(pminutesToIdleTimeout > 240) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_MinutesToIdleTimeout, pminutesToIdleTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_MinutesToIdleTimeout(long * pminutesToIdleTimeout) const + { + return Outer()->GetProperty(Outer()->m_MinutesToIdleTimeout, pminutesToIdleTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_SmartSizing(VARIANT_BOOL pfSmartSizing) + { + return Outer()->SetProperty(Outer()->m_SmartSizing, pfSmartSizing); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SmartSizing(VARIANT_BOOL * pfSmartSizing) const + { + return Outer()->GetProperty(Outer()->m_SmartSizing, pfSmartSizing); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RdpdrLocalPrintingDocName(BSTR pLocalPrintingDocName) + { + return Outer()->SetProperty(Outer()->m_RdpdrLocalPrintingDocName, pLocalPrintingDocName); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrLocalPrintingDocName(BSTR * pLocalPrintingDocName) const + { + return Outer()->GetProperty(Outer()->m_RdpdrLocalPrintingDocName, pLocalPrintingDocName); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RdpdrClipCleanTempDirString(BSTR clipCleanTempDirString) + { + return Outer()->SetProperty(Outer()->m_RdpdrClipCleanTempDirString, clipCleanTempDirString); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrClipCleanTempDirString(BSTR * clipCleanTempDirString) const + { + return Outer()->GetProperty(Outer()->m_RdpdrClipCleanTempDirString, clipCleanTempDirString); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RdpdrClipPasteInfoString(BSTR clipPasteInfoString) + { + return Outer()->SetProperty(Outer()->m_RdpdrClipPasteInfoString, clipPasteInfoString); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrClipPasteInfoString(BSTR * clipPasteInfoString) const + { + return Outer()->GetProperty(Outer()->m_RdpdrClipPasteInfoString, clipPasteInfoString); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ClearTextPassword(BSTR rhs) + { + return Outer()->put_ClearTextPassword(rhs); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DisplayConnectionBar(VARIANT_BOOL pDisplayConnectionBar) + { + if(!pDisplayConnectionBar && Outer()->IsSafeForScripting()) + return E_FAIL; + + return Outer()->SetProperty(Outer()->m_DisplayConnectionBar, pDisplayConnectionBar); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DisplayConnectionBar(VARIANT_BOOL * pDisplayConnectionBar) const + { + return Outer()->GetProperty(Outer()->m_DisplayConnectionBar, pDisplayConnectionBar); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_PinConnectionBar(VARIANT_BOOL pPinConnectionBar) + { + if(Outer()->IsSafeForScripting()) + return E_NOTIMPL; + + return Outer()->SetProperty(Outer()->m_PinConnectionBar, pPinConnectionBar); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_PinConnectionBar(VARIANT_BOOL * pPinConnectionBar) const + { + return Outer()->GetProperty(Outer()->m_PinConnectionBar, pPinConnectionBar); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_GrabFocusOnConnect(VARIANT_BOOL pfGrabFocusOnConnect) + { + return Outer()->SetProperty(Outer()->m_GrabFocusOnConnect, pfGrabFocusOnConnect); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_GrabFocusOnConnect(VARIANT_BOOL * pfGrabFocusOnConnect) const + { + return Outer()->GetProperty(Outer()->m_GrabFocusOnConnect, pfGrabFocusOnConnect); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_LoadBalanceInfo(BSTR pLBInfo) + { + return Outer()->SetProperty(Outer()->m_LoadBalanceInfo, pLBInfo); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_LoadBalanceInfo(BSTR * pLBInfo) const + { + return Outer()->GetProperty(Outer()->m_LoadBalanceInfo, pLBInfo); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectDrives(VARIANT_BOOL pRedirectDrives) + { + return Outer()->SetProperty(Outer()->m_RedirectDrives, pRedirectDrives); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectDrives(VARIANT_BOOL * pRedirectDrives) const + { + return Outer()->GetProperty(Outer()->m_RedirectDrives, pRedirectDrives); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectPrinters(VARIANT_BOOL pRedirectPrinters) + { + return Outer()->SetProperty(Outer()->m_RedirectPrinters, pRedirectPrinters); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectPrinters(VARIANT_BOOL * pRedirectPrinters) const + { + return Outer()->GetProperty(Outer()->m_RedirectPrinters, pRedirectPrinters); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectPorts(VARIANT_BOOL pRedirectPorts) + { + return Outer()->SetProperty(Outer()->m_RedirectPorts, pRedirectPorts); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectPorts(VARIANT_BOOL * pRedirectPorts) const + { + return Outer()->GetProperty(Outer()->m_RedirectPorts, pRedirectPorts); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectSmartCards(VARIANT_BOOL pRedirectSmartCards) + { + return Outer()->SetProperty(Outer()->m_RedirectSmartCards, pRedirectSmartCards); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectSmartCards(VARIANT_BOOL * pRedirectSmartCards) const + { + return Outer()->GetProperty(Outer()->m_RedirectSmartCards, pRedirectSmartCards); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapVirtualCache16BppSize(long pBitmapVirtualCache16BppSize) + { + if(pBitmapVirtualCache16BppSize < 0 || pBitmapVirtualCache16BppSize > 32) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_BitmapVirtualCache16BppSize, pBitmapVirtualCache16BppSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCache16BppSize(long * pBitmapVirtualCache16BppSize) const + { + return Outer()->GetProperty(Outer()->m_BitmapVirtualCache16BppSize, pBitmapVirtualCache16BppSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapVirtualCache24BppSize(long pBitmapVirtualCache24BppSize) + { + if(pBitmapVirtualCache24BppSize < 0 || pBitmapVirtualCache24BppSize > 32) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_BitmapVirtualCache24BppSize, pBitmapVirtualCache24BppSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCache24BppSize(long * pBitmapVirtualCache24BppSize) const + { + return Outer()->GetProperty(Outer()->m_BitmapVirtualCache24BppSize, pBitmapVirtualCache24BppSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_PerformanceFlags(long pDisableList) + { + return Outer()->SetProperty(Outer()->m_PerformanceFlags, pDisableList); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_PerformanceFlags(long * pDisableList) const + { + return Outer()->GetProperty(Outer()->m_PerformanceFlags, pDisableList); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ConnectWithEndpoint(VARIANT * rhs) + { + // TBD? the Microsoft client implements this, but what does it mean? + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_NotifyTSPublicKey(VARIANT_BOOL pfNotify) + { + return Outer()->SetProperty(Outer()->m_NotifyTSPublicKey, pfNotify); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_NotifyTSPublicKey(VARIANT_BOOL * pfNotify) const + { + return Outer()->GetProperty(Outer()->m_NotifyTSPublicKey, pfNotify); + } + + /* IMsRdpClientAdvancedSettings2 */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_CanAutoReconnect(VARIANT_BOOL * pfCanAutoReconnect) const + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::put_EnableAutoReconnect(VARIANT_BOOL pfEnableAutoReconnect) + { + return Outer()->SetProperty(Outer()->m_EnableAutoReconnect, pfEnableAutoReconnect); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_EnableAutoReconnect(VARIANT_BOOL * pfEnableAutoReconnect) const + { + return Outer()->GetProperty(Outer()->m_EnableAutoReconnect, pfEnableAutoReconnect); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::put_MaxReconnectAttempts(long pMaxReconnectAttempts) + { + if(pMaxReconnectAttempts < 0 || pMaxReconnectAttempts > 200) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_MaxReconnectAttempts, pMaxReconnectAttempts); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_MaxReconnectAttempts(long * pMaxReconnectAttempts) const + { + return Outer()->GetProperty(Outer()->m_MaxReconnectAttempts, pMaxReconnectAttempts); + } + + /* IMsRdpClientAdvancedSettings3 */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::put_ConnectionBarShowMinimizeButton(VARIANT_BOOL pfShowMinimize) + { + return Outer()->SetProperty(Outer()->m_ConnectionBarShowMinimizeButton, pfShowMinimize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::get_ConnectionBarShowMinimizeButton(VARIANT_BOOL * pfShowMinimize) const + { + return Outer()->GetProperty(Outer()->m_ConnectionBarShowMinimizeButton, pfShowMinimize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::put_ConnectionBarShowRestoreButton(VARIANT_BOOL pfShowRestore) + { + return Outer()->SetProperty(Outer()->m_ConnectionBarShowRestoreButton, pfShowRestore); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::get_ConnectionBarShowRestoreButton(VARIANT_BOOL * pfShowRestore) const + { + return Outer()->GetProperty(Outer()->m_ConnectionBarShowRestoreButton, pfShowRestore); + } + + /* IMsRdpClientAdvancedSettings4 */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings4::put_AuthenticationLevel(unsigned int puiAuthLevel) + { + // TODO: this isn't implemented in rdesktop yet... + return Outer()->SetProperty(Outer()->m_AuthenticationLevel, puiAuthLevel); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings4::get_AuthenticationLevel(unsigned int * puiAuthLevel) const + { + return Outer()->GetProperty(Outer()->m_AuthenticationLevel, puiAuthLevel); + } + } + m_advancedSettings; + + template HRESULT GetAdvancedSettings(Interface ** ppAdvSettings) + { + addRef(); + *ppAdvSettings = &m_advancedSettings; + return S_OK; + } + + /* Secured settings wrapper */ + friend class SecuredSettings; + + class SecuredSettings SEALED_: public MSTSCLib::IMsRdpClientSecuredSettings + { + private: + RdpClient * Outer() + { + return InnerToOuter(this); + } + + const RdpClient * Outer() const + { + return InnerToOuter(this); + } + + /* IDispatch type information */ + ITypeInfo * m_dispTypeInfo; + + HRESULT LoadDispTypeInfo() + { + if(m_dispTypeInfo) + return S_OK; + + HRESULT hr = Outer()->LoadTypeLibrary(); + + if(FAILED(hr)) + return hr; + + assert(MSTSCLib::IID_IMsRdpClientSecuredSettings == MSTSCLib_Redist::IID_IMsRdpClientSecuredSettings); + + hr = Outer()->m_typeLib->GetTypeInfoOfGuid(MSTSCLib::IID_IMsRdpClientSecuredSettings, &m_dispTypeInfo); + + if(FAILED(hr)) + return hr; + + assert(m_dispTypeInfo); + return S_OK; + } + + HRESULT AcquireDispTypeInfo(ITypeInfo ** ppTI) + { + HRESULT hr = LoadDispTypeInfo(); + + if(FAILED(hr)) + return hr; + + m_dispTypeInfo->AddRef(); + *ppTI = m_dispTypeInfo; + return S_OK; + } + + public: + ~SecuredSettings() + { + if(m_dispTypeInfo) + m_dispTypeInfo->Release(); + } + + /* IUnknown */ + virtual STDMETHODIMP IUnknown::QueryInterface(REFIID riid, void ** ppvObject) + { + using namespace MSTSCLib; + + if + ( + riid == IID_IUnknown || + riid == IID_IDispatch || + riid == IID_IMsTscSecuredSettings || + riid == IID_IMsRdpClientSecuredSettings + ) + { + *ppvObject = this; + Outer()->addRef(); + return S_OK; + } + else + { + *ppvObject = NULL; + return E_NOINTERFACE; + } + } + + virtual STDMETHODIMP_(ULONG) IUnknown::AddRef() + { + return Outer()->addRef(); + } + + virtual STDMETHODIMP_(ULONG) IUnknown::Release() + { + return Outer()->release(); + } + + /* IDispatch */ + virtual STDMETHODIMP IDispatch::GetTypeInfoCount(UINT * pctinfo) + { + *pctinfo = 1; + return S_OK; + } + + virtual STDMETHODIMP IDispatch::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo ** ppTInfo) + { + if(iTInfo != 0) + return DISP_E_BADINDEX; + + return AcquireDispTypeInfo(ppTInfo); + } + + virtual STDMETHODIMP IDispatch::GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId) + { + HRESULT hr = LoadDispTypeInfo(); + + if(FAILED(hr)) + return hr; + + return m_dispTypeInfo->GetIDsOfNames(rgszNames, cNames, rgDispId); + } + + virtual STDMETHODIMP IDispatch::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pDispParams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, UINT * puArgErr) + { + return m_dispTypeInfo->Invoke + ( + static_cast(this), + dispIdMember, + wFlags, + pDispParams, + pVarResult, + pExcepInfo, + puArgErr + ); + } + + /* IMsTscSecuredSettings */ + virtual STDMETHODIMP IMsTscSecuredSettings::put_StartProgram(BSTR pStartProgram) + { + return Outer()->SetProperty(Outer()->m_StartProgram, pStartProgram); + } + + virtual STDMETHODIMP IMsTscSecuredSettings::get_StartProgram(BSTR * pStartProgram) const + { + return Outer()->GetProperty(Outer()->m_StartProgram, pStartProgram); + } + + virtual STDMETHODIMP IMsTscSecuredSettings::put_WorkDir(BSTR pWorkDir) + { + return Outer()->SetProperty(Outer()->m_WorkDir, pWorkDir); + } + + virtual STDMETHODIMP IMsTscSecuredSettings::get_WorkDir(BSTR * pWorkDir) const + { + return Outer()->GetProperty(Outer()->m_WorkDir, pWorkDir); + } + + virtual STDMETHODIMP IMsTscSecuredSettings::put_FullScreen(long pfFullScreen) + { + return Outer()->put_FullScreen(!!pfFullScreen); + } + + virtual STDMETHODIMP IMsTscSecuredSettings::get_FullScreen(long * pfFullScreen) const + { + return Outer()->GetProperty(Outer()->m_FullScreen, pfFullScreen); + } + + /* IMsRdpClientSecuredSettings */ + virtual STDMETHODIMP IMsRdpClientSecuredSettings::put_KeyboardHookMode(long pkeyboardHookMode) + { + if(pkeyboardHookMode < 0 || pkeyboardHookMode > 2) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_KeyboardHookMode, pkeyboardHookMode); + } + + virtual STDMETHODIMP IMsRdpClientSecuredSettings::get_KeyboardHookMode(long * pkeyboardHookMode) const + { + return Outer()->GetProperty(Outer()->m_KeyboardHookMode, pkeyboardHookMode); + } + + virtual STDMETHODIMP IMsRdpClientSecuredSettings::put_AudioRedirectionMode(long pAudioRedirectionMode) + { + if(pAudioRedirectionMode < 0 || pAudioRedirectionMode > 2) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_AudioRedirectionMode, pAudioRedirectionMode); + } + + virtual STDMETHODIMP IMsRdpClientSecuredSettings::get_AudioRedirectionMode(long * pAudioRedirectionMode) const + { + return Outer()->GetProperty(Outer()->m_AudioRedirectionMode, pAudioRedirectionMode); + } + } + m_securedSettings; + + template HRESULT GetSecuredSettings(Interface ** ppSecuredSettings) + { + if(!m_SecuredSettingsEnabled) + return E_FAIL; + + addRef(); + *ppSecuredSettings = &m_securedSettings; + return S_OK; + } + + /* Type library loading */ + HRESULT LoadTypeLibrary() + { + if(m_typeLib) + return S_OK; + + // Get the DLL name of the ActiveX control + WCHAR szPath[MAX_PATH + 1]; + DWORD cchPathLen = GetModuleFileNameW(GetCurrentModule(), szPath, ARRAYSIZE(szPath) - 1); + + if(cchPathLen == 0) + return HRESULT_FROM_WIN32(GetLastError()); + + if(cchPathLen > ((ARRAYSIZE(szPath) - 1) - 2)) + return E_FAIL; + + // Append the resource id of the type library + assert(m_typeLibIndex < 10); + + szPath[cchPathLen + 0] = L'\\'; + szPath[cchPathLen + 1] = static_cast(L'0' + m_typeLibIndex); + szPath[cchPathLen + 2] = 0; + + // Load the type library + HRESULT hr = LoadTypeLibEx(szPath, REGKIND_NONE, &m_typeLib); + + if(FAILED(hr)) + return hr; + + assert(m_typeLib); + return S_OK; + } + + /* IDispatch type information */ + HRESULT LoadDispTypeInfo() + { + if(m_dispTypeInfo) + return S_OK; + + HRESULT hr = LoadTypeLibrary(); + + if(FAILED(hr)) + return hr; + + assert(MSTSCLib::IID_IMsRdpClient4 == MSTSCLib_Redist::IID_IMsRdpClient4); + + hr = m_typeLib->GetTypeInfoOfGuid(MSTSCLib::IID_IMsRdpClient4, &m_dispTypeInfo); + + if(FAILED(hr)) + return hr; + + assert(m_dispTypeInfo); + return S_OK; + } + + HRESULT AcquireDispTypeInfo(ITypeInfo ** ppTI) + { + HRESULT hr = LoadDispTypeInfo(); + + if(FAILED(hr)) + return hr; + + m_dispTypeInfo->AddRef(); + *ppTI = m_dispTypeInfo; + return S_OK; + } + +public: + /* Helpers for our various embedded children */ + static RdpClient * InnerToOuter(RdpClientInner * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_inner); + } + + static RdpClient * InnerToOuter(AdvancedSettings * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_advancedSettings); + } + + static RdpClient * InnerToOuter(SecuredSettings * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_securedSettings); + } + + static RdpClient * InnerToOuter(RDPCLIENT * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_protocolState); + } + + static const RdpClient * InnerToOuter(const RdpClientInner * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_inner); + } + + static const RdpClient * InnerToOuter(const AdvancedSettings * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_advancedSettings); + } + + static const RdpClient * InnerToOuter(const SecuredSettings * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_securedSettings); + } + + static const RdpClient * InnerToOuter(const RDPCLIENT * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_protocolState); + } + + RdpClientUI * GetUI() const + { + assert(m_clientUI); + return m_clientUI; + } + + /* Glue for rdesktop-core */ +public: + static bool OnPublicKey(RDPCLIENT * This, unsigned char * key, unsigned int key_size) + { + return InnerToOuter(This)->OnPublicKey(key, key_size); + } + + static void OnLogon(RDPCLIENT * This) + { + return InnerToOuter(This)->OnLogon(); + } + + static bool OnRedirect + ( + RDPCLIENT * This, + uint32 flags, + uint32 server_len, + wchar_t * server, + uint32 cookie_len, + char * cookie, + uint32 username_len, + wchar_t * username, + uint32 domain_len, + wchar_t * domain, + uint32 password_len, + wchar_t * password + ) + { + return InnerToOuter(This)->OnRedirect + ( + flags, + server_len, + server, + cookie_len, + cookie, + username_len, + username, + domain_len, + domain, + password_len, + password + ); + } + +private: + bool OnPublicKey(unsigned char * key, unsigned int key_size) + { + HRESULT hr = FireReceivedTSPublicKey(key, key_size); + + if(FAILED(hr)) + { + m_protocolState.disconnect_reason = 262; + return false; + } + + return hr == S_OK; + } + + void OnLogon() + { + m_loggedIn = true; + FireLoginComplete(); + } + + bool OnRedirect + ( + uint32 flags, + uint32 server_len, + wchar_t * server, + uint32 cookie_len, + char * cookie, + uint32 username_len, + wchar_t * username, + uint32 domain_len, + wchar_t * domain, + uint32 password_len, + wchar_t * password + ) + { + assert(m_Connected); + assert(!InsideApartment()); + assert(IsWindow(m_controlWindow)); + + RedirectArguments redirectArgs = + { + flags, + server_len, + server, + cookie_len, + cookie, + username_len, + username, + domain_len, + domain, + password_len, + password + }; + + return SendMessage(m_controlWindow, RDPC_WM_REDIRECT, 0, reinterpret_cast(&redirectArgs)) == 0; + } + +private: + static DWORD WINAPI ProtocolLoopThreadProc(LPVOID lpParam) + { + static_cast(lpParam)->ProtocolLoop(); + return 0; + } + + static VOID CALLBACK ConnectionTimerAPC(LPVOID, DWORD, DWORD) + { + } + + // FIXME: various potential inconsistencies due to lack of detailed documentation of expected semantics + void ProtocolLoop() + { + HANDLE waitingReconnection = NULL; + + // Retrieve the local hostname to be passed to the server + WCHAR hostname[MAX_COMPUTERNAME_LENGTH + 1]; + DWORD hostnameLen = ARRAYSIZE(hostname); + + if(!GetComputerNameW(hostname, &hostnameLen)) + hostname[0] = 0; + + // Set some connection flags + uint32 flags = RDP_LOGON_NORMAL; + + if(m_Compress) + flags |= RDP_LOGON_COMPRESSION | RDP_LOGON_COMPRESSION2; + + if(m_AudioRedirectionMode == 1) + flags |= RDP_LOGON_LEAVE_AUDIO; + + if(m_ClearTextPassword) + flags |= RDP_LOGON_AUTO; + + // Notify the container that the connection process is beginning now + FireConnecting(); + + // Set the overall connection timer, if a timeout is set + // BUGBUG: the timeout semantics are ambiguous and have been most probably misinterpreted + HANDLE overallConnectionTimer = NULL; + LARGE_INTEGER overallTimeout; + + if(m_overallConnectionTimeout) + { + overallTimeout.QuadPart = - ((m_overallConnectionTimeout * 1000 * 1000 * 1000) / 100); + + overallConnectionTimer = CreateWaitableTimer(NULL, FALSE, NULL); + + if(overallConnectionTimer == NULL) + goto l_Disconnect; + } + + if(overallConnectionTimer) + SetWaitableTimer(overallConnectionTimer, &overallTimeout, 0, ConnectionTimerAPC, NULL, FALSE); + + // Initial connection + BOOL disconnected = rdp_connect + ( + &m_protocolState, + m_Server, + flags, + m_UserName, + m_Domain, + m_ClearTextPassword, + m_StartProgram, + m_WorkDir, + hostname, + m_LoadBalanceInfo + ); + + if(overallConnectionTimer) + CancelWaitableTimer(overallConnectionTimer); + + if(disconnected) + goto l_Disconnect; + + // TODO: set the disconnect reason for every instance in which we abort the loop + for(;;) + { + BOOL deactivated = False; + uint32 extendedDisconnectReason = 0; + + m_actuallyConnected = true; + + // Notify the container of the successful connection + FireConnected(); + + // Main protocol loop + m_loggedIn = false; + rdp_main_loop(&m_protocolState, &deactivated, &extendedDisconnectReason); + rdp_disconnect(&m_protocolState); + + m_actuallyConnected = false; + + // Redirection + // BUGBUG: redirection is very messy and probably this implementation is not "canonical" + if(m_protocolState.redirect) + { + m_protocolState.redirect = False; + rdp_reset_state(&m_protocolState); + + // TODO: reset connection parameters + // This has to be done in the main thread, so use SendMessage on the control window + + flags |= RDP_LOGON_AUTO; + + // retry + continue; + } + + // Disconnection + m_ExtendedDisconnectReason = static_cast(extendedDisconnectReason); + + // Clean disconnection + if(deactivated) + break; + + BOOL success; + + long autoReconnections = 0; + long totalReconnections = 0; + + // Reconnection + // BUGBUG: reconnection semantics may not be entirely accurate + do + { + ++ totalReconnections; + + // ask the container whether we should reconnect + long reconnectMode = FireAutoReconnecting(m_protocolState.disconnect_reason, totalReconnections); + + // do not reconnect + if(reconnectMode == MSTSCLib::autoReconnectContinueStop) + goto l_Disconnect; + + // the container will reconnect or abort manually + if(reconnectMode == MSTSCLib::autoReconnectContinueManual) + { + assert(!m_reconnectAborted); + assert(m_protocolThreadWaitingReconnection == NULL); + + if(waitingReconnection == NULL) + { + waitingReconnection = CreateEvent(NULL, TRUE, FALSE, NULL); + + if(waitingReconnection == NULL) + // TODO: fatal error + goto l_Disconnect; + } + + m_protocolThreadWaitingReconnection = waitingReconnection; + + WaitForSingleObject(waitingReconnection, INFINITE); + + m_protocolThreadWaitingReconnection = NULL; + + if(m_reconnectAborted) + { + // FIXME? do we set the disconnection status here? + goto l_Disconnect; + } + } + // reconnect automatically + else + { + // automatic reconnection is disabled + if(m_EnableAutoReconnect) + break; + + // too many consecutive automatic reconnections + if(autoReconnections == m_MaxReconnectAttempts) + break; + + ++ autoReconnections; + } + + if(overallConnectionTimer) + SetWaitableTimer(overallConnectionTimer, &overallTimeout, 0, ConnectionTimerAPC, NULL, FALSE); + + // Reconnection + success = rdp_reconnect + ( + &m_protocolState, + m_Server, + flags, + m_UserName, + m_Domain, + m_ClearTextPassword, + m_StartProgram, + m_WorkDir, + hostname, + m_LoadBalanceInfo + ); + + if(overallConnectionTimer) + CancelWaitableTimer(overallConnectionTimer); + } + while(!success); + } + +l_Disconnect: + // Disconnected + FireDisconnected(m_protocolState.disconnect_reason); + + if(overallConnectionTimer) + CloseHandle(overallConnectionTimer); + } + + void JoinProtocolThread() + { + assert(m_protocolThread); + WaitForSingleObject(m_protocolThread, INFINITE); + CloseHandle(m_protocolThread); + m_protocolThread = NULL; + } + + void TerminateProtocolThread() + { + assert(m_protocolThread); + + // wake it up if it's waiting for a manual reconnection + if(m_protocolThreadWaitingReconnection) + { + assert(!m_reconnectAborted); + m_reconnectAborted = true; + SetEvent(m_protocolThreadWaitingReconnection); + } + // otherwise, attempt to interrupt any current blocking operation + else + { + // shutdown(m_protocolState.tcp.sock, SD_BOTH); // TBD: maybe in the future? + QueueUserAPC(DisconnectAPC, m_protocolThread, 0); + } + + assert(m_protocolThreadWaitingReconnection == NULL); + } + + void PerformDisconnect(long reason) + { + assert(InsideApartment()); + assert(m_Connected); + + // TODO: notify virtual channels + + // TODO: do any other disconnection work here... + + // Put the control in the disconnected state + m_Connected = false; + m_loggedIn = false; + + // Notify the container + VARIANTARG arg = { }; + + arg.vt = VT_I4; + arg.lVal = reason; + + FireEventInsideApartment(4, &arg, 1); + } + +public: + /* Startup initialization */ + static BOOL Startup() + { + if(!RdpClientUI::Startup()) + return FALSE; + + WNDCLASSEX wcex = { sizeof(wcex) }; + + wcex.style = CS_HREDRAW | CS_VREDRAW; + wcex.lpfnWndProc = ControlWindowProc; + wcex.hInstance = GetCurrentModule(); + wcex.hCursor = LoadCursor(NULL, IDC_ARROW); + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); + wcex.lpszClassName = TEXT("MissTosca_Control"); + + return RegisterClassEx(&wcex); + } + + static void Shutdown() + { + UnregisterClass(TEXT("MissTosca_Control"), GetCurrentModule()); + } + + /* Class factory */ + static HRESULT CreateInstance(REFCLSID rclsid, unsigned libIndex, IUnknown * punkOuter, REFIID riid, void ** ppObj) + { + RdpClient * obj = new RdpClient(rclsid, libIndex, punkOuter); + + if(obj == NULL) + return E_OUTOFMEMORY; + + HRESULT hr = obj->m_inner.QueryInterface(riid, ppObj); + + if(FAILED(hr)) + { + delete obj; + return hr; + } + + assert(obj->m_refCount == 1); + assert(*ppObj != NULL); + + return S_OK; + } + +private: + /* Connection point enumerator */ + class CEnumConnectionPoints: public IEnumConnectionPoints + { + private: + LONG m_refCount; + IConnectionPoint * m_cp; + bool m_done; + + public: + CEnumConnectionPoints(IConnectionPoint * cp): m_refCount(1), m_cp(cp), m_done(false) + { + assert(m_cp); + m_cp->AddRef(); + } + + CEnumConnectionPoints(const CEnumConnectionPoints& ecp): m_refCount(1), m_cp(ecp.m_cp), m_done(ecp.m_done) + { + assert(m_cp); + m_cp->AddRef(); + } + + ~CEnumConnectionPoints() + { + assert(m_cp); + m_cp->Release(); + } + + virtual STDMETHODIMP QueryInterface(REFIID riid, void ** ppvObject) + { + if(riid == IID_IUnknown || riid == IID_IEnumConnectionPoints) + { + *ppvObject = this; + return S_OK; + } + else + { + *ppvObject = NULL; + return E_NOINTERFACE; + } + } + + virtual STDMETHODIMP_(ULONG) AddRef() + { + return InterlockedIncrement(&m_refCount); + } + + virtual STDMETHODIMP_(ULONG) Release() + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + virtual STDMETHODIMP Next(ULONG cConnections, LPCONNECTIONPOINT * ppCP, ULONG * pcFetched) + { + if(cConnections == 0 || m_done) + return S_FALSE; + + m_done = true; + m_cp->AddRef(); + *ppCP = m_cp; + *pcFetched = 1; + + return S_OK; + } + + virtual STDMETHODIMP Skip(ULONG cConnections) + { + if(cConnections == 0) + return S_OK; + + if(cConnections == 1 && !m_done) + { + m_done = true; + return S_OK; + } + + assert(cConnections > 1 || m_done); + + return S_FALSE; + } + + virtual STDMETHODIMP Reset() + { + m_done = false; + return S_OK; + } + + virtual STDMETHODIMP Clone(IEnumConnectionPoints ** ppEnum) + { + if(ppEnum == NULL) + return E_POINTER; + + *ppEnum = new CEnumConnectionPoints(*this); + + if(*ppEnum == NULL) + return E_OUTOFMEMORY; + + return S_OK; + } + }; + + /* Pay no attention, ActiveX glue... */ + LRESULT ControlWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam) + { + switch(uMsg) + { + case WM_SIZE: + { + // TODO: resize UI + } + + return 0; + + case WM_PAINT: + { + LPCWSTR text = NULL; + + if(!m_Connected) + text = m_DisconnectedText; + else if(m_actuallyConnected) + text = m_ConnectedStatusText; + else + text = m_ConnectingText; + + RECT clientRect; + GetClientRect(m_controlWindow, &clientRect); + + PAINTSTRUCT ps; + HDC hdc = BeginPaint(m_controlWindow, &ps); + + SetBkColor(hdc, GetSysColor(COLOR_WINDOW)); + SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT)); + SelectObject(hdc, GetStockObject(SYSTEM_FONT)); + + RECT textRect = clientRect; + + DrawTextW + ( + hdc, + text, + -1, + &textRect, + DT_CENTER | DT_EDITCONTROL | DT_END_ELLIPSIS | DT_NOPREFIX | DT_WORDBREAK | DT_CALCRECT + ); + + if(textRect.right > clientRect.right) + textRect.right = clientRect.right; + + if(textRect.bottom > clientRect.bottom) + textRect.bottom = clientRect.bottom; + + textRect.left = (clientRect.right - textRect.right) / 2; + textRect.right += textRect.left; + textRect.top = (clientRect.bottom - textRect.bottom) / 2; + textRect.bottom += textRect.top; + + DrawTextW + ( + hdc, + text, + -1, + &textRect, + DT_CENTER | DT_EDITCONTROL | DT_END_ELLIPSIS | DT_NOPREFIX | DT_WORDBREAK + ); + + EndPaint(m_controlWindow, &ps); + } + + return 0; + + default: + { + LRESULT result; + + if(HandleEvent(uMsg, wParam, lParam, result)) + return result; + } + + break; + } + + return DefWindowProc(m_controlWindow, uMsg, wParam, lParam); + } + + static LRESULT CALLBACK ControlWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) + { + if(uMsg == WM_CREATE) + { + SetWindowLongPtr + ( + hwnd, + GWLP_USERDATA, + (LONG_PTR)reinterpret_cast(lParam)->lpCreateParams + ); + } + + RdpClient * Self = reinterpret_cast(GetWindowLongPtr(hwnd, GWLP_USERDATA)); + assert(Self); + + return Self->ControlWindowProc(uMsg, wParam, lParam); + } + + HRESULT CreateControlWindow(HWND hwndParent) + { + m_controlWindow = CreateWindow + ( + TEXT("MissTosca_Control"), + NULL, + WS_CHILD | WS_CLIPCHILDREN, + CW_USEDEFAULT, + CW_USEDEFAULT, + CW_USEDEFAULT, + CW_USEDEFAULT, + hwndParent, + NULL, + GetCurrentModule(), + this + ); + + if(m_controlWindow == NULL) + return HRESULT_FROM_WIN32(GetLastError()); + + m_UIParentWindowHandle = m_controlWindow; + return S_OK; + } + + HRESULT DestroyControlWindow() + { + if(m_controlWindow == NULL) + return S_FALSE; + + HWND controlWindow = NULL; + std::swap(controlWindow, m_controlWindow); + DestroyWindow(controlWindow); + return S_OK; + } + + HRESULT Activate(LONG iVerb, IOleClientSite * pActiveSite, HWND hwndParent, LPCRECT lprcPosRect) + { + if(pActiveSite == NULL) + pActiveSite = m_clientSite; + + if(pActiveSite == NULL) + return E_FAIL; + + // TODO: store this until we are closed or deactivated + IOleInPlaceSite * site; + + HRESULT hr = pActiveSite->QueryInterface(&site); + + if(FAILED(hr)) + return hr; + + IOleInPlaceFrame * frame = NULL; + IOleInPlaceUIWindow * uiWindow = NULL; + + for(;;) + { + hr = site->CanInPlaceActivate(); + + if(hr == S_FALSE) + hr = E_FAIL; + + if(FAILED(hr)) + break; + + site->OnInPlaceActivate(); + + if(hwndParent == NULL) + { + hr = site->GetWindow(&hwndParent); + + if(FAILED(hr)) + break; + } + + RECT rcPos; + RECT rcClip; + OLEINPLACEFRAMEINFO frameInfo = { sizeof(frameInfo) }; + + site->GetWindowContext(&frame, &uiWindow, &rcPos, &rcClip, &frameInfo); + + if(lprcPosRect == NULL) + lprcPosRect = &rcPos; + + if(m_controlWindow) + ShowWindow(m_controlWindow, SW_SHOW); + else + { + hr = CreateControlWindow(hwndParent); + + if(FAILED(hr)) + break; + } + + SetObjectRects(lprcPosRect, &rcClip); + + // UI activation + if((iVerb == OLEIVERB_PRIMARY || iVerb == OLEIVERB_UIACTIVATE) && !m_uiActive) + { + m_uiActive = true; + + hr = site->OnUIActivate(); + + if(FAILED(hr)) + break; + + SetWindowPos + ( + m_controlWindow, + NULL, + lprcPosRect->left, + lprcPosRect->top, + lprcPosRect->right - lprcPosRect->left, + lprcPosRect->bottom - lprcPosRect->top, + SWP_SHOWWINDOW + ); + + if(frame) + { + frame->SetActiveObject(this, NULL); + frame->SetBorderSpace(NULL); + } + + if(uiWindow) + { + uiWindow->SetActiveObject(this, NULL); + uiWindow->SetBorderSpace(NULL); + } + } + + break; + } + + if(uiWindow) + uiWindow->Release(); + + if(frame) + frame->Release(); + + site->Release(); + + if(SUCCEEDED(hr)) + pActiveSite->ShowObject(); + + return hr; + } + +public: + /* IUnknown */ + /* + NOTE: this is the delegating implementation, to support aggregation. The actual + implementation is RdpClientInner, above + */ + virtual STDMETHODIMP IUnknown::QueryInterface(REFIID riid, void ** ppvObject) + { + return m_punkOuter->QueryInterface(riid, ppvObject); + } + + virtual STDMETHODIMP_(ULONG) IUnknown::AddRef() + { + return m_punkOuter->AddRef(); + } + + virtual STDMETHODIMP_(ULONG) IUnknown::Release() + { + return m_punkOuter->Release(); + } + + /* IDispatch */ + virtual STDMETHODIMP IDispatch::GetTypeInfoCount(UINT * pctinfo) + { + *pctinfo = 1; + return S_OK; + } + + virtual STDMETHODIMP IDispatch::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo ** ppTInfo) + { + if(iTInfo != 0) + return DISP_E_BADINDEX; + + return AcquireDispTypeInfo(ppTInfo); + } + + virtual STDMETHODIMP IDispatch::GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId) + { + HRESULT hr = LoadDispTypeInfo(); + + if(FAILED(hr)) + return hr; + + return m_dispTypeInfo->GetIDsOfNames(rgszNames, cNames, rgDispId); + } + + virtual STDMETHODIMP IDispatch::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pDispParams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, UINT * puArgErr) + { + HRESULT hr = LoadDispTypeInfo(); + + if(FAILED(hr)) + return hr; + + return m_dispTypeInfo->Invoke + ( + static_cast(this), + dispIdMember, + wFlags, + pDispParams, + pVarResult, + pExcepInfo, + puArgErr + ); + } + + /* IConnectionPoint */ + virtual STDMETHODIMP GetConnectionInterface(IID * pIID) + { + if(pIID == NULL) + return E_POINTER; + + *pIID = MSTSCLib::DIID_IMsTscAxEvents; + return S_OK; + } + + virtual STDMETHODIMP GetConnectionPointContainer(IConnectionPointContainer ** ppCPC) + { + if(ppCPC == NULL) + return E_POINTER; + + addRef(); + *ppCPC = this; + return S_OK; + } + + virtual STDMETHODIMP Advise(IUnknown * pUnkSink, DWORD * pdwCookie) + { + MSTSCLib::IMsTscAxEvents * sink; + + if(FAILED(pUnkSink->QueryInterface(&sink))) + return CONNECT_E_CANNOTCONNECT; + + MSTSCLib::IMsTscAxEvents ** sinks = GetSinks(); + DWORD cookie = 0; + + if(m_EventSinksCount) + { + bool found = false; + + for(size_t i = 0; i < m_EventSinksCount; ++ i) + { + found = (sinks[i] == NULL); + + if(found) + { + cookie = static_cast(i); + break; + } + } + + if(!found) + { + MSTSCLib::IMsTscAxEvents ** newSinks = new MSTSCLib::IMsTscAxEvents *[m_EventSinksCount + 1]; + + if(newSinks == NULL) + { + sink->Release(); + return E_OUTOFMEMORY; + } + + std::copy(sinks, sinks + m_EventSinksCount, newSinks); + + m_EventSinks = newSinks; + sinks = newSinks; + + cookie = static_cast(m_EventSinksCount); + } + } + + sinks[cookie] = sink; + *pdwCookie = cookie; + + return S_OK; + } + + virtual STDMETHODIMP Unadvise(DWORD dwCookie) + { + MSTSCLib::IMsTscAxEvents ** sinks = GetSinks(); + + if(dwCookie >= m_EventSinksCount || sinks[dwCookie] == NULL) + return CONNECT_E_NOCONNECTION; + + sinks[dwCookie]->Release(); + sinks[dwCookie] = NULL; + + // BUGBUG: the array currently grows forever. Trim it whenever possible + + return S_OK; + } + + virtual STDMETHODIMP EnumConnections(IEnumConnections ** ppEnum) + { + // I see no real value in this + return E_NOTIMPL; + } + + /* IConnectionPointContainer */ + virtual STDMETHODIMP IConnectionPointContainer::EnumConnectionPoints(IEnumConnectionPoints ** ppEnum) + { + *ppEnum = new CEnumConnectionPoints(this); + + if(*ppEnum == NULL) + return E_OUTOFMEMORY; + + return S_OK; + } + + virtual STDMETHODIMP IConnectionPointContainer::FindConnectionPoint(REFIID riid, IConnectionPoint ** ppCP) + { + if(riid != MSTSCLib::DIID_IMsTscAxEvents) + return CONNECT_E_NOCONNECTION; + + addRef(); + *ppCP = this; + + return S_OK; + } + + /* IDataObject */ // 0/9 + virtual STDMETHODIMP IDataObject::GetData(FORMATETC * pformatetcIn, STGMEDIUM * pmedium) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::GetDataHere(FORMATETC * pformatetc, STGMEDIUM * pmedium) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::QueryGetData(FORMATETC * pformatetc) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::GetCanonicalFormatEtc(FORMATETC * pformatectIn, FORMATETC * pformatetcOut) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::SetData(FORMATETC * pformatetc, STGMEDIUM * pmedium, BOOL fRelease) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC ** ppenumFormatEtc) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::DAdvise(FORMATETC * pformatetc, DWORD advf, IAdviseSink * pAdvSink, DWORD * pdwConnection) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::DUnadvise(DWORD dwConnection) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::EnumDAdvise(IEnumSTATDATA ** ppenumAdvise) + { + return E_NOTIMPL; + } + + /* IObjectSafety */ + virtual STDMETHODIMP IObjectSafety::GetInterfaceSafetyOptions(REFIID riid, DWORD * pdwSupportedOptions, DWORD * pdwEnabledOptions) + { + if(pdwSupportedOptions == NULL || pdwEnabledOptions == NULL) + return E_POINTER; + + if(riid != IID_IDispatch) + return E_NOINTERFACE; + + *pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER; + *pdwEnabledOptions = m_SafetyOptions; + return S_OK; + } + + virtual STDMETHODIMP IObjectSafety::SetInterfaceSafetyOptions(REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions) + { + if(riid != IID_IDispatch) + return E_NOINTERFACE; + + m_SafetyOptions = dwEnabledOptions & (dwOptionSetMask & INTERFACESAFE_FOR_UNTRUSTED_CALLER); + return S_OK; + } + + /* IOleControl */ // 3/4 + virtual STDMETHODIMP IOleControl::GetControlInfo(CONTROLINFO * pCI) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleControl::OnMnemonic(MSG * pMsg) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleControl::OnAmbientPropertyChange(DISPID dispID) + { + return S_OK; + } + + virtual STDMETHODIMP IOleControl::FreezeEvents(BOOL bFreeze) + { + if(bFreeze) + InterlockedIncrement(&m_freezeEvents); + else if(InterlockedDecrement(&m_freezeEvents) == 0) + UnfreezeEvents(); + + return S_OK; + } + + /* IOleInPlaceActiveObject */ // 3/5 + virtual STDMETHODIMP IOleInPlaceActiveObject::TranslateAccelerator(LPMSG lpmsg) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleInPlaceActiveObject::OnFrameWindowActivate(BOOL fActivate) + { + // TODO + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleInPlaceActiveObject::OnDocWindowActivate(BOOL fActivate) + { + // TODO + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleInPlaceActiveObject::ResizeBorder(LPCRECT prcBorder, IOleInPlaceUIWindow * pUIWindow, BOOL fFrameWindow) + { + return S_OK; + } + + virtual STDMETHODIMP IOleInPlaceActiveObject::EnableModeless(BOOL fEnable) + { + return S_OK; + } + + /* IOleInPlaceObject */ // 1/4 + virtual STDMETHODIMP IOleInPlaceObject::InPlaceDeactivate() + { + // TODO: UIDeactivate, destroy window, inplacesite->OnInPlaceDeactivate + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleInPlaceObject::UIDeactivate() + { + // TODO + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleInPlaceObject::SetObjectRects(LPCRECT lprcPosRect, LPCRECT lprcClipRect) + { + if(m_controlWindow == NULL) + return E_FAIL; + + MoveWindow + ( + m_controlWindow, + lprcPosRect->left, + lprcPosRect->top, + lprcPosRect->right - lprcPosRect->left, + lprcPosRect->bottom - lprcPosRect->top, + TRUE + ); + + SetWindowRgn(m_controlWindow, CreateRectRgnIndirect(lprcClipRect), TRUE); + + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleInPlaceObject::ReactivateAndUndo() + { + return E_NOTIMPL; + } + + /* IOleObject */ // 18/21 + virtual STDMETHODIMP IOleObject::SetClientSite(IOleClientSite * pClientSite) + { + if(m_clientSite) + m_clientSite->Release(); + + m_clientSite = pClientSite; + + if(m_clientSite) + m_clientSite->AddRef(); + + return S_OK; + } + + virtual STDMETHODIMP IOleObject::GetClientSite(IOleClientSite ** ppClientSite) + { + if(ppClientSite == NULL) + return E_POINTER; + + if(m_clientSite) + m_clientSite->AddRef(); + + *ppClientSite = m_clientSite; + return S_OK; + } + + virtual STDMETHODIMP IOleObject::SetHostNames(LPCOLESTR szContainerApp, LPCOLESTR szContainerObj) + { + return S_OK; + } + + virtual STDMETHODIMP IOleObject::Close(DWORD dwSaveOption) + { + // TODO: deactivate, destroy window, release in-place site, release advise sink + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IOleObject::SetMoniker(DWORD dwWhichMoniker, IMoniker * pmk) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleObject::GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker ** ppmk) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleObject::InitFromData(IDataObject * pDataObject, BOOL fCreation, DWORD dwReserved) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleObject::GetClipboardData(DWORD dwReserved, IDataObject ** ppDataObject) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleObject::DoVerb(LONG iVerb, LPMSG lpmsg, IOleClientSite * pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect) + { + HRESULT hr; + + switch(iVerb) + { + case OLEIVERB_PRIMARY: + case OLEIVERB_SHOW: + case OLEIVERB_UIACTIVATE: + case OLEIVERB_INPLACEACTIVATE: + hr = S_OK; + break; + + default: + if(iVerb > 0) + hr = OLEOBJ_S_INVALIDVERB; + else + hr = E_NOTIMPL; + } + + if(FAILED(hr)) + return hr; + + HRESULT hrActivate = Activate(iVerb, pActiveSite, hwndParent, lprcPosRect); + + if(FAILED(hrActivate)) + hr = hrActivate; + + return hr; + } + + virtual STDMETHODIMP IOleObject::EnumVerbs(IEnumOLEVERB ** ppEnumOleVerb) + { + return OleRegEnumVerbs(m_classId, ppEnumOleVerb); + } + + virtual STDMETHODIMP IOleObject::Update() + { + return S_OK; + } + + virtual STDMETHODIMP IOleObject::IsUpToDate() + { + return S_OK; + } + + virtual STDMETHODIMP IOleObject::GetUserClassID(CLSID * pClsid) + { + *pClsid = m_classId; + return S_OK; + } + + virtual STDMETHODIMP IOleObject::GetUserType(DWORD dwFormOfType, LPOLESTR * pszUserType) + { + return OleRegGetUserType(m_classId, dwFormOfType, pszUserType); + } + + virtual STDMETHODIMP IOleObject::SetExtent(DWORD dwDrawAspect, SIZEL * psizel) + { + // TODO: resize + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleObject::GetExtent(DWORD dwDrawAspect, SIZEL * psizel) + { + // TODO: return size + return E_NOTIMPL; + } + + HRESULT NeedAdviseHolder() + { + if(m_adviseHolder) + return S_OK; + + return CreateOleAdviseHolder(&m_adviseHolder); + } + + virtual STDMETHODIMP IOleObject::Advise(IAdviseSink * pAdvSink, DWORD * pdwConnection) + { + HRESULT hr = NeedAdviseHolder(); + + if(FAILED(hr)) + return hr; + + return m_adviseHolder->Advise(pAdvSink, pdwConnection); + } + + virtual STDMETHODIMP IOleObject::Unadvise(DWORD dwConnection) + { + HRESULT hr = NeedAdviseHolder(); + + if(FAILED(hr)) + return hr; + + return m_adviseHolder->Unadvise(dwConnection); + } + + virtual STDMETHODIMP IOleObject::EnumAdvise(IEnumSTATDATA ** ppenumAdvise) + { + HRESULT hr = NeedAdviseHolder(); + + if(FAILED(hr)) + return hr; + + return m_adviseHolder->EnumAdvise(ppenumAdvise); + } + + virtual STDMETHODIMP IOleObject::GetMiscStatus(DWORD dwAspect, DWORD * pdwStatus) + { + return OleRegGetMiscStatus(m_classId, dwAspect, pdwStatus); + } + + virtual STDMETHODIMP IOleObject::SetColorScheme(LOGPALETTE * pLogpal) + { + return E_NOTIMPL; + } + + /* IOleWindow */ + virtual STDMETHODIMP IOleWindow::GetWindow(HWND * phwnd) + { + if(phwnd == NULL) + return E_POINTER; + + if(m_controlWindow == NULL) + return E_FAIL; + + *phwnd = m_controlWindow; + return S_OK; + } + + virtual STDMETHODIMP IOleWindow::ContextSensitiveHelp(BOOL fEnterMode) + { + return E_NOTIMPL; + } + + /* IPersist */ + virtual STDMETHODIMP IPersist::GetClassID(CLSID * pClassID) + { + *pClassID = m_classId; + return S_OK; + } + + /* IPersistPropertyBag */ // 0/3 + virtual STDMETHODIMP IPersistPropertyBag::InitNew() + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistPropertyBag::Load(IPropertyBag * pPropBag, IErrorLog * pErrorLog) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistPropertyBag::Save(IPropertyBag * pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties) + { + return E_NOTIMPL; + } + + /* IPersistStorage */ // 0/6 + virtual STDMETHODIMP IPersistStorage::IsDirty() + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStorage::InitNew(IStorage * pStg) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStorage::Load(IStorage * pStg) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStorage::Save(IStorage * pStgSave, BOOL fSameAsLoad) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStorage::SaveCompleted(IStorage * pStgNew) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStorage::HandsOffStorage() + { + return E_NOTIMPL; + } + + /* IPersistStreamInit */ // 0/5 + virtual STDMETHODIMP IPersistStreamInit::IsDirty() + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStreamInit::Load(LPSTREAM pStm) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStreamInit::Save(LPSTREAM pStm, BOOL fClearDirty) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStreamInit::GetSizeMax(ULARGE_INTEGER * pCbSize) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStreamInit::InitNew() + { + return E_NOTIMPL; + } + + /* IProvideClassInfo */ + virtual STDMETHODIMP IProvideClassInfo::GetClassInfo(ITypeInfo ** ppTI) + { + HRESULT hr = LoadTypeLibrary(); + + if(FAILED(hr)) + return hr; + + return m_typeLib->GetTypeInfoOfGuid(m_classId, ppTI); + } + + /* IProvideClassInfo2 */ + virtual STDMETHODIMP IProvideClassInfo2::GetGUID(DWORD dwGuidKind, GUID * pGUID) + { + if(dwGuidKind != GUIDKIND_DEFAULT_SOURCE_DISP_IID) + return E_INVALIDARG; + + *pGUID = MSTSCLib::DIID_IMsTscAxEvents; + return S_OK; + } + + /* IQuickActivate */ + virtual STDMETHODIMP IQuickActivate::QuickActivate(QACONTAINER * pQaContainer, QACONTROL * pQaControl) + { + if(pQaContainer == NULL || pQaControl == NULL) + return E_POINTER; + + if(pQaContainer->cbSize < sizeof(*pQaContainer) || pQaControl->cbSize < sizeof(*pQaControl)) + return E_INVALIDARG; + + ULONG cb = pQaControl->cbSize; + ZeroMemory(pQaControl, cb); + pQaControl->cbSize = cb; + + SetClientSite(pQaContainer->pClientSite); + + if(pQaContainer->pAdviseSink) + SetAdvise(DVASPECT_CONTENT, 0, pQaContainer->pAdviseSink); + + if(pQaContainer->pUnkEventSink) + Advise(pQaContainer->pUnkEventSink, &pQaControl->dwEventCookie); + + GetMiscStatus(DVASPECT_CONTENT, &pQaControl->dwMiscStatus); + + return E_NOTIMPL; + } + + virtual STDMETHODIMP IQuickActivate::SetContentExtent(LPSIZEL pSizel) + { + return SetExtent(DVASPECT_CONTENT, pSizel); + } + + virtual STDMETHODIMP IQuickActivate::GetContentExtent(LPSIZEL pSizel) + { + return GetExtent(DVASPECT_CONTENT, pSizel); + } + + /* IViewObject */ // 3/6 + virtual STDMETHODIMP IViewObject::Draw(DWORD dwDrawAspect, LONG lindex, void * pvAspect, DVTARGETDEVICE * ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL (STDMETHODCALLTYPE * pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue) + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IViewObject::GetColorSet(DWORD dwDrawAspect, LONG lindex, void * pvAspect, DVTARGETDEVICE * ptd, HDC hicTargetDev, LOGPALETTE ** ppColorSet) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IViewObject::Freeze(DWORD dwDrawAspect, LONG lindex, void * pvAspect, DWORD * pdwFreeze) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IViewObject::Unfreeze(DWORD dwFreeze) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IViewObject::SetAdvise(DWORD aspects, DWORD advf, IAdviseSink * pAdvSink) + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IViewObject::GetAdvise(DWORD * pAspects, DWORD * pAdvf, IAdviseSink ** ppAdvSink) + { + return E_NOTIMPL; // TODO + } + + /* IViewObject2 */ // 0/1 + virtual STDMETHODIMP IViewObject2::GetExtent(DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE * ptd, LPSIZEL lpsizel) + { + return E_NOTIMPL; // TODO + } + + /* IMsTscAx */ // 23/30 + virtual STDMETHODIMP IMsTscAx::put_Server(BSTR pServer) + { + // FIXME: convert the hostname to Punycode, not the ANSI codepage + return SetProperty(m_Server, pServer); + } + + virtual STDMETHODIMP IMsTscAx::get_Server(BSTR * pServer) const + { + return GetProperty(m_Server, pServer); + } + + virtual STDMETHODIMP IMsTscAx::put_Domain(BSTR pDomain) + { + return SetProperty(m_Domain, pDomain); + } + + virtual STDMETHODIMP IMsTscAx::get_Domain(BSTR * pDomain) const + { + return GetProperty(m_Domain, pDomain); + } + + virtual STDMETHODIMP IMsTscAx::put_UserName(BSTR pUserName) + { + return SetProperty(m_UserName, pUserName); + } + + virtual STDMETHODIMP IMsTscAx::get_UserName(BSTR * pUserName) const + { + return GetProperty(m_UserName, pUserName); + } + + virtual STDMETHODIMP IMsTscAx::put_DisconnectedText(BSTR pDisconnectedText) + { + return SetProperty(m_DisconnectedText, pDisconnectedText); + } + + virtual STDMETHODIMP IMsTscAx::get_DisconnectedText(BSTR * pDisconnectedText) const + { + return GetProperty(m_DisconnectedText, pDisconnectedText); + } + + virtual STDMETHODIMP IMsTscAx::put_ConnectingText(BSTR pConnectingText) + { + return SetProperty(m_ConnectingText, pConnectingText); + } + + virtual STDMETHODIMP IMsTscAx::get_ConnectingText(BSTR * pConnectingText) const + { + return GetProperty(m_ConnectingText, pConnectingText); + } + + virtual STDMETHODIMP IMsTscAx::get_Connected(short * pIsConnected) const + { + return GetProperty(m_Connected, pIsConnected); + } + + virtual STDMETHODIMP IMsTscAx::put_DesktopWidth(long pVal) + { + if(pVal < 200 || pVal > 1600) + return E_INVALIDARG; + + return SetProperty(m_DesktopWidth, pVal); + } + + virtual STDMETHODIMP IMsTscAx::get_DesktopWidth(long * pVal) const + { + return GetProperty(m_DesktopWidth, pVal); + } + + virtual STDMETHODIMP IMsTscAx::put_DesktopHeight(long pVal) + { + if(pVal < 200 || pVal > 1200) + return E_INVALIDARG; + + return SetProperty(m_DesktopHeight, pVal); + } + + virtual STDMETHODIMP IMsTscAx::get_DesktopHeight(long * pVal) const + { + return GetProperty(m_DesktopHeight, pVal); + } + + virtual STDMETHODIMP IMsTscAx::put_StartConnected(long pfStartConnected) + { + return SetProperty(m_StartConnected, pfStartConnected); + } + + virtual STDMETHODIMP IMsTscAx::get_StartConnected(long * pfStartConnected) const + { + return GetProperty(m_StartConnected, pfStartConnected); + } + + virtual STDMETHODIMP IMsTscAx::get_HorizontalScrollBarVisible(long * pfHScrollVisible) const + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsTscAx::get_VerticalScrollBarVisible(long * pfVScrollVisible) const + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsTscAx::put_FullScreenTitle(BSTR rhs) + { + // TODO + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscAx::get_CipherStrength(long * pCipherStrength) const + { + if(pCipherStrength == NULL) + return E_INVALIDARG; + + *pCipherStrength = 128; // BUGBUG: a later version may change this. Use a compile-time constant + return S_OK; + } + + virtual STDMETHODIMP IMsTscAx::get_Version(BSTR * pVersion) const + { + if(pVersion == NULL) + return E_INVALIDARG; + + BSTR version = SysAllocString(L"5.2.3790.1830"); // BUGBUG: don't use hardcoded string + + if(version == NULL) + return E_OUTOFMEMORY; + + *pVersion = version; + return S_OK; + } + + virtual STDMETHODIMP IMsTscAx::get_SecuredSettingsEnabled(long * pSecuredSettingsEnabled) const + { + // TODO: initialize m_SecuredSettingsEnabled as soon as we have an OLE client site + return GetProperty(m_SecuredSettingsEnabled, pSecuredSettingsEnabled); + } + + virtual STDMETHODIMP IMsTscAx::get_SecuredSettings(MSTSCLib::IMsTscSecuredSettings ** ppSecuredSettings) const + { + return GetSecuredSettings(ppSecuredSettings); + } + + virtual STDMETHODIMP IMsTscAx::get_AdvancedSettings(MSTSCLib::IMsTscAdvancedSettings ** ppAdvSettings) const + { + return GetAdvancedSettings(ppAdvSettings); + } + + virtual STDMETHODIMP IMsTscAx::get_Debugger(MSTSCLib::IMsTscDebug ** ppDebugger) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscAx::Connect() + { + if(m_Connected) + { + // Protocol thread waiting for a manual reconnection: wake it up + if(m_protocolThreadWaitingReconnection) + { + SetEvent(m_protocolThreadWaitingReconnection); + return S_OK; + } + + return E_FAIL; + } + + m_Connected = true; + + HRESULT hr; + + if(m_controlWindow == NULL) + { + hr = CreateControlWindow(NULL); + + if(FAILED(hr)) + return hr; + } + + for(;;) + { + // TODO: initialize plugin DLLs/channels + + m_clientUI = new RdpClientUI(); + + if(m_clientUI == NULL) + { + hr = E_OUTOFMEMORY; + break; + } + + m_clientUI->Initialize(m_controlWindow); + + m_protocolState.licence_username = BstrToLpsz(m_UserName); + + if(m_protocolState.licence_username == NULL) + { + hr = E_OUTOFMEMORY; + break; + } + + DWORD dwSize = ARRAYSIZE(m_protocolState.licence_hostname); + + if(!GetComputerNameA(m_protocolState.licence_hostname, &dwSize)) + { + hr = HRESULT_FROM_WIN32(GetLastError()); + break; + } + + // Keyboard layout + // BUGBUG: not too sure about the semantics + long keyboardLayout = -1; + WCHAR * endPtr = NULL; + + if(m_KeyboardLayoutString) + keyboardLayout = wcstol(m_KeyboardLayoutString, &endPtr, 0); + + // no keyboard layout specified or invalid keyboard layout: use current keyboard layout + if(endPtr == NULL || *endPtr == 0 || keyboardLayout == -1) + keyboardLayout = PtrToLong(GetKeyboardLayout(0)); // FIXME? use LOWORD()? + + m_protocolState.keylayout = keyboardLayout; + + // in case of failure, assume English (US) + if(m_protocolState.keylayout == 0) + m_protocolState.keylayout = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US); + + // Physical keyboard information + m_protocolState.keyboard_type = GetKeyboardType(0); + m_protocolState.keyboard_subtype = GetKeyboardType(1); + m_protocolState.keyboard_functionkeys = GetKeyboardType(2); + + // in case of failure, assume an IBM Enhanced keyboard with 12 function keys + if(m_protocolState.keyboard_type == 0 || m_protocolState.keyboard_functionkeys == 0) + { + m_protocolState.keyboard_type = 4; + m_protocolState.keyboard_subtype = 0; + m_protocolState.keyboard_functionkeys = 12; + } + + // More initialization + m_protocolState.width = m_DesktopWidth; + m_protocolState.height = m_DesktopHeight; + m_protocolState.server_depth = m_ColorDepth; + m_protocolState.bitmap_compression = m_Compress ? TRUE : FALSE; + m_protocolState.bitmap_cache = True; // TODO + m_protocolState.bitmap_cache_persist_enable = False; // TODO + m_protocolState.bitmap_cache_precache = True; // FIXME? + m_protocolState.encryption = m_EncryptionEnabled ? TRUE : FALSE; // TBD: detect automatically + m_protocolState.packet_encryption = m_EncryptionEnabled ? TRUE : FALSE; + m_protocolState.desktop_save = True; // FIXME? tie to bitmap cache setting? + m_protocolState.polygon_ellipse_orders = True; + m_protocolState.use_rdp5 = True; // TBD: detect automatically + m_protocolState.console_session = m_ConnectToServerConsole ? TRUE : FALSE; + m_protocolState.rdp5_performanceflags = m_PerformanceFlags; + m_protocolState.tcp_port_rdp = m_RDPPort; + m_protocolState.rdp.current_status = 1; + + // TODO: cache tuning based on the provided parameters + + m_protocolState.cache.bmpcache_lru[0] = -1; + m_protocolState.cache.bmpcache_lru[1] = -1; + m_protocolState.cache.bmpcache_lru[2] = -1; + m_protocolState.cache.bmpcache_mru[0] = -1; + m_protocolState.cache.bmpcache_mru[1] = -1; + m_protocolState.cache.bmpcache_mru[2] = -1; + + DWORD dwIgnore; + m_protocolThread = CreateThread(NULL, 0, ProtocolLoopThreadProc, this, 0, &dwIgnore); + + hr = S_OK; + break; + } + + if(FAILED(hr)) + m_Connected = false; + + return hr; + } + + virtual STDMETHODIMP IMsTscAx::Disconnect() + { + if(!m_Connected) + return E_FAIL; + + // Terminate the protocol thread. On exit, it will fire the Disconnected event + TerminateProtocolThread(); + return S_OK; + } + + virtual STDMETHODIMP IMsTscAx::CreateVirtualChannels(BSTR newVal) + { + UINT strLength = SysStringLen(newVal); + + if(strLength < 1 || strLength > 300) + return E_INVALIDARG; + + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsTscAx::SendOnVirtualChannel(BSTR chanName, BSTR ChanData) + { + return E_NOTIMPL; // TODO + } + + /* IMsRdpClient */ // 6/10 + virtual STDMETHODIMP IMsRdpClient::put_ColorDepth(long pcolorDepth) + { + switch(pcolorDepth) + { + case 8: + case 15: + case 16: + case 24: + case 32: + break; + + default: + return E_INVALIDARG; + } + + return SetProperty(m_ColorDepth, pcolorDepth); + } + + virtual STDMETHODIMP IMsRdpClient::get_ColorDepth(long * pcolorDepth) const + { + return GetProperty(m_ColorDepth, pcolorDepth); + } + + virtual STDMETHODIMP IMsRdpClient::get_AdvancedSettings2(MSTSCLib::IMsRdpClientAdvancedSettings ** ppAdvSettings) const + { + return GetAdvancedSettings(ppAdvSettings); + } + + virtual STDMETHODIMP IMsRdpClient::get_SecuredSettings2(MSTSCLib::IMsRdpClientSecuredSettings ** ppSecuredSettings) const + { + return GetSecuredSettings(ppSecuredSettings); + } + + virtual STDMETHODIMP IMsRdpClient::get_ExtendedDisconnectReason(MSTSCLib::ExtendedDisconnectReasonCode * pExtendedDisconnectReason) const + { + return GetProperty(m_ExtendedDisconnectReason, pExtendedDisconnectReason); + } + + virtual STDMETHODIMP IMsRdpClient::put_FullScreen(VARIANT_BOOL pfFullScreen) + { + if(!m_Connected) + return E_FAIL; + + if(pfFullScreen && !m_SecuredSettingsEnabled) + return E_FAIL; + + // TODO + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClient::get_FullScreen(VARIANT_BOOL * pfFullScreen) const + { + return GetProperty(m_FullScreen, pfFullScreen); + } + + virtual STDMETHODIMP IMsRdpClient::SetVirtualChannelOptions(BSTR chanName, long chanOptions) + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsRdpClient::GetVirtualChannelOptions(BSTR chanName, long * pChanOptions) + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsRdpClient::RequestClose(MSTSCLib::ControlCloseStatus * pCloseStatus) + { + if(pCloseStatus == NULL) + return E_POINTER; + + if(!m_Connected) + { + *pCloseStatus = MSTSCLib::controlCloseCanProceed; + return S_OK; + } + + *pCloseStatus = MSTSCLib::controlCloseWaitForEvents; + + if(!PostMessage(m_controlWindow, RDPC_WM_REQUEST_CLOSE, 0, 0)) + return HRESULT_FROM_WIN32(GetLastError()); + + return S_OK; + } + + /* IMsRdpClient2 */ + virtual STDMETHODIMP IMsRdpClient2::get_AdvancedSettings3(MSTSCLib::IMsRdpClientAdvancedSettings2 ** ppAdvSettings) const + { + return GetAdvancedSettings(ppAdvSettings); + } + + virtual STDMETHODIMP IMsRdpClient2::put_ConnectedStatusText(BSTR pConnectedStatusText) + { + return SetProperty(m_ConnectedStatusText, pConnectedStatusText); + } + + virtual STDMETHODIMP IMsRdpClient2::get_ConnectedStatusText(BSTR * pConnectedStatusText) const + { + return GetProperty(m_ConnectedStatusText, pConnectedStatusText); + } + + /* IMsRdpClient3 */ + virtual STDMETHODIMP IMsRdpClient3::get_AdvancedSettings4(MSTSCLib::IMsRdpClientAdvancedSettings3 ** ppAdvSettings) const + { + return GetAdvancedSettings(ppAdvSettings); + } + + /* IMsRdpClient4 */ + virtual STDMETHODIMP IMsRdpClient4::get_AdvancedSettings5(MSTSCLib::IMsRdpClientAdvancedSettings4 ** ppAdvSettings5) const + { + return GetAdvancedSettings(ppAdvSettings5); + } + + /* IMsTscNonScriptable */ + virtual STDMETHODIMP IMsTscNonScriptable::put_ClearTextPassword(BSTR rhs) + { + return SetProperty(m_ClearTextPassword, rhs); + } + + virtual STDMETHODIMP IMsTscNonScriptable::put_PortablePassword(BSTR pPortablePass) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::get_PortablePassword(BSTR * pPortablePass) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::put_PortableSalt(BSTR pPortableSalt) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::get_PortableSalt(BSTR * pPortableSalt) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::put_BinaryPassword(BSTR pBinaryPassword) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::get_BinaryPassword(BSTR * pBinaryPassword) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::put_BinarySalt(BSTR pSalt) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::get_BinarySalt(BSTR * pSalt) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::ResetPassword() + { + return SetProperty(m_ClearTextPassword, NULL); + } + + /* IMsRdpClientNonScriptable */ // 0/2 + virtual STDMETHODIMP IMsRdpClientNonScriptable::NotifyRedirectDeviceChange(MSTSCLib::UINT_PTR wParam, MSTSCLib::LONG_PTR lParam) + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsRdpClientNonScriptable::SendKeys(long numKeys, VARIANT_BOOL * pbArrayKeyUp, long * plKeyData) + { + // NOTE: the keys must be sent in a single, atomic sequence + // TODO: acquire the write lock + return E_NOTIMPL; // TODO + } + + /* IMsRdpClientNonScriptable2 */ + virtual STDMETHODIMP IMsRdpClientNonScriptable2::put_UIParentWindowHandle(HWND phwndUIParentWindowHandle) + { + return SetProperty(m_UIParentWindowHandle, phwndUIParentWindowHandle); + } + + virtual STDMETHODIMP IMsRdpClientNonScriptable2::get_UIParentWindowHandle(HWND * phwndUIParentWindowHandle) const + { + return GetProperty(m_UIParentWindowHandle, phwndUIParentWindowHandle); + } +}; + +#pragma warning(pop) + +/* More glue to interface to the rdesktop code */ +extern "C" +{ + +/* Orders */ +/* support routines */ +void ui_begin_update(RDPCLIENT * This) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_BeginUpdate(); +} + +void ui_end_update(RDPCLIENT * This) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_EndUpdate(); +} + +void ui_set_clip(RDPCLIENT * This, int x, int y, int cx, int cy) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_SetClip(x, y, cx, cy); +} + +void ui_reset_clip(RDPCLIENT * This) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_ResetClip(); +} + +/* blits */ +void ui_destblt(RDPCLIENT * This, uint8 opcode, int x, int y, int cx, int cy) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_DestBlt(opcode, x, y, cx, cy); +} + +void ui_memblt(RDPCLIENT * This, uint8 opcode, int x, int y, int cx, int cy, HBITMAP src, int srcx, int srcy) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_MemBlt(opcode, x, y, cx, cy, src, srcx, srcy); +} + +void ui_patblt(RDPCLIENT * This, uint8 opcode, int x, int y, int cx, int cy, BRUSH * brush, int bgcolour, int fgcolour) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_PatBlt(opcode, x, y, cx, cy, brush, bgcolour, fgcolour); +} + +void ui_screenblt(RDPCLIENT * This, uint8 opcode, int x, int y, int cx, int cy, int srcx, int srcy) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_ScreenBlt(opcode, x, y, cx, cy, srcx, srcy); +} + +void ui_triblt(RDPCLIENT * This, uint8 opcode, int x, int y, int cx, int cy, HBITMAP src, int srcx, int srcy, BRUSH * brush, int bgcolour, int fgcolour) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_TriBlt(opcode, x, y, cx, cy, src, srcx, srcy, brush, bgcolour, fgcolour); +} + +void ui_paint_bitmap(RDPCLIENT * This, int x, int y, int cx, int cy, int width, int height, uint8 * data) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_PaintBitmap(x, y, cx, cy, width, height, data); +} + +/* shapes */ +void ui_ellipse(RDPCLIENT * This, uint8 opcode, uint8 fillmode, int x, int y, int cx, int cy, BRUSH * brush, int bgcolour, int fgcolour) +{ + // TODO +// RdpClient::InnerToOuter(This)->GetUI()->Display_Ellipse(opcode, fillmode, x, y, cx, cy, brush, bgcolour, fgcolour); +} + +void ui_line(RDPCLIENT * This, uint8 opcode, int startx, int starty, int endx, int endy, PEN * pen) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_Line(opcode, startx, starty, endx, endy, pen); +} + +void ui_polygon(RDPCLIENT * This, uint8 opcode, uint8 fillmode, POINT * point, int npoints, BRUSH * brush, int bgcolour, int fgcolour) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_Polygon(opcode, fillmode, point, npoints, brush, bgcolour, fgcolour); +} + +void ui_polyline(RDPCLIENT * This, uint8 opcode, POINT * points, int npoints, PEN * pen) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_Polyline(opcode, points, npoints, pen); +} + +void ui_rect(RDPCLIENT * This, int x, int y, int cx, int cy, int colour) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_Rect(x, y, cx, cy, colour); +} + +/* text */ +void ui_draw_text +( + RDPCLIENT * This, + uint8 font, + uint8 flags, + uint8 opcode, + int mixmode, + int x, + int y, + int clipx, + int clipy, + int clipcx, + int clipcy, + int boxx, + int boxy, + int boxcx, + int boxcy, + BRUSH * brush, + int bgcolour, + int fgcolour, + uint8 * text, + uint8 length +) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_DrawText + ( + font, + flags, + opcode, + mixmode, + x, + y, + clipx, + clipy, + clipcx, + clipcy, + boxx, + boxy, + boxcx, + boxcy, + brush, + bgcolour, + fgcolour, + text, + length + ); +} + +/* desktop save/restore */ +void ui_desktop_save(RDPCLIENT * This, uint32 offset, int x, int y, int cx, int cy) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_SaveDesktop(offset, x, y, cx, cy); +} + +void ui_desktop_restore(RDPCLIENT * This, uint32 offset, int x, int y, int cx, int cy) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_RestoreDesktop(offset, x, y, cx, cy); +} + +/* Resources */ +/* bitmaps */ +HBITMAP ui_create_bitmap(RDPCLIENT * This, int width, int height, uint8 * data) +{ + return win32_create_dib(width, height, This->server_depth, data); +} + +void ui_destroy_bitmap(RDPCLIENT *, HBITMAP bmp) +{ + DeleteObject(bmp); +} + +/* palettes */ +HCOLOURMAP ui_create_colourmap(RDPCLIENT *, COLOURMAP * colours) +{ + return NULL; +} + +void ui_set_colourmap(RDPCLIENT * This, HCOLOURMAP map) +{ + // TODO +} + +/* cursors */ +HCURSOR ui_create_cursor(RDPCLIENT * This, unsigned int x, unsigned int y, int width, int height, uint8 * andmask, uint8 * xormask) +{ + uint8 * andbuf = NULL; + uint8 * xorbuf = NULL; + + uint8 * andbits = win32_convert_scanlines(width, - height, 1, 2, 4, andmask, &andbuf); + uint8 * xorbits = win32_convert_scanlines(width, height, 24, 2, 4, xormask, &xorbuf); + + HBITMAP hbmMask = CreateBitmap(width, height, 1, 1, andbits); + HBITMAP hbmColor = win32_create_dib(width, height, 24, xorbits); + + ICONINFO iconinfo; + iconinfo.fIcon = FALSE; + iconinfo.xHotspot = x; + iconinfo.yHotspot = y; + iconinfo.hbmMask = hbmMask; + iconinfo.hbmColor = hbmColor; + + HICON icon = CreateIconIndirect(&iconinfo); + + if(icon == NULL) + error("CreateIconIndirect %dx%d failed\n", width, height); + + if(andbuf) + delete[] andbuf; + + if(xorbuf) + delete[] xorbuf; + + DeleteObject(hbmMask); + DeleteObject(hbmColor); + + return icon; +} + +void ui_destroy_cursor(RDPCLIENT *, HCURSOR cursor) +{ + DestroyIcon(cursor); +} + +/* glyphs */ +HGLYPH ui_create_glyph(RDPCLIENT * This, int width, int height, const uint8 * data) +{ + uint8 * databuf = NULL; + uint8 * databits = win32_convert_scanlines(width, height, 1, 1, 2, data, &databuf); + + HBITMAP hbm = CreateBitmap(width, height, 1, 1, databits); + + if(databuf) + delete[] databuf; + + const uint8 * p = data; + int stride = alignup(alignup(width, 8) / 8, 1); + +#ifdef _DEBUG + printf("glyph %p\n", hbm); + + for(int i = 0; i < height; ++ i, p += stride) + { + for(int j = 0; j < width; ++ j) + { + int B = p[j / 8]; + int b = 8 - j % 8 - 1; + + if(B & (1 << b)) + fputs("##", stdout); + else + fputs("..", stdout); + } + + fputc('\n', stdout); + } + + fputc('\n', stdout); +#endif + + return hbm; +} + +void ui_destroy_glyph(RDPCLIENT *, HGLYPH glyph) +{ + DeleteObject(glyph); +} + +/* Input window */ +void ui_move_pointer(RDPCLIENT * This, int x, int y) +{ + // TODO +} + +void ui_set_cursor(RDPCLIENT * This, HCURSOR cursor) +{ + // TODO +} + +void ui_set_null_cursor(RDPCLIENT * This) +{ + // TODO +} + +/* Miscellaneous */ +void ui_resize_window(RDPCLIENT * This) +{ +} + +void ui_bell(RDPCLIENT *) +{ + MessageBeep(0); +} + +int ui_select(RDPCLIENT * This, SOCKET rdp_socket) +{ + return SleepEx(0, TRUE) == WAIT_IO_COMPLETION; +} + +/* Events */ +BOOL event_pubkey(RDPCLIENT * This, unsigned char * key, unsigned int key_size) +{ + if(!RdpClient::OnPublicKey(This, key, key_size)) + return FALSE; + else + return TRUE; +} + +void event_logon(RDPCLIENT * This) +{ + RdpClient::OnLogon(This); +} + +BOOL event_redirect(RDPCLIENT * This, uint32 flags, uint32 server_len, wchar_t * server, uint32 cookie_len, char * cookie, uint32 username_len, wchar_t * username, uint32 domain_len, wchar_t * domain, uint32 password_len, wchar_t * password) +{ + if + ( + !RdpClient::OnRedirect + ( + This, + flags, + server_len, + server, + cookie_len, + cookie, + username_len, + username, + domain_len, + domain, + password_len, + password + ) + ) + return FALSE; + else + return TRUE; +} + +} + +class ClassFactory: public IClassFactory +{ +private: + LONG m_refCount; + CLSID m_classId; + unsigned m_libIndex; + +public: + ClassFactory(REFCLSID rclsid, unsigned libIndex): + m_refCount(1), + m_classId(rclsid) + { + lockServer(); + } + + ~ClassFactory() + { + unlockServer(); + } + + virtual STDMETHODIMP QueryInterface(REFIID riid, void ** ppvObject) + { + if(riid == IID_IUnknown || riid == IID_IClassFactory) + { + *ppvObject = this; + return S_OK; + } + else + { + *ppvObject = NULL; + return E_NOINTERFACE; + } + } + + virtual STDMETHODIMP_(ULONG) AddRef() + { + return InterlockedIncrement(&m_refCount); + } + + virtual STDMETHODIMP_(ULONG) Release() + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + virtual STDMETHODIMP CreateInstance(IUnknown * pUnkOuter, REFIID riid, void ** ppvObject) + { + if(pUnkOuter && riid != IID_IUnknown) + return CLASS_E_NOAGGREGATION; + + return RdpClient::CreateInstance(m_classId, m_libIndex, pUnkOuter, riid, ppvObject); + } + + virtual STDMETHODIMP LockServer(BOOL fLock) + { + if(fLock) + lockServer(); + else + unlockServer(); + + return S_OK; + } +}; + +extern "C" +{ + +STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID * ppv) +{ + unsigned libindex; + + if + ( + rclsid == MSTSCLib::CLSID_MsTscAx || + rclsid == MSTSCLib::CLSID_MsRdpClient || + rclsid == MSTSCLib::CLSID_MsRdpClient2 || + rclsid == MSTSCLib::CLSID_MsRdpClient3 || + rclsid == MSTSCLib::CLSID_MsRdpClient4 + ) + libindex = 1; + else if + ( + rclsid == MSTSCLib_Redist::CLSID_MsTscAx || + rclsid == MSTSCLib_Redist::CLSID_MsRdpClient || + rclsid == MSTSCLib_Redist::CLSID_MsRdpClient2 || + rclsid == MSTSCLib_Redist::CLSID_MsRdpClient3 // || + // rclsid != MSTSCLib::CLSID_MsRdpClient4 + ) + libindex = 2; + else + return CLASS_E_CLASSNOTAVAILABLE; + + ClassFactory * p = new ClassFactory(rclsid, libindex); + + if(p == NULL) + return E_OUTOFMEMORY; + + HRESULT hr = p->QueryInterface(riid, ppv); + + p->Release(); + + if(FAILED(hr)) + return hr; + + return S_OK; +} + +STDAPI DllCanUnloadNow(void) +{ + return canUnloadServer() ? S_OK : S_FALSE; +} + +STDAPI_(ULONG) DllGetTscCtlVer(void) +{ + // BUGBUG: don't hardcode this + return 0x05020ECE; // 5.2.3790 +} + +DWORD WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, LPVOID lpvReserved) +{ + assert(hInstance == GetCurrentModule()); + + switch(fdwReason) + { + case DLL_PROCESS_ATTACH: + { + DisableThreadLibraryCalls(hInstance); + + if(!RdpClient::Startup()) + return FALSE; + } + + break; + + case DLL_PROCESS_DETACH: + { + // Process is terminating, no need to clean up + if(lpvReserved) + break; + + RdpClient::Shutdown(); + } + + break; + } + + return TRUE; +} + +} + +// EOF diff --git a/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib.idl b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib.idl new file mode 100644 index 00000000000..9c78f8575f9 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib.idl @@ -0,0 +1,561 @@ +[ +#ifdef MSTSCLIB_REDIST_ + uuid(AF586AAE-B62A-420E-B796-294E7EE64C70), +#else + uuid(8C11EFA1-92C3-11D1-BC1E-00C04FA31489), +#endif + version(1.0) +] +library MSTSCLib +{ + importlib("stdole32.tlb"); + + dispinterface IMsTscAxEvents; + + interface IMsTscAx; + interface IMsRdpClient; + interface IMsRdpClient2; + interface IMsRdpClient3; + interface IMsRdpClient4; + + interface IMsTscNonScriptable; + interface IMsRdpClientNonScriptable; + interface IMsRdpClientNonScriptable2; + + interface IMsTscAdvancedSettings; + interface IMsRdpClientAdvancedSettings; + interface IMsRdpClientAdvancedSettings2; + interface IMsRdpClientAdvancedSettings3; + interface IMsRdpClientAdvancedSettings4; + + interface IMsTscSecuredSettings; + interface IMsRdpClientSecuredSettings; + + interface IMsTscDebug; + + typedef [public] enum __MIDL___MIDL_itf_mstsax_0275_0001 + { + autoReconnectContinueAutomatic = 0, + autoReconnectContinueStop = 1, + autoReconnectContinueManual = 2 + } + AutoReconnectContinueState; + + typedef [public] enum __MIDL_IMsRdpClient_0001 + { + exDiscReasonNoInfo = 0, + exDiscReasonAPIInitiatedDisconnect = 1, + exDiscReasonAPIInitiatedLogoff = 2, + exDiscReasonServerIdleTimeout = 3, + exDiscReasonServerLogonTimeout = 4, + exDiscReasonReplacedByOtherConnection = 5, + exDiscReasonOutOfMemory = 6, + exDiscReasonServerDeniedConnection = 7, + exDiscReasonServerDeniedConnectionFips = 8, + exDiscReasonLicenseInternal = 256, + exDiscReasonLicenseNoLicenseServer = 257, + exDiscReasonLicenseNoLicense = 258, + exDiscReasonLicenseErrClientMsg = 259, + exDiscReasonLicenseHwidDoesntMatchLicense = 260, + exDiscReasonLicenseErrClientLicense = 261, + exDiscReasonLicenseCantFinishProtocol = 262, + exDiscReasonLicenseClientEndedProtocol = 263, + exDiscReasonLicenseErrClientEncryption = 264, + exDiscReasonLicenseCantUpgradeLicense = 265, + exDiscReasonLicenseNoRemoteConnections = 266, + exDiscReasonProtocolRangeStart = 4096, + exDiscReasonProtocolRangeEnd = 32767 + } + ExtendedDisconnectReasonCode; + + typedef [public] enum __MIDL_IMsRdpClient_0002 + { + controlCloseCanProceed = 0, + controlCloseWaitForEvents = 1 + } + ControlCloseStatus; + + typedef [public] unsigned __int3264 UINT_PTR; + typedef [public] __int3264 LONG_PTR; + + [uuid(336D5562-EFA8-482E-8CB3-C5C0FC7A7DB6)] + dispinterface IMsTscAxEvents + { + properties: + + methods: + [id(0x00000001)] void OnConnecting(); + [id(0x00000002)] void OnConnected(); + [id(0x00000003)] void OnLoginComplete(); + [id(0x00000004)] void OnDisconnected([in] long discReason); + [id(0x00000005)] void OnEnterFullScreenMode(); + [id(0x00000006)] void OnLeaveFullScreenMode(); + [id(0x00000007)] void OnChannelReceivedData([in] BSTR chanName, [in] BSTR data); + [id(0x00000008)] void OnRequestGoFullScreen(); + [id(0x00000009)] void OnRequestLeaveFullScreen(); + [id(0x0000000a)] void OnFatalError([in] long errorCode); + [id(0x0000000b)] void OnWarning([in] long warningCode); + [id(0x0000000c)] void OnRemoteDesktopSizeChange([in] long width, [in] long height); + [id(0x0000000d)] void OnIdleTimeoutNotification(); + [id(0x0000000e)] void OnRequestContainerMinimize(); + [id(0x0000000f)] void OnConfirmClose([out, retval] VARIANT_BOOL * pfAllowClose); + [id(0x00000010)] void OnReceivedTSPublicKey([in] BSTR publicKey, [out, retval] VARIANT_BOOL * pfContinueLogon); + [id(0x00000011)] void OnAutoReconnecting([in] long disconnectReason, [in] long attemptCount, [out, retval] AutoReconnectContinueState * pArcContinueStatus); + [id(0x00000012)] void OnAuthenticationWarningDisplayed(); + [id(0x00000013)] void OnAuthenticationWarningDismissed(); + }; + + [ +#ifdef MSTSCLIB_REDIST_ + uuid(327BB5CD-834E-4400-AEF2-B30E15E5D682), +#else + uuid(8C11EFAE-92C3-11D1-BC1E-00C04FA31489), +#endif + dual, + oleautomation + ] + interface IMsTscAx: IDispatch + { + [id(0x00000001), propput] HRESULT Server([in] BSTR pServer); + [id(0x00000001), propget] HRESULT Server([out, retval] BSTR * pServer); + [id(0x00000002), propput] HRESULT Domain([in] BSTR pDomain); + [id(0x00000002), propget] HRESULT Domain([out, retval] BSTR * pDomain); + [id(0x00000003), propput] HRESULT UserName([in] BSTR pUserName); + [id(0x00000003), propget] HRESULT UserName([out, retval] BSTR * pUserName); + [id(0x00000004), propput] HRESULT DisconnectedText([in] BSTR pDisconnectedText); + [id(0x00000004), propget] HRESULT DisconnectedText([out, retval] BSTR * pDisconnectedText); + [id(0x00000005), propput] HRESULT ConnectingText([in] BSTR pConnectingText); + [id(0x00000005), propget] HRESULT ConnectingText([out, retval] BSTR * pConnectingText); + [id(0x00000006), propget] HRESULT Connected([out, retval] short * pIsConnected); + [id(0x0000000c), propput] HRESULT DesktopWidth([in] long pVal); + [id(0x0000000c), propget] HRESULT DesktopWidth([out, retval] long * pVal); + [id(0x0000000d), propput] HRESULT DesktopHeight([in] long pVal); + [id(0x0000000d), propget] HRESULT DesktopHeight([out, retval] long * pVal); + [id(0x00000010), propput] HRESULT StartConnected([in] long pfStartConnected); + [id(0x00000010), propget] HRESULT StartConnected([out, retval] long * pfStartConnected); + [id(0x00000011), propget] HRESULT HorizontalScrollBarVisible([out, retval] long * pfHScrollVisible); + [id(0x00000012), propget] HRESULT VerticalScrollBarVisible([out, retval] long * pfVScrollVisible); + [id(0x00000013), propput] HRESULT FullScreenTitle([in] BSTR rhs); + [id(0x00000014), propget] HRESULT CipherStrength([out, retval] long * pCipherStrength); + [id(0x00000015), propget] HRESULT Version([out, retval] BSTR * pVersion); + [id(0x00000016), propget] HRESULT SecuredSettingsEnabled([out, retval] long * pSecuredSettingsEnabled); + [id(0x00000061), propget] HRESULT SecuredSettings([out, retval] IMsTscSecuredSettings ** ppSecuredSettings); + [id(0x00000062), propget] HRESULT AdvancedSettings([out, retval] IMsTscAdvancedSettings ** ppAdvSettings); + [id(0x00000063), propget, hidden] HRESULT Debugger([out, retval] IMsTscDebug ** ppDebugger); + [id(0x0000001e)] HRESULT Connect(); + [id(0x0000001f)] HRESULT Disconnect(); + [id(0x00000021)] HRESULT CreateVirtualChannels([in] BSTR newVal); + [id(0x00000022)] HRESULT SendOnVirtualChannel([in] BSTR chanName, [in] BSTR ChanData); + }; + + [ + uuid(92B4A539-7115-4B7C-A5A9-E5D9EFC2780A), + dual, + oleautomation + ] + interface IMsRdpClient: IMsTscAx + { + [id(0x00000064), propput] HRESULT ColorDepth([in] long pcolorDepth); + [id(0x00000064), propget] HRESULT ColorDepth([out, retval] long * pcolorDepth); + [id(0x00000065), propget] HRESULT AdvancedSettings2([out, retval] IMsRdpClientAdvancedSettings ** ppAdvSettings); + [id(0x00000066), propget] HRESULT SecuredSettings2([out, retval] IMsRdpClientSecuredSettings ** ppSecuredSettings); + [id(0x00000067), propget] HRESULT ExtendedDisconnectReason([out, retval] ExtendedDisconnectReasonCode * pExtendedDisconnectReason); + [id(0x00000068), propput] HRESULT FullScreen([in] VARIANT_BOOL pfFullScreen); + [id(0x00000068), propget] HRESULT FullScreen([out, retval] VARIANT_BOOL * pfFullScreen); + [id(0x00000023)] HRESULT SetVirtualChannelOptions([in] BSTR chanName, [in] long chanOptions); + [id(0x00000024)] HRESULT GetVirtualChannelOptions([in] BSTR chanName, [out, retval] long * pChanOptions); + [id(0x00000025)] HRESULT RequestClose([out, retval] ControlCloseStatus * pCloseStatus); + }; + + [ + uuid(E7E17DC4-3B71-4BA7-A8E6-281FFADCA28F), + dual, + oleautomation + ] + interface IMsRdpClient2: IMsRdpClient + { + [id(0x000000c8), propget] HRESULT AdvancedSettings3([out, retval] IMsRdpClientAdvancedSettings2 ** ppAdvSettings); + [id(0x000000c9), propput] HRESULT ConnectedStatusText([in] BSTR pConnectedStatusText); + [id(0x000000c9), propget] HRESULT ConnectedStatusText([out, retval] BSTR * pConnectedStatusText); + }; + + [ + uuid(91B7CBC5-A72E-4FA0-9300-D647D7E897FF), + dual, + oleautomation + ] + interface IMsRdpClient3: IMsRdpClient2 + { + [id(0x0000012c), propget] HRESULT AdvancedSettings4([out, retval] IMsRdpClientAdvancedSettings3 ** ppAdvSettings); + }; + + [ + uuid(095E0738-D97D-488B-B9F6-DD0E8D66C0DE), + dual, + oleautomation + ] + interface IMsRdpClient4: IMsRdpClient3 + { + [id(0x00000190), propget] HRESULT AdvancedSettings5([out, retval] IMsRdpClientAdvancedSettings4 ** ppAdvSettings5); + }; + + [uuid(C1E6743A-41C1-4A74-832A-0DD06C1C7A0E)] + interface IMsTscNonScriptable: IUnknown + { + [propput] HRESULT ClearTextPassword([in] BSTR rhs); + [propput] HRESULT PortablePassword([in] BSTR pPortablePass); + [propget] HRESULT PortablePassword([out, retval] BSTR * pPortablePass); + [propput] HRESULT PortableSalt([in] BSTR pPortableSalt); + [propget] HRESULT PortableSalt([out, retval] BSTR * pPortableSalt); + [propput] HRESULT BinaryPassword([in] BSTR pBinaryPassword); + [propget] HRESULT BinaryPassword([out, retval] BSTR * pBinaryPassword); + [propput] HRESULT BinarySalt([in] BSTR pSalt); + [propget] HRESULT BinarySalt([out, retval] BSTR * pSalt); + HRESULT ResetPassword(); + }; + + [uuid(2F079C4C-87B2-4AFD-97AB-20CDB43038AE)] + interface IMsRdpClientNonScriptable: IMsTscNonScriptable + { + HRESULT NotifyRedirectDeviceChange([in] UINT_PTR wParam, [in] LONG_PTR lParam); + HRESULT SendKeys([in] long numKeys, [in] VARIANT_BOOL * pbArrayKeyUp, [in] long * plKeyData); + }; + + [uuid(17A5E535-4072-4FA4-AF32-C8D0D47345E9)] + interface IMsRdpClientNonScriptable2: IMsRdpClientNonScriptable + { + [propput] HRESULT UIParentWindowHandle([in] HWND phwndUIParentWindowHandle); + [propget] HRESULT UIParentWindowHandle([out, retval] HWND * phwndUIParentWindowHandle); + }; + + [ + uuid(809945CC-4B3B-4A92-A6B0-DBF9B5F2EF2D), + dual, + oleautomation + ] + interface IMsTscAdvancedSettings: IDispatch + { + [id(0x00000079), propput] HRESULT Compress([in] long pcompress); + [id(0x00000079), propget] HRESULT Compress([out, retval] long * pcompress); + [id(0x0000007a), propput] HRESULT BitmapPeristence([in] long pbitmapPeristence); + [id(0x0000007a), propget] HRESULT BitmapPeristence([out, retval] long * pbitmapPeristence); + [id(0x000000a1), propput] HRESULT allowBackgroundInput([in] long pallowBackgroundInput); + [id(0x000000a1), propget] HRESULT allowBackgroundInput([out, retval] long * pallowBackgroundInput); + [id(0x000000a2), propput] HRESULT KeyBoardLayoutStr([in] BSTR rhs); + [id(0x000000aa), propput] HRESULT PluginDlls([in] BSTR rhs); + [id(0x000000ab), propput] HRESULT IconFile([in] BSTR rhs); + [id(0x000000ac), propput] HRESULT IconIndex([in] long rhs); + [id(0x000000ad), propput] HRESULT ContainerHandledFullScreen([in] long pContainerHandledFullScreen); + [id(0x000000ad), propget] HRESULT ContainerHandledFullScreen([out, retval] long * pContainerHandledFullScreen); + [id(0x000000ae), propput] HRESULT DisableRdpdr([in] long pDisableRdpdr); + [id(0x000000ae), propget] HRESULT DisableRdpdr([out, retval] long * pDisableRdpdr); + }; + + [ + uuid(3C65B4AB-12B3-465B-ACD4-B8DAD3BFF9E2), + dual, + oleautomation + ] + interface IMsRdpClientAdvancedSettings: IMsTscAdvancedSettings + { + [id(0x00000065), propput] HRESULT SmoothScroll([in] long psmoothScroll); + [id(0x00000065), propget] HRESULT SmoothScroll([out, retval] long * psmoothScroll); + [id(0x00000066), propput] HRESULT AcceleratorPassthrough([in] long pacceleratorPassthrough); + [id(0x00000066), propget] HRESULT AcceleratorPassthrough([out, retval] long * pacceleratorPassthrough); + [id(0x00000067), propput] HRESULT ShadowBitmap([in] long pshadowBitmap); + [id(0x00000067), propget] HRESULT ShadowBitmap([out, retval] long * pshadowBitmap); + [id(0x00000068), propput] HRESULT TransportType([in] long ptransportType); + [id(0x00000068), propget] HRESULT TransportType([out, retval] long * ptransportType); + [id(0x00000069), propput] HRESULT SasSequence([in] long psasSequence); + [id(0x00000069), propget] HRESULT SasSequence([out, retval] long * psasSequence); + [id(0x0000006a), propput] HRESULT EncryptionEnabled([in] long pencryptionEnabled); + [id(0x0000006a), propget] HRESULT EncryptionEnabled([out, retval] long * pencryptionEnabled); + [id(0x0000006b), propput] HRESULT DedicatedTerminal([in] long pdedicatedTerminal); + [id(0x0000006b), propget] HRESULT DedicatedTerminal([out, retval] long * pdedicatedTerminal); + [id(0x0000006c), propput] HRESULT RDPPort([in] long prdpPort); + [id(0x0000006c), propget] HRESULT RDPPort([out, retval] long * prdpPort); + [id(0x0000006d), propput] HRESULT EnableMouse([in] long penableMouse); + [id(0x0000006d), propget] HRESULT EnableMouse([out, retval] long * penableMouse); + [id(0x0000006e), propput] HRESULT DisableCtrlAltDel([in] long pdisableCtrlAltDel); + [id(0x0000006e), propget] HRESULT DisableCtrlAltDel([out, retval] long * pdisableCtrlAltDel); + [id(0x0000006f), propput] HRESULT EnableWindowsKey([in] long penableWindowsKey); + [id(0x0000006f), propget] HRESULT EnableWindowsKey([out, retval] long * penableWindowsKey); + [id(0x00000070), propput] HRESULT DoubleClickDetect([in] long pdoubleClickDetect); + [id(0x00000070), propget] HRESULT DoubleClickDetect([out, retval] long * pdoubleClickDetect); + [id(0x00000071), propput] HRESULT MaximizeShell([in] long pmaximizeShell); + [id(0x00000071), propget] HRESULT MaximizeShell([out, retval] long * pmaximizeShell); + [id(0x00000072), propput] HRESULT HotKeyFullScreen([in] long photKeyFullScreen); + [id(0x00000072), propget] HRESULT HotKeyFullScreen([out, retval] long * photKeyFullScreen); + [id(0x00000073), propput] HRESULT HotKeyCtrlEsc([in] long photKeyCtrlEsc); + [id(0x00000073), propget] HRESULT HotKeyCtrlEsc([out, retval] long * photKeyCtrlEsc); + [id(0x00000074), propput] HRESULT HotKeyAltEsc([in] long photKeyAltEsc); + [id(0x00000074), propget] HRESULT HotKeyAltEsc([out, retval] long * photKeyAltEsc); + [id(0x00000075), propput] HRESULT HotKeyAltTab([in] long photKeyAltTab); + [id(0x00000075), propget] HRESULT HotKeyAltTab([out, retval] long * photKeyAltTab); + [id(0x00000076), propput] HRESULT HotKeyAltShiftTab([in] long photKeyAltShiftTab); + [id(0x00000076), propget] HRESULT HotKeyAltShiftTab([out, retval] long * photKeyAltShiftTab); + [id(0x00000077), propput] HRESULT HotKeyAltSpace([in] long photKeyAltSpace); + [id(0x00000077), propget] HRESULT HotKeyAltSpace([out, retval] long * photKeyAltSpace); + [id(0x00000078), propput] HRESULT HotKeyCtrlAltDel([in] long photKeyCtrlAltDel); + [id(0x00000078), propget] HRESULT HotKeyCtrlAltDel([out, retval] long * photKeyCtrlAltDel); + [id(0x0000007b), propput] HRESULT orderDrawThreshold([in] long porderDrawThreshold); + [id(0x0000007b), propget] HRESULT orderDrawThreshold([out, retval] long * porderDrawThreshold); + [id(0x0000007c), propput] HRESULT BitmapCacheSize([in] long pbitmapCacheSize); + [id(0x0000007c), propget] HRESULT BitmapCacheSize([out, retval] long * pbitmapCacheSize); + [id(0x0000007d), propput] HRESULT BitmapVirtualCacheSize([in] long pbitmapVirtualCacheSize); + [id(0x0000007d), propget] HRESULT BitmapVirtualCacheSize([out, retval] long * pbitmapVirtualCacheSize); + [id(0x000000af), propput] HRESULT ScaleBitmapCachesByBPP([in] long pbScale); + [id(0x000000af), propget] HRESULT ScaleBitmapCachesByBPP([out, retval] long * pbScale); + [id(0x0000007e), propput] HRESULT NumBitmapCaches([in] long pnumBitmapCaches); + [id(0x0000007e), propget] HRESULT NumBitmapCaches([out, retval] long * pnumBitmapCaches); + [id(0x0000007f), propput] HRESULT CachePersistenceActive([in] long pcachePersistenceActive); + [id(0x0000007f), propget] HRESULT CachePersistenceActive([out, retval] long * pcachePersistenceActive); + [id(0x0000008a), propput] HRESULT PersistCacheDirectory([in] BSTR rhs); + [id(0x0000009c), propput] HRESULT brushSupportLevel([in] long pbrushSupportLevel); + [id(0x0000009c), propget] HRESULT brushSupportLevel([out, retval] long * pbrushSupportLevel); + [id(0x0000009d), propput] HRESULT minInputSendInterval([in] long pminInputSendInterval); + [id(0x0000009d), propget] HRESULT minInputSendInterval([out, retval] long * pminInputSendInterval); + [id(0x0000009e), propput] HRESULT InputEventsAtOnce([in] long pinputEventsAtOnce); + [id(0x0000009e), propget] HRESULT InputEventsAtOnce([out, retval] long * pinputEventsAtOnce); + [id(0x0000009f), propput] HRESULT maxEventCount([in] long pmaxEventCount); + [id(0x0000009f), propget] HRESULT maxEventCount([out, retval] long * pmaxEventCount); + [id(0x000000a0), propput] HRESULT keepAliveInterval([in] long pkeepAliveInterval); + [id(0x000000a0), propget] HRESULT keepAliveInterval([out, retval] long * pkeepAliveInterval); + [id(0x000000a3), propput] HRESULT shutdownTimeout([in] long pshutdownTimeout); + [id(0x000000a3), propget] HRESULT shutdownTimeout([out, retval] long * pshutdownTimeout); + [id(0x000000a4), propput] HRESULT overallConnectionTimeout([in] long poverallConnectionTimeout); + [id(0x000000a4), propget] HRESULT overallConnectionTimeout([out, retval] long * poverallConnectionTimeout); + [id(0x000000a5), propput] HRESULT singleConnectionTimeout([in] long psingleConnectionTimeout); + [id(0x000000a5), propget] HRESULT singleConnectionTimeout([out, retval] long * psingleConnectionTimeout); + [id(0x000000a6), propput] HRESULT KeyboardType([in] long pkeyboardType); + [id(0x000000a6), propget] HRESULT KeyboardType([out, retval] long * pkeyboardType); + [id(0x000000a7), propput] HRESULT KeyboardSubType([in] long pkeyboardSubType); + [id(0x000000a7), propget] HRESULT KeyboardSubType([out, retval] long * pkeyboardSubType); + [id(0x000000a8), propput] HRESULT KeyboardFunctionKey([in] long pkeyboardFunctionKey); + [id(0x000000a8), propget] HRESULT KeyboardFunctionKey([out, retval] long * pkeyboardFunctionKey); + [id(0x000000a9), propput] HRESULT WinceFixedPalette([in] long pwinceFixedPalette); + [id(0x000000a9), propget] HRESULT WinceFixedPalette([out, retval] long * pwinceFixedPalette); + [id(0x000000b2), propput] HRESULT ConnectToServerConsole([in] VARIANT_BOOL pConnectToConsole); + [id(0x000000b2), propget] HRESULT ConnectToServerConsole([out, retval] VARIANT_BOOL * pConnectToConsole); + [id(0x000000b6), propput] HRESULT BitmapPersistence([in] long pbitmapPersistence); + [id(0x000000b6), propget] HRESULT BitmapPersistence([out, retval] long * pbitmapPersistence); + [id(0x000000b7), propput] HRESULT MinutesToIdleTimeout([in] long pminutesToIdleTimeout); + [id(0x000000b7), propget] HRESULT MinutesToIdleTimeout([out, retval] long * pminutesToIdleTimeout); + [id(0x000000b8), propput] HRESULT SmartSizing([in] VARIANT_BOOL pfSmartSizing); + [id(0x000000b8), propget] HRESULT SmartSizing([out, retval] VARIANT_BOOL * pfSmartSizing); + [id(0x000000b9), propput] HRESULT RdpdrLocalPrintingDocName([in] BSTR pLocalPrintingDocName); + [id(0x000000b9), propget] HRESULT RdpdrLocalPrintingDocName([out, retval] BSTR * pLocalPrintingDocName); + [id(0x000000c9), propput] HRESULT RdpdrClipCleanTempDirString([in] BSTR clipCleanTempDirString); + [id(0x000000c9), propget] HRESULT RdpdrClipCleanTempDirString([out, retval] BSTR * clipCleanTempDirString); + [id(0x000000ca), propput] HRESULT RdpdrClipPasteInfoString([in] BSTR clipPasteInfoString); + [id(0x000000ca), propget] HRESULT RdpdrClipPasteInfoString([out, retval] BSTR * clipPasteInfoString); + [id(0x000000ba), propput] HRESULT ClearTextPassword([in] BSTR rhs); + [id(0x000000bb), propput] HRESULT DisplayConnectionBar([in] VARIANT_BOOL pDisplayConnectionBar); + [id(0x000000bb), propget] HRESULT DisplayConnectionBar([out, retval] VARIANT_BOOL * pDisplayConnectionBar); + [id(0x000000bc), propput] HRESULT PinConnectionBar([in] VARIANT_BOOL pPinConnectionBar); + [id(0x000000bc), propget] HRESULT PinConnectionBar([out, retval] VARIANT_BOOL * pPinConnectionBar); + [id(0x000000bd), propput] HRESULT GrabFocusOnConnect([in] VARIANT_BOOL pfGrabFocusOnConnect); + [id(0x000000bd), propget] HRESULT GrabFocusOnConnect([out, retval] VARIANT_BOOL * pfGrabFocusOnConnect); + [id(0x000000be), propput] HRESULT LoadBalanceInfo([in] BSTR pLBInfo); + [id(0x000000be), propget] HRESULT LoadBalanceInfo([out, retval] BSTR * pLBInfo); + [id(0x000000bf), propput] HRESULT RedirectDrives([in] VARIANT_BOOL pRedirectDrives); + [id(0x000000bf), propget] HRESULT RedirectDrives([out, retval] VARIANT_BOOL * pRedirectDrives); + [id(0x000000c0), propput] HRESULT RedirectPrinters([in] VARIANT_BOOL pRedirectPrinters); + [id(0x000000c0), propget] HRESULT RedirectPrinters([out, retval] VARIANT_BOOL * pRedirectPrinters); + [id(0x000000c1), propput] HRESULT RedirectPorts([in] VARIANT_BOOL pRedirectPorts); + [id(0x000000c1), propget] HRESULT RedirectPorts([out, retval] VARIANT_BOOL * pRedirectPorts); + [id(0x000000c2), propput] HRESULT RedirectSmartCards([in] VARIANT_BOOL pRedirectSmartCards); + [id(0x000000c2), propget] HRESULT RedirectSmartCards([out, retval] VARIANT_BOOL * pRedirectSmartCards); + [id(0x000000c3), propput] HRESULT BitmapVirtualCache16BppSize([in] long pBitmapVirtualCache16BppSize); + [id(0x000000c3), propget] HRESULT BitmapVirtualCache16BppSize([out, retval] long * pBitmapVirtualCache16BppSize); + [id(0x000000c4), propput] HRESULT BitmapVirtualCache24BppSize([in] long pBitmapVirtualCache24BppSize); + [id(0x000000c4), propget] HRESULT BitmapVirtualCache24BppSize([out, retval] long * pBitmapVirtualCache24BppSize); + [id(0x000000c8), propput] HRESULT PerformanceFlags([in] long pDisableList); + [id(0x000000c8), propget] HRESULT PerformanceFlags([out, retval] long * pDisableList); + [id(0x000000cb), propput] HRESULT ConnectWithEndpoint([in] VARIANT * rhs); + [id(0x000000cc), propput] HRESULT NotifyTSPublicKey([in] VARIANT_BOOL pfNotify); + [id(0x000000cc), propget] HRESULT NotifyTSPublicKey([out, retval] VARIANT_BOOL * pfNotify); + }; + + [ + uuid(9AC42117-2B76-4320-AA44-0E616AB8437B), + dual, + oleautomation + ] + interface IMsRdpClientAdvancedSettings2: IMsRdpClientAdvancedSettings + { + [id(0x000000cd), propget] HRESULT CanAutoReconnect([out, retval] VARIANT_BOOL * pfCanAutoReconnect); + [id(0x000000ce), propput] HRESULT EnableAutoReconnect([in] VARIANT_BOOL pfEnableAutoReconnect); + [id(0x000000ce), propget] HRESULT EnableAutoReconnect([out, retval] VARIANT_BOOL * pfEnableAutoReconnect); + [id(0x000000cf), propput] HRESULT MaxReconnectAttempts([in] long pMaxReconnectAttempts); + [id(0x000000cf), propget] HRESULT MaxReconnectAttempts([out, retval] long * pMaxReconnectAttempts); + }; + + [ + uuid(19CD856B-C542-4C53-ACEE-F127E3BE1A59), + dual, + oleautomation + ] + interface IMsRdpClientAdvancedSettings3: IMsRdpClientAdvancedSettings2 + { + [id(0x000000d2), propput] HRESULT ConnectionBarShowMinimizeButton([in] VARIANT_BOOL pfShowMinimize); + [id(0x000000d2), propget] HRESULT ConnectionBarShowMinimizeButton([out, retval] VARIANT_BOOL * pfShowMinimize); + [id(0x000000d3), propput] HRESULT ConnectionBarShowRestoreButton([in] VARIANT_BOOL pfShowRestore); + [id(0x000000d3), propget] HRESULT ConnectionBarShowRestoreButton([out, retval] VARIANT_BOOL * pfShowRestore); + }; + + [ + uuid(FBA7F64E-7345-4405-AE50-FA4A763DC0DE), + dual, + oleautomation + ] + interface IMsRdpClientAdvancedSettings4: IMsRdpClientAdvancedSettings3 + { + [id(0x000000d4), propput] HRESULT AuthenticationLevel([in] unsigned int puiAuthLevel); + [id(0x000000d4), propget] HRESULT AuthenticationLevel([out, retval] unsigned int * puiAuthLevel); + }; + + [ + uuid(C9D65442-A0F9-45B2-8F73-D61D2DB8CBB6), + dual, + oleautomation + ] + interface IMsTscSecuredSettings: IDispatch + { + [id(0x00000001), propput] HRESULT StartProgram([in] BSTR pStartProgram); + [id(0x00000001), propget] HRESULT StartProgram([out, retval] BSTR * pStartProgram); + [id(0x00000002), propput] HRESULT WorkDir([in] BSTR pWorkDir); + [id(0x00000002), propget] HRESULT WorkDir([out, retval] BSTR * pWorkDir); + [id(0x00000003), propput] HRESULT FullScreen([in] long pfFullScreen); + [id(0x00000003), propget] HRESULT FullScreen([out, retval] long * pfFullScreen); + }; + + [ + uuid(605BEFCF-39C1-45CC-A811-068FB7BE346D), + dual, + oleautomation + ] + interface IMsRdpClientSecuredSettings: IMsTscSecuredSettings + { + [id(0x00000004), propput] HRESULT KeyboardHookMode([in] long pkeyboardHookMode); + [id(0x00000004), propget] HRESULT KeyboardHookMode([out, retval] long * pkeyboardHookMode); + [id(0x00000005), propput] HRESULT AudioRedirectionMode([in] long pAudioRedirectionMode); + [id(0x00000005), propget] HRESULT AudioRedirectionMode([out, retval] long * pAudioRedirectionMode); + }; + + [ + uuid(209D0EB9-6254-47B1-9033-A98DAE55BB27), + hidden, + dual, + oleautomation + ] + interface IMsTscDebug: IDispatch + { + [id(0x000000c8), propput] HRESULT HatchBitmapPDU([in] long phatchBitmapPDU); + [id(0x000000c8), propget] HRESULT HatchBitmapPDU([out, retval] long * phatchBitmapPDU); + [id(0x000000c9), propput] HRESULT HatchSSBOrder([in] long phatchSSBOrder); + [id(0x000000c9), propget] HRESULT HatchSSBOrder([out, retval] long * phatchSSBOrder); + [id(0x000000ca), propput] HRESULT HatchMembltOrder([in] long phatchMembltOrder); + [id(0x000000ca), propget] HRESULT HatchMembltOrder([out, retval] long * phatchMembltOrder); + [id(0x000000cb), propput] HRESULT HatchIndexPDU([in] long phatchIndexPDU); + [id(0x000000cb), propget] HRESULT HatchIndexPDU([out, retval] long * phatchIndexPDU); + [id(0x000000cc), propput] HRESULT LabelMemblt([in] long plabelMemblt); + [id(0x000000cc), propget] HRESULT LabelMemblt([out, retval] long * plabelMemblt); + [id(0x000000cd), propput] HRESULT BitmapCacheMonitor([in] long pbitmapCacheMonitor); + [id(0x000000cd), propget] HRESULT BitmapCacheMonitor([out, retval] long * pbitmapCacheMonitor); + [id(0x000000ce), propput] HRESULT MallocFailuresPercent([in] long pmallocFailuresPercent); + [id(0x000000ce), propget] HRESULT MallocFailuresPercent([out, retval] long * pmallocFailuresPercent); + [id(0x000000cf), propput] HRESULT MallocHugeFailuresPercent([in] long pmallocHugeFailuresPercent); + [id(0x000000cf), propget] HRESULT MallocHugeFailuresPercent([out, retval] long * pmallocHugeFailuresPercent); + [id(0x000000d0), propput] HRESULT NetThroughput([in] long NetThroughput); + [id(0x000000d0), propget] HRESULT NetThroughput([out, retval] long * NetThroughput); + [id(0x000000d1), propput] HRESULT CLXCmdLine([in] BSTR pCLXCmdLine); + [id(0x000000d1), propget] HRESULT CLXCmdLine([out, retval] BSTR * pCLXCmdLine); + [id(0x000000d2), propput] HRESULT CLXDll([in] BSTR pCLXDll); + [id(0x000000d2), propget] HRESULT CLXDll([out, retval] BSTR * pCLXDll); + }; + + [ +#ifdef MSTSCLIB_REDIST_ + uuid(1FB464C8-09BB-4017-A2F5-EB742F04392F) +#else + uuid(A41A4187-5A86-4E26-B40A-856F9035D9CB) +#endif + ] + coclass MsTscAx + { + interface IMsRdpClient; + [default] interface IMsTscAx; + [default, source] dispinterface IMsTscAxEvents; + interface IMsTscNonScriptable; + interface IMsRdpClientNonScriptable; + }; + + [ +#ifdef MSTSCLIB_REDIST_ + uuid(791FA017-2DE3-492E-ACC5-53C67A2B94D0) +#else + uuid(7CACBD7B-0D99-468F-AC33-22E495C0AFE5) +#endif + ] + coclass MsRdpClient + { + [default] interface IMsRdpClient; + interface IMsTscAx; + [default, source] dispinterface IMsTscAxEvents; + interface IMsTscNonScriptable; + interface IMsRdpClientNonScriptable; + }; + + [ +#ifdef MSTSCLIB_REDIST_ + uuid(9059F30F-4EB1-4BD2-9FDC-36F43A218F4A) +#else + uuid(3523C2FB-4031-44E4-9A3B-F1E94986EE7F) +#endif + ] + coclass MsRdpClient2 + { + [default] interface IMsRdpClient2; + interface IMsRdpClient; + interface IMsTscAx; + [default, source] dispinterface IMsTscAxEvents; + interface IMsTscNonScriptable; + interface IMsRdpClientNonScriptable; + }; + + [ +#ifdef MSTSCLIB_REDIST_ + uuid(7584C670-2274-4EFB-B00B-D6AABA6D3850) +#else + uuid(ACE575FD-1FCF-4074-9401-EBAB990FA9DE) +#endif + ] + coclass MsRdpClient3 + { + [default] interface IMsRdpClient3; + interface IMsRdpClient2; + interface IMsRdpClient; + interface IMsTscAx; + [default, source] dispinterface IMsTscAxEvents; + interface IMsTscNonScriptable; + interface IMsRdpClientNonScriptable; + }; + + [uuid(6AE29350-321B-42BE-BBE5-12FB5270C0DE)] + coclass MsRdpClient4 + { + [default] interface IMsRdpClient4; + interface IMsRdpClient3; + interface IMsRdpClient2; + interface IMsRdpClient; + interface IMsTscAx; + [default, source] dispinterface IMsTscAxEvents; + interface IMsTscNonScriptable; + interface IMsRdpClientNonScriptable; + interface IMsRdpClientNonScriptable2; + }; + +}; + +// EOF diff --git a/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib.rc b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib.rc new file mode 100644 index 00000000000..fa268c7e9ea --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib.rc @@ -0,0 +1,3 @@ +#define TYPELIB_RESOURCEID__ 1 +#include "./typelib.rh" +// EOF diff --git a/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_h.h b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_h.h new file mode 100644 index 00000000000..2685131f18a --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_h.h @@ -0,0 +1,8946 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 7.00.0493 */ +/* at Sun Aug 13 16:46:06 2006 + */ +/* Compiler settings for .\mstsclib.idl: + Oicf, W1, Zp8, env=Win32 (32b run) + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +//@@MIDL_FILE_HEADING( ) + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + + +#ifndef __mstsclib_h_h__ +#define __mstsclib_h_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IMsTscAxEvents_FWD_DEFINED__ +#define __IMsTscAxEvents_FWD_DEFINED__ +typedef interface IMsTscAxEvents IMsTscAxEvents; +#endif /* __IMsTscAxEvents_FWD_DEFINED__ */ + + +#ifndef __IMsTscAx_FWD_DEFINED__ +#define __IMsTscAx_FWD_DEFINED__ +typedef interface IMsTscAx IMsTscAx; +#endif /* __IMsTscAx_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient_FWD_DEFINED__ +#define __IMsRdpClient_FWD_DEFINED__ +typedef interface IMsRdpClient IMsRdpClient; +#endif /* __IMsRdpClient_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient2_FWD_DEFINED__ +#define __IMsRdpClient2_FWD_DEFINED__ +typedef interface IMsRdpClient2 IMsRdpClient2; +#endif /* __IMsRdpClient2_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient3_FWD_DEFINED__ +#define __IMsRdpClient3_FWD_DEFINED__ +typedef interface IMsRdpClient3 IMsRdpClient3; +#endif /* __IMsRdpClient3_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient4_FWD_DEFINED__ +#define __IMsRdpClient4_FWD_DEFINED__ +typedef interface IMsRdpClient4 IMsRdpClient4; +#endif /* __IMsRdpClient4_FWD_DEFINED__ */ + + +#ifndef __IMsTscNonScriptable_FWD_DEFINED__ +#define __IMsTscNonScriptable_FWD_DEFINED__ +typedef interface IMsTscNonScriptable IMsTscNonScriptable; +#endif /* __IMsTscNonScriptable_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable_FWD_DEFINED__ +#define __IMsRdpClientNonScriptable_FWD_DEFINED__ +typedef interface IMsRdpClientNonScriptable IMsRdpClientNonScriptable; +#endif /* __IMsRdpClientNonScriptable_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable2_FWD_DEFINED__ +#define __IMsRdpClientNonScriptable2_FWD_DEFINED__ +typedef interface IMsRdpClientNonScriptable2 IMsRdpClientNonScriptable2; +#endif /* __IMsRdpClientNonScriptable2_FWD_DEFINED__ */ + + +#ifndef __IMsTscAdvancedSettings_FWD_DEFINED__ +#define __IMsTscAdvancedSettings_FWD_DEFINED__ +typedef interface IMsTscAdvancedSettings IMsTscAdvancedSettings; +#endif /* __IMsTscAdvancedSettings_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings IMsRdpClientAdvancedSettings; +#endif /* __IMsRdpClientAdvancedSettings_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings2_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings2_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings2 IMsRdpClientAdvancedSettings2; +#endif /* __IMsRdpClientAdvancedSettings2_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings3_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings3_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings3 IMsRdpClientAdvancedSettings3; +#endif /* __IMsRdpClientAdvancedSettings3_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings4_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings4_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings4 IMsRdpClientAdvancedSettings4; +#endif /* __IMsRdpClientAdvancedSettings4_FWD_DEFINED__ */ + + +#ifndef __IMsTscSecuredSettings_FWD_DEFINED__ +#define __IMsTscSecuredSettings_FWD_DEFINED__ +typedef interface IMsTscSecuredSettings IMsTscSecuredSettings; +#endif /* __IMsTscSecuredSettings_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientSecuredSettings_FWD_DEFINED__ +#define __IMsRdpClientSecuredSettings_FWD_DEFINED__ +typedef interface IMsRdpClientSecuredSettings IMsRdpClientSecuredSettings; +#endif /* __IMsRdpClientSecuredSettings_FWD_DEFINED__ */ + + +#ifndef __IMsTscDebug_FWD_DEFINED__ +#define __IMsTscDebug_FWD_DEFINED__ +typedef interface IMsTscDebug IMsTscDebug; +#endif /* __IMsTscDebug_FWD_DEFINED__ */ + + +#ifndef __MsTscAx_FWD_DEFINED__ +#define __MsTscAx_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsTscAx MsTscAx; +#else +typedef struct MsTscAx MsTscAx; +#endif /* __cplusplus */ + +#endif /* __MsTscAx_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient_FWD_DEFINED__ +#define __MsRdpClient_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient MsRdpClient; +#else +typedef struct MsRdpClient MsRdpClient; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient2_FWD_DEFINED__ +#define __MsRdpClient2_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient2 MsRdpClient2; +#else +typedef struct MsRdpClient2 MsRdpClient2; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient2_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient3_FWD_DEFINED__ +#define __MsRdpClient3_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient3 MsRdpClient3; +#else +typedef struct MsRdpClient3 MsRdpClient3; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient3_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient4_FWD_DEFINED__ +#define __MsRdpClient4_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient4 MsRdpClient4; +#else +typedef struct MsRdpClient4 MsRdpClient4; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient4_FWD_DEFINED__ */ + + +#ifdef __cplusplus +extern "C"{ +#endif + + + +#ifndef __MSTSCLib_LIBRARY_DEFINED__ +#define __MSTSCLib_LIBRARY_DEFINED__ + +/* library MSTSCLib */ +/* [version][uuid] */ + + + + + + + + + + + + + + + + + + +typedef /* [public][public][public] */ +enum __MIDL___MIDL_itf_mstsax_0275_0001 + { autoReconnectContinueAutomatic = 0, + autoReconnectContinueStop = 1, + autoReconnectContinueManual = 2 + } AutoReconnectContinueState; + +typedef /* [public][public][public] */ +enum __MIDL_IMsRdpClient_0001 + { exDiscReasonNoInfo = 0, + exDiscReasonAPIInitiatedDisconnect = 1, + exDiscReasonAPIInitiatedLogoff = 2, + exDiscReasonServerIdleTimeout = 3, + exDiscReasonServerLogonTimeout = 4, + exDiscReasonReplacedByOtherConnection = 5, + exDiscReasonOutOfMemory = 6, + exDiscReasonServerDeniedConnection = 7, + exDiscReasonServerDeniedConnectionFips = 8, + exDiscReasonLicenseInternal = 256, + exDiscReasonLicenseNoLicenseServer = 257, + exDiscReasonLicenseNoLicense = 258, + exDiscReasonLicenseErrClientMsg = 259, + exDiscReasonLicenseHwidDoesntMatchLicense = 260, + exDiscReasonLicenseErrClientLicense = 261, + exDiscReasonLicenseCantFinishProtocol = 262, + exDiscReasonLicenseClientEndedProtocol = 263, + exDiscReasonLicenseErrClientEncryption = 264, + exDiscReasonLicenseCantUpgradeLicense = 265, + exDiscReasonLicenseNoRemoteConnections = 266, + exDiscReasonProtocolRangeStart = 4096, + exDiscReasonProtocolRangeEnd = 32767 + } ExtendedDisconnectReasonCode; + +typedef /* [public][public][public] */ +enum __MIDL_IMsRdpClient_0002 + { controlCloseCanProceed = 0, + controlCloseWaitForEvents = 1 + } ControlCloseStatus; + +typedef /* [custom][public] */ unsigned __int3264 UINT_PTR; + +typedef /* [custom][public] */ __int3264 LONG_PTR; + + +EXTERN_C const IID LIBID_MSTSCLib; + +#ifndef __IMsTscAxEvents_DISPINTERFACE_DEFINED__ +#define __IMsTscAxEvents_DISPINTERFACE_DEFINED__ + +/* dispinterface IMsTscAxEvents */ +/* [uuid] */ + + +EXTERN_C const IID DIID_IMsTscAxEvents; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("336D5562-EFA8-482E-8CB3-C5C0FC7A7DB6") + IMsTscAxEvents : public IDispatch + { + }; + +#else /* C style interface */ + + typedef struct IMsTscAxEventsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscAxEvents * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscAxEvents * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscAxEvents * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscAxEvents * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscAxEvents * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscAxEvents * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscAxEvents * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + END_INTERFACE + } IMsTscAxEventsVtbl; + + interface IMsTscAxEvents + { + CONST_VTBL struct IMsTscAxEventsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscAxEvents_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscAxEvents_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscAxEvents_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscAxEvents_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscAxEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscAxEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscAxEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + +#endif /* __IMsTscAxEvents_DISPINTERFACE_DEFINED__ */ + + +#ifndef __IMsTscAx_INTERFACE_DEFINED__ +#define __IMsTscAx_INTERFACE_DEFINED__ + +/* interface IMsTscAx */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsTscAx; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8C11EFAE-92C3-11D1-BC1E-00C04FA31489") + IMsTscAx : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Server( + /* [in] */ BSTR pServer) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Server( + /* [retval][out] */ BSTR *pServer) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Domain( + /* [in] */ BSTR pDomain) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Domain( + /* [retval][out] */ BSTR *pDomain) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_UserName( + /* [in] */ BSTR pUserName) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_UserName( + /* [retval][out] */ BSTR *pUserName) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisconnectedText( + /* [in] */ BSTR pDisconnectedText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisconnectedText( + /* [retval][out] */ BSTR *pDisconnectedText) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectingText( + /* [in] */ BSTR pConnectingText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectingText( + /* [retval][out] */ BSTR *pConnectingText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Connected( + /* [retval][out] */ short *pIsConnected) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DesktopWidth( + /* [in] */ long pVal) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DesktopWidth( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DesktopHeight( + /* [in] */ long pVal) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DesktopHeight( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_StartConnected( + /* [in] */ long pfStartConnected) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_StartConnected( + /* [retval][out] */ long *pfStartConnected) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HorizontalScrollBarVisible( + /* [retval][out] */ long *pfHScrollVisible) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_VerticalScrollBarVisible( + /* [retval][out] */ long *pfVScrollVisible) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_FullScreenTitle( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CipherStrength( + /* [retval][out] */ long *pCipherStrength) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Version( + /* [retval][out] */ BSTR *pVersion) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SecuredSettingsEnabled( + /* [retval][out] */ long *pSecuredSettingsEnabled) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SecuredSettings( + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings( + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings) = 0; + + virtual /* [hidden][propget][id] */ HRESULT STDMETHODCALLTYPE get_Debugger( + /* [retval][out] */ IMsTscDebug **ppDebugger) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Connect( void) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Disconnect( void) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE CreateVirtualChannels( + /* [in] */ BSTR newVal) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE SendOnVirtualChannel( + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscAxVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscAx * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscAx * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscAx * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscAx * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscAx * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscAx * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscAx * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsTscAx * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsTscAx * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsTscAx * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsTscAx * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsTscAx * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsTscAx * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsTscAx * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsTscAx * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsTscAx * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsTscAx * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsTscAx * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsTscAx * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsTscAx * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsTscAx * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsTscAx * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsTscAx * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsTscAx * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsTscAx * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsTscAx * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsTscAx * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsTscAx * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsTscAx * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsTscAx * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsTscAx * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + END_INTERFACE + } IMsTscAxVtbl; + + interface IMsTscAx + { + CONST_VTBL struct IMsTscAxVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscAx_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscAx_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscAx_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscAx_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscAx_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscAx_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscAx_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscAx_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsTscAx_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsTscAx_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsTscAx_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsTscAx_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsTscAx_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsTscAx_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsTscAx_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsTscAx_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsTscAx_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsTscAx_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsTscAx_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsTscAx_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsTscAx_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsTscAx_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsTscAx_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsTscAx_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsTscAx_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsTscAx_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsTscAx_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsTscAx_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsTscAx_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsTscAx_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsTscAx_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsTscAx_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsTscAx_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsTscAx_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsTscAx_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsTscAx_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsTscAx_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscAx_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient_INTERFACE_DEFINED__ +#define __IMsRdpClient_INTERFACE_DEFINED__ + +/* interface IMsRdpClient */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("92B4A539-7115-4B7C-A5A9-E5D9EFC2780A") + IMsRdpClient : public IMsTscAx + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ColorDepth( + /* [in] */ long pcolorDepth) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ColorDepth( + /* [retval][out] */ long *pcolorDepth) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings2( + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SecuredSettings2( + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ExtendedDisconnectReason( + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_FullScreen( + /* [in] */ VARIANT_BOOL pfFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_FullScreen( + /* [retval][out] */ VARIANT_BOOL *pfFullScreen) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE SetVirtualChannelOptions( + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE GetVirtualChannelOptions( + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE RequestClose( + /* [retval][out] */ ControlCloseStatus *pCloseStatus) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + END_INTERFACE + } IMsRdpClientVtbl; + + interface IMsRdpClient + { + CONST_VTBL struct IMsRdpClientVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient2_INTERFACE_DEFINED__ +#define __IMsRdpClient2_INTERFACE_DEFINED__ + +/* interface IMsRdpClient2 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("E7E17DC4-3B71-4BA7-A8E6-281FFADCA28F") + IMsRdpClient2 : public IMsRdpClient + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings3( + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectedStatusText( + /* [in] */ BSTR pConnectedStatusText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectedStatusText( + /* [retval][out] */ BSTR *pConnectedStatusText) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClient2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient2 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient2 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient2 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient2 * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient2 * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient2 * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient2 * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient2 * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient2 * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient2 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient2 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient2 * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient2 * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient2 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient2 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient2 * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient2 * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient2 * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient2 * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient2 * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient2 * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient2 * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient2 * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient2 * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings3 )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectedStatusText )( + IMsRdpClient2 * This, + /* [in] */ BSTR pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectedStatusText )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pConnectedStatusText); + + END_INTERFACE + } IMsRdpClient2Vtbl; + + interface IMsRdpClient2 + { + CONST_VTBL struct IMsRdpClient2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient2_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient2_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient2_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient2_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient2_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient2_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient2_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient2_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient2_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient2_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient2_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient2_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient2_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient2_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient2_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient2_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient2_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient2_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient2_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient2_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient2_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient2_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient2_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient2_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient2_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient2_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient2_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient2_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient2_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient2_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient2_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient2_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient2_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient2_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient2_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient2_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient2_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient2_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient2_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient2_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + + +#define IMsRdpClient2_get_AdvancedSettings3(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings3(This,ppAdvSettings) ) + +#define IMsRdpClient2_put_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> put_ConnectedStatusText(This,pConnectedStatusText) ) + +#define IMsRdpClient2_get_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> get_ConnectedStatusText(This,pConnectedStatusText) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient2_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient3_INTERFACE_DEFINED__ +#define __IMsRdpClient3_INTERFACE_DEFINED__ + +/* interface IMsRdpClient3 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("91B7CBC5-A72E-4FA0-9300-D647D7E897FF") + IMsRdpClient3 : public IMsRdpClient2 + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings4( + /* [retval][out] */ IMsRdpClientAdvancedSettings3 **ppAdvSettings) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClient3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient3 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient3 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient3 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient3 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient3 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient3 * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient3 * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient3 * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient3 * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient3 * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient3 * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient3 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient3 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient3 * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient3 * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient3 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient3 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient3 * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient3 * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient3 * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient3 * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient3 * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient3 * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient3 * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient3 * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient3 * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings3 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectedStatusText )( + IMsRdpClient3 * This, + /* [in] */ BSTR pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectedStatusText )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings4 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings3 **ppAdvSettings); + + END_INTERFACE + } IMsRdpClient3Vtbl; + + interface IMsRdpClient3 + { + CONST_VTBL struct IMsRdpClient3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient3_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient3_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient3_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient3_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient3_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient3_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient3_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient3_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient3_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient3_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient3_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient3_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient3_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient3_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient3_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient3_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient3_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient3_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient3_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient3_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient3_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient3_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient3_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient3_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient3_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient3_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient3_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient3_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient3_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient3_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient3_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient3_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient3_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient3_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient3_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient3_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient3_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient3_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient3_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient3_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient3_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + + +#define IMsRdpClient3_get_AdvancedSettings3(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings3(This,ppAdvSettings) ) + +#define IMsRdpClient3_put_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> put_ConnectedStatusText(This,pConnectedStatusText) ) + +#define IMsRdpClient3_get_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> get_ConnectedStatusText(This,pConnectedStatusText) ) + + +#define IMsRdpClient3_get_AdvancedSettings4(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings4(This,ppAdvSettings) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient3_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient4_INTERFACE_DEFINED__ +#define __IMsRdpClient4_INTERFACE_DEFINED__ + +/* interface IMsRdpClient4 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("095E0738-D97D-488B-B9F6-DD0E8D66C0DE") + IMsRdpClient4 : public IMsRdpClient3 + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings5( + /* [retval][out] */ IMsRdpClientAdvancedSettings4 **ppAdvSettings5) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClient4Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient4 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient4 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient4 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient4 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient4 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient4 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient4 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient4 * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient4 * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient4 * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient4 * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient4 * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient4 * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient4 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient4 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient4 * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient4 * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient4 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient4 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient4 * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient4 * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient4 * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient4 * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient4 * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient4 * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient4 * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient4 * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient4 * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings3 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectedStatusText )( + IMsRdpClient4 * This, + /* [in] */ BSTR pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectedStatusText )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings4 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings3 **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings5 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings4 **ppAdvSettings5); + + END_INTERFACE + } IMsRdpClient4Vtbl; + + interface IMsRdpClient4 + { + CONST_VTBL struct IMsRdpClient4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient4_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient4_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient4_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient4_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient4_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient4_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient4_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient4_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient4_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient4_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient4_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient4_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient4_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient4_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient4_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient4_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient4_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient4_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient4_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient4_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient4_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient4_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient4_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient4_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient4_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient4_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient4_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient4_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient4_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient4_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient4_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient4_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient4_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient4_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient4_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient4_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient4_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient4_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient4_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient4_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient4_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient4_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient4_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient4_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + + +#define IMsRdpClient4_get_AdvancedSettings3(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings3(This,ppAdvSettings) ) + +#define IMsRdpClient4_put_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> put_ConnectedStatusText(This,pConnectedStatusText) ) + +#define IMsRdpClient4_get_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> get_ConnectedStatusText(This,pConnectedStatusText) ) + + +#define IMsRdpClient4_get_AdvancedSettings4(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings4(This,ppAdvSettings) ) + + +#define IMsRdpClient4_get_AdvancedSettings5(This,ppAdvSettings5) \ + ( (This)->lpVtbl -> get_AdvancedSettings5(This,ppAdvSettings5) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient4_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscNonScriptable_INTERFACE_DEFINED__ +#define __IMsTscNonScriptable_INTERFACE_DEFINED__ + +/* interface IMsTscNonScriptable */ +/* [object][uuid] */ + + +EXTERN_C const IID IID_IMsTscNonScriptable; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C1E6743A-41C1-4A74-832A-0DD06C1C7A0E") + IMsTscNonScriptable : public IUnknown + { + public: + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ClearTextPassword( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PortablePassword( + /* [in] */ BSTR pPortablePass) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PortablePassword( + /* [retval][out] */ BSTR *pPortablePass) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PortableSalt( + /* [in] */ BSTR pPortableSalt) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PortableSalt( + /* [retval][out] */ BSTR *pPortableSalt) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_BinaryPassword( + /* [in] */ BSTR pBinaryPassword) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BinaryPassword( + /* [retval][out] */ BSTR *pBinaryPassword) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_BinarySalt( + /* [in] */ BSTR pSalt) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BinarySalt( + /* [retval][out] */ BSTR *pSalt) = 0; + + virtual HRESULT STDMETHODCALLTYPE ResetPassword( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscNonScriptableVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscNonScriptable * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscNonScriptable * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscNonScriptable * This); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsTscNonScriptable * This, + /* [in] */ BSTR rhs); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortablePassword )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pPortablePass); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortablePassword )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pPortablePass); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortableSalt )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pPortableSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortableSalt )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pPortableSalt); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinaryPassword )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pBinaryPassword); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinaryPassword )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pBinaryPassword); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinarySalt )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinarySalt )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pSalt); + + HRESULT ( STDMETHODCALLTYPE *ResetPassword )( + IMsTscNonScriptable * This); + + END_INTERFACE + } IMsTscNonScriptableVtbl; + + interface IMsTscNonScriptable + { + CONST_VTBL struct IMsTscNonScriptableVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscNonScriptable_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscNonScriptable_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscNonScriptable_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscNonScriptable_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsTscNonScriptable_put_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> put_PortablePassword(This,pPortablePass) ) + +#define IMsTscNonScriptable_get_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> get_PortablePassword(This,pPortablePass) ) + +#define IMsTscNonScriptable_put_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> put_PortableSalt(This,pPortableSalt) ) + +#define IMsTscNonScriptable_get_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> get_PortableSalt(This,pPortableSalt) ) + +#define IMsTscNonScriptable_put_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> put_BinaryPassword(This,pBinaryPassword) ) + +#define IMsTscNonScriptable_get_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> get_BinaryPassword(This,pBinaryPassword) ) + +#define IMsTscNonScriptable_put_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> put_BinarySalt(This,pSalt) ) + +#define IMsTscNonScriptable_get_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> get_BinarySalt(This,pSalt) ) + +#define IMsTscNonScriptable_ResetPassword(This) \ + ( (This)->lpVtbl -> ResetPassword(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscNonScriptable_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable_INTERFACE_DEFINED__ +#define __IMsRdpClientNonScriptable_INTERFACE_DEFINED__ + +/* interface IMsRdpClientNonScriptable */ +/* [object][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientNonScriptable; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2F079C4C-87B2-4AFD-97AB-20CDB43038AE") + IMsRdpClientNonScriptable : public IMsTscNonScriptable + { + public: + virtual HRESULT STDMETHODCALLTYPE NotifyRedirectDeviceChange( + /* [in] */ UINT_PTR wParam, + /* [in] */ LONG_PTR lParam) = 0; + + virtual HRESULT STDMETHODCALLTYPE SendKeys( + /* [in] */ long numKeys, + /* [in] */ VARIANT_BOOL *pbArrayKeyUp, + /* [in] */ long *plKeyData) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientNonScriptableVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientNonScriptable * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientNonScriptable * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientNonScriptable * This); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR rhs); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortablePassword )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pPortablePass); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortablePassword )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pPortablePass); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortableSalt )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pPortableSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortableSalt )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pPortableSalt); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinaryPassword )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pBinaryPassword); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinaryPassword )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pBinaryPassword); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinarySalt )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinarySalt )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pSalt); + + HRESULT ( STDMETHODCALLTYPE *ResetPassword )( + IMsRdpClientNonScriptable * This); + + HRESULT ( STDMETHODCALLTYPE *NotifyRedirectDeviceChange )( + IMsRdpClientNonScriptable * This, + /* [in] */ UINT_PTR wParam, + /* [in] */ LONG_PTR lParam); + + HRESULT ( STDMETHODCALLTYPE *SendKeys )( + IMsRdpClientNonScriptable * This, + /* [in] */ long numKeys, + /* [in] */ VARIANT_BOOL *pbArrayKeyUp, + /* [in] */ long *plKeyData); + + END_INTERFACE + } IMsRdpClientNonScriptableVtbl; + + interface IMsRdpClientNonScriptable + { + CONST_VTBL struct IMsRdpClientNonScriptableVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientNonScriptable_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientNonScriptable_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientNonScriptable_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientNonScriptable_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientNonScriptable_put_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> put_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable_get_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> get_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable_put_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> put_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable_get_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> get_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable_put_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> put_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable_get_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> get_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable_put_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> put_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable_get_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> get_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable_ResetPassword(This) \ + ( (This)->lpVtbl -> ResetPassword(This) ) + + +#define IMsRdpClientNonScriptable_NotifyRedirectDeviceChange(This,wParam,lParam) \ + ( (This)->lpVtbl -> NotifyRedirectDeviceChange(This,wParam,lParam) ) + +#define IMsRdpClientNonScriptable_SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) \ + ( (This)->lpVtbl -> SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClientNonScriptable_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable2_INTERFACE_DEFINED__ +#define __IMsRdpClientNonScriptable2_INTERFACE_DEFINED__ + +/* interface IMsRdpClientNonScriptable2 */ +/* [object][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientNonScriptable2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("17A5E535-4072-4FA4-AF32-C8D0D47345E9") + IMsRdpClientNonScriptable2 : public IMsRdpClientNonScriptable + { + public: + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_UIParentWindowHandle( + /* [in] */ HWND phwndUIParentWindowHandle) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_UIParentWindowHandle( + /* [retval][out] */ HWND *phwndUIParentWindowHandle) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientNonScriptable2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientNonScriptable2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientNonScriptable2 * This); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR rhs); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortablePassword )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pPortablePass); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortablePassword )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pPortablePass); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortableSalt )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pPortableSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortableSalt )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pPortableSalt); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinaryPassword )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pBinaryPassword); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinaryPassword )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pBinaryPassword); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinarySalt )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinarySalt )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pSalt); + + HRESULT ( STDMETHODCALLTYPE *ResetPassword )( + IMsRdpClientNonScriptable2 * This); + + HRESULT ( STDMETHODCALLTYPE *NotifyRedirectDeviceChange )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ UINT_PTR wParam, + /* [in] */ LONG_PTR lParam); + + HRESULT ( STDMETHODCALLTYPE *SendKeys )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ long numKeys, + /* [in] */ VARIANT_BOOL *pbArrayKeyUp, + /* [in] */ long *plKeyData); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_UIParentWindowHandle )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ HWND phwndUIParentWindowHandle); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_UIParentWindowHandle )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ HWND *phwndUIParentWindowHandle); + + END_INTERFACE + } IMsRdpClientNonScriptable2Vtbl; + + interface IMsRdpClientNonScriptable2 + { + CONST_VTBL struct IMsRdpClientNonScriptable2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientNonScriptable2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientNonScriptable2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientNonScriptable2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientNonScriptable2_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientNonScriptable2_put_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> put_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable2_get_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> get_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable2_put_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> put_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable2_get_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> get_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable2_put_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> put_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable2_get_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> get_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable2_put_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> put_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable2_get_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> get_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable2_ResetPassword(This) \ + ( (This)->lpVtbl -> ResetPassword(This) ) + + +#define IMsRdpClientNonScriptable2_NotifyRedirectDeviceChange(This,wParam,lParam) \ + ( (This)->lpVtbl -> NotifyRedirectDeviceChange(This,wParam,lParam) ) + +#define IMsRdpClientNonScriptable2_SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) \ + ( (This)->lpVtbl -> SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) ) + + +#define IMsRdpClientNonScriptable2_put_UIParentWindowHandle(This,phwndUIParentWindowHandle) \ + ( (This)->lpVtbl -> put_UIParentWindowHandle(This,phwndUIParentWindowHandle) ) + +#define IMsRdpClientNonScriptable2_get_UIParentWindowHandle(This,phwndUIParentWindowHandle) \ + ( (This)->lpVtbl -> get_UIParentWindowHandle(This,phwndUIParentWindowHandle) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClientNonScriptable2_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscAdvancedSettings_INTERFACE_DEFINED__ +#define __IMsTscAdvancedSettings_INTERFACE_DEFINED__ + +/* interface IMsTscAdvancedSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsTscAdvancedSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("809945CC-4B3B-4A92-A6B0-DBF9B5F2EF2D") + IMsTscAdvancedSettings : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Compress( + /* [in] */ long pcompress) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Compress( + /* [retval][out] */ long *pcompress) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapPeristence( + /* [in] */ long pbitmapPeristence) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapPeristence( + /* [retval][out] */ long *pbitmapPeristence) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_allowBackgroundInput( + /* [in] */ long pallowBackgroundInput) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_allowBackgroundInput( + /* [retval][out] */ long *pallowBackgroundInput) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyBoardLayoutStr( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PluginDlls( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_IconFile( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_IconIndex( + /* [in] */ long rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ContainerHandledFullScreen( + /* [in] */ long pContainerHandledFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ContainerHandledFullScreen( + /* [retval][out] */ long *pContainerHandledFullScreen) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisableRdpdr( + /* [in] */ long pDisableRdpdr) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisableRdpdr( + /* [retval][out] */ long *pDisableRdpdr) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscAdvancedSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscAdvancedSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscAdvancedSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscAdvancedSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscAdvancedSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscAdvancedSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsTscAdvancedSettings * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsTscAdvancedSettings * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsTscAdvancedSettings * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsTscAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsTscAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsTscAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsTscAdvancedSettings * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsTscAdvancedSettings * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsTscAdvancedSettings * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pDisableRdpdr); + + END_INTERFACE + } IMsTscAdvancedSettingsVtbl; + + interface IMsTscAdvancedSettings + { + CONST_VTBL struct IMsTscAdvancedSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscAdvancedSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscAdvancedSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscAdvancedSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscAdvancedSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscAdvancedSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscAdvancedSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscAdvancedSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscAdvancedSettings_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsTscAdvancedSettings_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsTscAdvancedSettings_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsTscAdvancedSettings_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsTscAdvancedSettings_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsTscAdvancedSettings_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsTscAdvancedSettings_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsTscAdvancedSettings_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsTscAdvancedSettings_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsTscAdvancedSettings_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsTscAdvancedSettings_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsTscAdvancedSettings_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsTscAdvancedSettings_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsTscAdvancedSettings_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscAdvancedSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3C65B4AB-12B3-465B-ACD4-B8DAD3BFF9E2") + IMsRdpClientAdvancedSettings : public IMsTscAdvancedSettings + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_SmoothScroll( + /* [in] */ long psmoothScroll) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SmoothScroll( + /* [retval][out] */ long *psmoothScroll) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AcceleratorPassthrough( + /* [in] */ long pacceleratorPassthrough) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AcceleratorPassthrough( + /* [retval][out] */ long *pacceleratorPassthrough) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ShadowBitmap( + /* [in] */ long pshadowBitmap) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ShadowBitmap( + /* [retval][out] */ long *pshadowBitmap) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_TransportType( + /* [in] */ long ptransportType) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_TransportType( + /* [retval][out] */ long *ptransportType) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_SasSequence( + /* [in] */ long psasSequence) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SasSequence( + /* [retval][out] */ long *psasSequence) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EncryptionEnabled( + /* [in] */ long pencryptionEnabled) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EncryptionEnabled( + /* [retval][out] */ long *pencryptionEnabled) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DedicatedTerminal( + /* [in] */ long pdedicatedTerminal) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DedicatedTerminal( + /* [retval][out] */ long *pdedicatedTerminal) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RDPPort( + /* [in] */ long prdpPort) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RDPPort( + /* [retval][out] */ long *prdpPort) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EnableMouse( + /* [in] */ long penableMouse) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EnableMouse( + /* [retval][out] */ long *penableMouse) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisableCtrlAltDel( + /* [in] */ long pdisableCtrlAltDel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisableCtrlAltDel( + /* [retval][out] */ long *pdisableCtrlAltDel) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EnableWindowsKey( + /* [in] */ long penableWindowsKey) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EnableWindowsKey( + /* [retval][out] */ long *penableWindowsKey) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DoubleClickDetect( + /* [in] */ long pdoubleClickDetect) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DoubleClickDetect( + /* [retval][out] */ long *pdoubleClickDetect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MaximizeShell( + /* [in] */ long pmaximizeShell) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MaximizeShell( + /* [retval][out] */ long *pmaximizeShell) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyFullScreen( + /* [in] */ long photKeyFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyFullScreen( + /* [retval][out] */ long *photKeyFullScreen) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyCtrlEsc( + /* [in] */ long photKeyCtrlEsc) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyCtrlEsc( + /* [retval][out] */ long *photKeyCtrlEsc) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltEsc( + /* [in] */ long photKeyAltEsc) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltEsc( + /* [retval][out] */ long *photKeyAltEsc) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltTab( + /* [in] */ long photKeyAltTab) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltTab( + /* [retval][out] */ long *photKeyAltTab) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltShiftTab( + /* [in] */ long photKeyAltShiftTab) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltShiftTab( + /* [retval][out] */ long *photKeyAltShiftTab) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltSpace( + /* [in] */ long photKeyAltSpace) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltSpace( + /* [retval][out] */ long *photKeyAltSpace) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyCtrlAltDel( + /* [in] */ long photKeyCtrlAltDel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyCtrlAltDel( + /* [retval][out] */ long *photKeyCtrlAltDel) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_orderDrawThreshold( + /* [in] */ long porderDrawThreshold) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_orderDrawThreshold( + /* [retval][out] */ long *porderDrawThreshold) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapCacheSize( + /* [in] */ long pbitmapCacheSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapCacheSize( + /* [retval][out] */ long *pbitmapCacheSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapVirtualCacheSize( + /* [in] */ long pbitmapVirtualCacheSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapVirtualCacheSize( + /* [retval][out] */ long *pbitmapVirtualCacheSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ScaleBitmapCachesByBPP( + /* [in] */ long pbScale) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ScaleBitmapCachesByBPP( + /* [retval][out] */ long *pbScale) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_NumBitmapCaches( + /* [in] */ long pnumBitmapCaches) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_NumBitmapCaches( + /* [retval][out] */ long *pnumBitmapCaches) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_CachePersistenceActive( + /* [in] */ long pcachePersistenceActive) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CachePersistenceActive( + /* [retval][out] */ long *pcachePersistenceActive) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PersistCacheDirectory( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_brushSupportLevel( + /* [in] */ long pbrushSupportLevel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_brushSupportLevel( + /* [retval][out] */ long *pbrushSupportLevel) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_minInputSendInterval( + /* [in] */ long pminInputSendInterval) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_minInputSendInterval( + /* [retval][out] */ long *pminInputSendInterval) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_InputEventsAtOnce( + /* [in] */ long pinputEventsAtOnce) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_InputEventsAtOnce( + /* [retval][out] */ long *pinputEventsAtOnce) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_maxEventCount( + /* [in] */ long pmaxEventCount) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_maxEventCount( + /* [retval][out] */ long *pmaxEventCount) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_keepAliveInterval( + /* [in] */ long pkeepAliveInterval) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_keepAliveInterval( + /* [retval][out] */ long *pkeepAliveInterval) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_shutdownTimeout( + /* [in] */ long pshutdownTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_shutdownTimeout( + /* [retval][out] */ long *pshutdownTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_overallConnectionTimeout( + /* [in] */ long poverallConnectionTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_overallConnectionTimeout( + /* [retval][out] */ long *poverallConnectionTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_singleConnectionTimeout( + /* [in] */ long psingleConnectionTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_singleConnectionTimeout( + /* [retval][out] */ long *psingleConnectionTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardType( + /* [in] */ long pkeyboardType) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardType( + /* [retval][out] */ long *pkeyboardType) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardSubType( + /* [in] */ long pkeyboardSubType) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardSubType( + /* [retval][out] */ long *pkeyboardSubType) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardFunctionKey( + /* [in] */ long pkeyboardFunctionKey) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardFunctionKey( + /* [retval][out] */ long *pkeyboardFunctionKey) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_WinceFixedPalette( + /* [in] */ long pwinceFixedPalette) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_WinceFixedPalette( + /* [retval][out] */ long *pwinceFixedPalette) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectToServerConsole( + /* [in] */ VARIANT_BOOL pConnectToConsole) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectToServerConsole( + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapPersistence( + /* [in] */ long pbitmapPersistence) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapPersistence( + /* [retval][out] */ long *pbitmapPersistence) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MinutesToIdleTimeout( + /* [in] */ long pminutesToIdleTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MinutesToIdleTimeout( + /* [retval][out] */ long *pminutesToIdleTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_SmartSizing( + /* [in] */ VARIANT_BOOL pfSmartSizing) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SmartSizing( + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RdpdrLocalPrintingDocName( + /* [in] */ BSTR pLocalPrintingDocName) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RdpdrLocalPrintingDocName( + /* [retval][out] */ BSTR *pLocalPrintingDocName) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RdpdrClipCleanTempDirString( + /* [in] */ BSTR clipCleanTempDirString) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RdpdrClipCleanTempDirString( + /* [retval][out] */ BSTR *clipCleanTempDirString) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RdpdrClipPasteInfoString( + /* [in] */ BSTR clipPasteInfoString) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RdpdrClipPasteInfoString( + /* [retval][out] */ BSTR *clipPasteInfoString) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ClearTextPassword( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisplayConnectionBar( + /* [in] */ VARIANT_BOOL pDisplayConnectionBar) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisplayConnectionBar( + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PinConnectionBar( + /* [in] */ VARIANT_BOOL pPinConnectionBar) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_PinConnectionBar( + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_GrabFocusOnConnect( + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_GrabFocusOnConnect( + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_LoadBalanceInfo( + /* [in] */ BSTR pLBInfo) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_LoadBalanceInfo( + /* [retval][out] */ BSTR *pLBInfo) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectDrives( + /* [in] */ VARIANT_BOOL pRedirectDrives) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectDrives( + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectPrinters( + /* [in] */ VARIANT_BOOL pRedirectPrinters) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectPrinters( + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectPorts( + /* [in] */ VARIANT_BOOL pRedirectPorts) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectPorts( + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectSmartCards( + /* [in] */ VARIANT_BOOL pRedirectSmartCards) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectSmartCards( + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapVirtualCache16BppSize( + /* [in] */ long pBitmapVirtualCache16BppSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapVirtualCache16BppSize( + /* [retval][out] */ long *pBitmapVirtualCache16BppSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapVirtualCache24BppSize( + /* [in] */ long pBitmapVirtualCache24BppSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapVirtualCache24BppSize( + /* [retval][out] */ long *pBitmapVirtualCache24BppSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PerformanceFlags( + /* [in] */ long pDisableList) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_PerformanceFlags( + /* [retval][out] */ long *pDisableList) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectWithEndpoint( + /* [in] */ VARIANT *rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_NotifyTSPublicKey( + /* [in] */ VARIANT_BOOL pfNotify) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_NotifyTSPublicKey( + /* [retval][out] */ VARIANT_BOOL *pfNotify) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + END_INTERFACE + } IMsRdpClientAdvancedSettingsVtbl; + + interface IMsRdpClientAdvancedSettings + { + CONST_VTBL struct IMsRdpClientAdvancedSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_RedirectSmartCards_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_RedirectSmartCards_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_BitmapVirtualCache16BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_BitmapVirtualCache16BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_BitmapVirtualCache16BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_BitmapVirtualCache16BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_BitmapVirtualCache24BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_BitmapVirtualCache24BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_BitmapVirtualCache24BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_BitmapVirtualCache24BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_PerformanceFlags_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pDisableList); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_PerformanceFlags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_PerformanceFlags_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pDisableList); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_PerformanceFlags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_ConnectWithEndpoint_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT *rhs); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_ConnectWithEndpoint_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_NotifyTSPublicKey_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfNotify); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_NotifyTSPublicKey_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_NotifyTSPublicKey_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_NotifyTSPublicKey_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings2_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings2_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings2 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9AC42117-2B76-4320-AA44-0E616AB8437B") + IMsRdpClientAdvancedSettings2 : public IMsRdpClientAdvancedSettings + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CanAutoReconnect( + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EnableAutoReconnect( + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EnableAutoReconnect( + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MaxReconnectAttempts( + /* [in] */ long pMaxReconnectAttempts) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MaxReconnectAttempts( + /* [retval][out] */ long *pMaxReconnectAttempts) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettings2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings2 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutoReconnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pMaxReconnectAttempts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + END_INTERFACE + } IMsRdpClientAdvancedSettings2Vtbl; + + interface IMsRdpClientAdvancedSettings2 + { + CONST_VTBL struct IMsRdpClientAdvancedSettings2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings2_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings2_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings2_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings2_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings2_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings2_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings2_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings2_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings2_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings2_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings2_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings2_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings2_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings2_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings2_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings2_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings2_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings2_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings2_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings2_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings2_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings2_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings2_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings2_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings2_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings2_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings2_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings2_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings2_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings2_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings2_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings2_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings2_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings2_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings2_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings2_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings2_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings2_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings2_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings2_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings2_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings2_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings2_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings2_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings2_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings2_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings2_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings2_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings2_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings2_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings2_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings2_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings2_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings2_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings2_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings2_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings2_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings2_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings2_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings2_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings2_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings2_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings2_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings2_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings2_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings2_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings2_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings2_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings2_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + + +#define IMsRdpClientAdvancedSettings2_get_CanAutoReconnect(This,pfCanAutoReconnect) \ + ( (This)->lpVtbl -> get_CanAutoReconnect(This,pfCanAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings2_put_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> put_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings2_get_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> get_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings2_put_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> put_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#define IMsRdpClientAdvancedSettings2_get_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> get_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_get_CanAutoReconnect_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_get_CanAutoReconnect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_put_EnableAutoReconnect_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_put_EnableAutoReconnect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_get_EnableAutoReconnect_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_get_EnableAutoReconnect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_put_MaxReconnectAttempts_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pMaxReconnectAttempts); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_put_MaxReconnectAttempts_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_get_MaxReconnectAttempts_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_get_MaxReconnectAttempts_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings2_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings3_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings3_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings3 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("19CD856B-C542-4C53-ACEE-F127E3BE1A59") + IMsRdpClientAdvancedSettings3 : public IMsRdpClientAdvancedSettings2 + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectionBarShowMinimizeButton( + /* [in] */ VARIANT_BOOL pfShowMinimize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectionBarShowMinimizeButton( + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectionBarShowRestoreButton( + /* [in] */ VARIANT_BOOL pfShowRestore) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectionBarShowRestoreButton( + /* [retval][out] */ VARIANT_BOOL *pfShowRestore) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettings3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings3 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutoReconnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pMaxReconnectAttempts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowMinimize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowRestore); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowRestore); + + END_INTERFACE + } IMsRdpClientAdvancedSettings3Vtbl; + + interface IMsRdpClientAdvancedSettings3 + { + CONST_VTBL struct IMsRdpClientAdvancedSettings3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings3_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings3_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings3_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings3_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings3_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings3_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings3_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings3_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings3_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings3_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings3_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings3_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings3_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings3_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings3_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings3_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings3_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings3_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings3_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings3_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings3_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings3_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings3_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings3_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings3_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings3_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings3_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings3_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings3_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings3_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings3_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings3_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings3_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings3_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings3_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings3_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings3_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings3_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings3_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings3_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings3_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings3_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings3_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings3_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings3_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings3_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings3_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings3_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings3_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings3_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings3_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings3_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings3_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings3_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings3_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings3_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings3_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings3_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings3_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings3_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings3_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings3_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings3_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings3_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings3_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings3_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings3_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings3_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings3_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings3_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + + +#define IMsRdpClientAdvancedSettings3_get_CanAutoReconnect(This,pfCanAutoReconnect) \ + ( (This)->lpVtbl -> get_CanAutoReconnect(This,pfCanAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings3_put_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> put_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings3_get_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> get_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings3_put_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> put_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#define IMsRdpClientAdvancedSettings3_get_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> get_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + + +#define IMsRdpClientAdvancedSettings3_put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings3_get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings3_put_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> put_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + +#define IMsRdpClientAdvancedSettings3_get_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> get_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_put_ConnectionBarShowMinimizeButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowMinimize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_put_ConnectionBarShowMinimizeButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_get_ConnectionBarShowMinimizeButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_get_ConnectionBarShowMinimizeButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_put_ConnectionBarShowRestoreButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowRestore); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_put_ConnectionBarShowRestoreButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_get_ConnectionBarShowRestoreButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowRestore); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_get_ConnectionBarShowRestoreButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings3_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings4_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings4_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings4 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("FBA7F64E-7345-4405-AE50-FA4A763DC0DE") + IMsRdpClientAdvancedSettings4 : public IMsRdpClientAdvancedSettings3 + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AuthenticationLevel( + /* [in] */ unsigned int puiAuthLevel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AuthenticationLevel( + /* [retval][out] */ unsigned int *puiAuthLevel) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettings4Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings4 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings4 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings4 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutoReconnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pMaxReconnectAttempts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfShowMinimize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfShowRestore); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowRestore); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AuthenticationLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ unsigned int puiAuthLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AuthenticationLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ unsigned int *puiAuthLevel); + + END_INTERFACE + } IMsRdpClientAdvancedSettings4Vtbl; + + interface IMsRdpClientAdvancedSettings4 + { + CONST_VTBL struct IMsRdpClientAdvancedSettings4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings4_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings4_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings4_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings4_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings4_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings4_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings4_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings4_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings4_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings4_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings4_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings4_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings4_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings4_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings4_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings4_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings4_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings4_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings4_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings4_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings4_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings4_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings4_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings4_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings4_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings4_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings4_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings4_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings4_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings4_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings4_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings4_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings4_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings4_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings4_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings4_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings4_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings4_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings4_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings4_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings4_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings4_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings4_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings4_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings4_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings4_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings4_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings4_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings4_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings4_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings4_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings4_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings4_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings4_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings4_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings4_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings4_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings4_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings4_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings4_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings4_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings4_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings4_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings4_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings4_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings4_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings4_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings4_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings4_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings4_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings4_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings4_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings4_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + + +#define IMsRdpClientAdvancedSettings4_get_CanAutoReconnect(This,pfCanAutoReconnect) \ + ( (This)->lpVtbl -> get_CanAutoReconnect(This,pfCanAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings4_put_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> put_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings4_get_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> get_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings4_put_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> put_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#define IMsRdpClientAdvancedSettings4_get_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> get_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + + +#define IMsRdpClientAdvancedSettings4_put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings4_get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings4_put_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> put_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + +#define IMsRdpClientAdvancedSettings4_get_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> get_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + + +#define IMsRdpClientAdvancedSettings4_put_AuthenticationLevel(This,puiAuthLevel) \ + ( (This)->lpVtbl -> put_AuthenticationLevel(This,puiAuthLevel) ) + +#define IMsRdpClientAdvancedSettings4_get_AuthenticationLevel(This,puiAuthLevel) \ + ( (This)->lpVtbl -> get_AuthenticationLevel(This,puiAuthLevel) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings4_put_AuthenticationLevel_Proxy( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ unsigned int puiAuthLevel); + + +void __RPC_STUB IMsRdpClientAdvancedSettings4_put_AuthenticationLevel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings4_get_AuthenticationLevel_Proxy( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ unsigned int *puiAuthLevel); + + +void __RPC_STUB IMsRdpClientAdvancedSettings4_get_AuthenticationLevel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings4_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscSecuredSettings_INTERFACE_DEFINED__ +#define __IMsTscSecuredSettings_INTERFACE_DEFINED__ + +/* interface IMsTscSecuredSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsTscSecuredSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C9D65442-A0F9-45B2-8F73-D61D2DB8CBB6") + IMsTscSecuredSettings : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_StartProgram( + /* [in] */ BSTR pStartProgram) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_StartProgram( + /* [retval][out] */ BSTR *pStartProgram) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_WorkDir( + /* [in] */ BSTR pWorkDir) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_WorkDir( + /* [retval][out] */ BSTR *pWorkDir) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_FullScreen( + /* [in] */ long pfFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_FullScreen( + /* [retval][out] */ long *pfFullScreen) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscSecuredSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscSecuredSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscSecuredSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscSecuredSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscSecuredSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscSecuredSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscSecuredSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscSecuredSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartProgram )( + IMsTscSecuredSettings * This, + /* [in] */ BSTR pStartProgram); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartProgram )( + IMsTscSecuredSettings * This, + /* [retval][out] */ BSTR *pStartProgram); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WorkDir )( + IMsTscSecuredSettings * This, + /* [in] */ BSTR pWorkDir); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WorkDir )( + IMsTscSecuredSettings * This, + /* [retval][out] */ BSTR *pWorkDir); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsTscSecuredSettings * This, + /* [in] */ long pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsTscSecuredSettings * This, + /* [retval][out] */ long *pfFullScreen); + + END_INTERFACE + } IMsTscSecuredSettingsVtbl; + + interface IMsTscSecuredSettings + { + CONST_VTBL struct IMsTscSecuredSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscSecuredSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscSecuredSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscSecuredSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscSecuredSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscSecuredSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscSecuredSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscSecuredSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscSecuredSettings_put_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> put_StartProgram(This,pStartProgram) ) + +#define IMsTscSecuredSettings_get_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> get_StartProgram(This,pStartProgram) ) + +#define IMsTscSecuredSettings_put_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> put_WorkDir(This,pWorkDir) ) + +#define IMsTscSecuredSettings_get_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> get_WorkDir(This,pWorkDir) ) + +#define IMsTscSecuredSettings_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsTscSecuredSettings_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscSecuredSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientSecuredSettings_INTERFACE_DEFINED__ +#define __IMsRdpClientSecuredSettings_INTERFACE_DEFINED__ + +/* interface IMsRdpClientSecuredSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientSecuredSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("605BEFCF-39C1-45CC-A811-068FB7BE346D") + IMsRdpClientSecuredSettings : public IMsTscSecuredSettings + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardHookMode( + /* [in] */ long pkeyboardHookMode) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardHookMode( + /* [retval][out] */ long *pkeyboardHookMode) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AudioRedirectionMode( + /* [in] */ long pAudioRedirectionMode) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AudioRedirectionMode( + /* [retval][out] */ long *pAudioRedirectionMode) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientSecuredSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientSecuredSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientSecuredSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientSecuredSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientSecuredSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientSecuredSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientSecuredSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientSecuredSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartProgram )( + IMsRdpClientSecuredSettings * This, + /* [in] */ BSTR pStartProgram); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartProgram )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ BSTR *pStartProgram); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WorkDir )( + IMsRdpClientSecuredSettings * This, + /* [in] */ BSTR pWorkDir); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WorkDir )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ BSTR *pWorkDir); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClientSecuredSettings * This, + /* [in] */ long pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ long *pfFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardHookMode )( + IMsRdpClientSecuredSettings * This, + /* [in] */ long pkeyboardHookMode); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardHookMode )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ long *pkeyboardHookMode); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AudioRedirectionMode )( + IMsRdpClientSecuredSettings * This, + /* [in] */ long pAudioRedirectionMode); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AudioRedirectionMode )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ long *pAudioRedirectionMode); + + END_INTERFACE + } IMsRdpClientSecuredSettingsVtbl; + + interface IMsRdpClientSecuredSettings + { + CONST_VTBL struct IMsRdpClientSecuredSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientSecuredSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientSecuredSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientSecuredSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientSecuredSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientSecuredSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientSecuredSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientSecuredSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientSecuredSettings_put_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> put_StartProgram(This,pStartProgram) ) + +#define IMsRdpClientSecuredSettings_get_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> get_StartProgram(This,pStartProgram) ) + +#define IMsRdpClientSecuredSettings_put_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> put_WorkDir(This,pWorkDir) ) + +#define IMsRdpClientSecuredSettings_get_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> get_WorkDir(This,pWorkDir) ) + +#define IMsRdpClientSecuredSettings_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClientSecuredSettings_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + + +#define IMsRdpClientSecuredSettings_put_KeyboardHookMode(This,pkeyboardHookMode) \ + ( (This)->lpVtbl -> put_KeyboardHookMode(This,pkeyboardHookMode) ) + +#define IMsRdpClientSecuredSettings_get_KeyboardHookMode(This,pkeyboardHookMode) \ + ( (This)->lpVtbl -> get_KeyboardHookMode(This,pkeyboardHookMode) ) + +#define IMsRdpClientSecuredSettings_put_AudioRedirectionMode(This,pAudioRedirectionMode) \ + ( (This)->lpVtbl -> put_AudioRedirectionMode(This,pAudioRedirectionMode) ) + +#define IMsRdpClientSecuredSettings_get_AudioRedirectionMode(This,pAudioRedirectionMode) \ + ( (This)->lpVtbl -> get_AudioRedirectionMode(This,pAudioRedirectionMode) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClientSecuredSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscDebug_INTERFACE_DEFINED__ +#define __IMsTscDebug_INTERFACE_DEFINED__ + +/* interface IMsTscDebug */ +/* [object][oleautomation][dual][hidden][uuid] */ + + +EXTERN_C const IID IID_IMsTscDebug; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("209D0EB9-6254-47B1-9033-A98DAE55BB27") + IMsTscDebug : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchBitmapPDU( + /* [in] */ long phatchBitmapPDU) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchBitmapPDU( + /* [retval][out] */ long *phatchBitmapPDU) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchSSBOrder( + /* [in] */ long phatchSSBOrder) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchSSBOrder( + /* [retval][out] */ long *phatchSSBOrder) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchMembltOrder( + /* [in] */ long phatchMembltOrder) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchMembltOrder( + /* [retval][out] */ long *phatchMembltOrder) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchIndexPDU( + /* [in] */ long phatchIndexPDU) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchIndexPDU( + /* [retval][out] */ long *phatchIndexPDU) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_LabelMemblt( + /* [in] */ long plabelMemblt) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_LabelMemblt( + /* [retval][out] */ long *plabelMemblt) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapCacheMonitor( + /* [in] */ long pbitmapCacheMonitor) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapCacheMonitor( + /* [retval][out] */ long *pbitmapCacheMonitor) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MallocFailuresPercent( + /* [in] */ long pmallocFailuresPercent) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MallocFailuresPercent( + /* [retval][out] */ long *pmallocFailuresPercent) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MallocHugeFailuresPercent( + /* [in] */ long pmallocHugeFailuresPercent) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MallocHugeFailuresPercent( + /* [retval][out] */ long *pmallocHugeFailuresPercent) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_NetThroughput( + /* [in] */ long NetThroughput) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_NetThroughput( + /* [retval][out] */ long *NetThroughput) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_CLXCmdLine( + /* [in] */ BSTR pCLXCmdLine) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CLXCmdLine( + /* [retval][out] */ BSTR *pCLXCmdLine) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_CLXDll( + /* [in] */ BSTR pCLXDll) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CLXDll( + /* [retval][out] */ BSTR *pCLXDll) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscDebugVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscDebug * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscDebug * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscDebug * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscDebug * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscDebug * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscDebug * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscDebug * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchBitmapPDU )( + IMsTscDebug * This, + /* [in] */ long phatchBitmapPDU); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchBitmapPDU )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchBitmapPDU); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchSSBOrder )( + IMsTscDebug * This, + /* [in] */ long phatchSSBOrder); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchSSBOrder )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchSSBOrder); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchMembltOrder )( + IMsTscDebug * This, + /* [in] */ long phatchMembltOrder); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchMembltOrder )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchMembltOrder); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchIndexPDU )( + IMsTscDebug * This, + /* [in] */ long phatchIndexPDU); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchIndexPDU )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchIndexPDU); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LabelMemblt )( + IMsTscDebug * This, + /* [in] */ long plabelMemblt); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LabelMemblt )( + IMsTscDebug * This, + /* [retval][out] */ long *plabelMemblt); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheMonitor )( + IMsTscDebug * This, + /* [in] */ long pbitmapCacheMonitor); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheMonitor )( + IMsTscDebug * This, + /* [retval][out] */ long *pbitmapCacheMonitor); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MallocFailuresPercent )( + IMsTscDebug * This, + /* [in] */ long pmallocFailuresPercent); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MallocFailuresPercent )( + IMsTscDebug * This, + /* [retval][out] */ long *pmallocFailuresPercent); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MallocHugeFailuresPercent )( + IMsTscDebug * This, + /* [in] */ long pmallocHugeFailuresPercent); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MallocHugeFailuresPercent )( + IMsTscDebug * This, + /* [retval][out] */ long *pmallocHugeFailuresPercent); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NetThroughput )( + IMsTscDebug * This, + /* [in] */ long NetThroughput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NetThroughput )( + IMsTscDebug * This, + /* [retval][out] */ long *NetThroughput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CLXCmdLine )( + IMsTscDebug * This, + /* [in] */ BSTR pCLXCmdLine); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CLXCmdLine )( + IMsTscDebug * This, + /* [retval][out] */ BSTR *pCLXCmdLine); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CLXDll )( + IMsTscDebug * This, + /* [in] */ BSTR pCLXDll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CLXDll )( + IMsTscDebug * This, + /* [retval][out] */ BSTR *pCLXDll); + + END_INTERFACE + } IMsTscDebugVtbl; + + interface IMsTscDebug + { + CONST_VTBL struct IMsTscDebugVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscDebug_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscDebug_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscDebug_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscDebug_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscDebug_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscDebug_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscDebug_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscDebug_put_HatchBitmapPDU(This,phatchBitmapPDU) \ + ( (This)->lpVtbl -> put_HatchBitmapPDU(This,phatchBitmapPDU) ) + +#define IMsTscDebug_get_HatchBitmapPDU(This,phatchBitmapPDU) \ + ( (This)->lpVtbl -> get_HatchBitmapPDU(This,phatchBitmapPDU) ) + +#define IMsTscDebug_put_HatchSSBOrder(This,phatchSSBOrder) \ + ( (This)->lpVtbl -> put_HatchSSBOrder(This,phatchSSBOrder) ) + +#define IMsTscDebug_get_HatchSSBOrder(This,phatchSSBOrder) \ + ( (This)->lpVtbl -> get_HatchSSBOrder(This,phatchSSBOrder) ) + +#define IMsTscDebug_put_HatchMembltOrder(This,phatchMembltOrder) \ + ( (This)->lpVtbl -> put_HatchMembltOrder(This,phatchMembltOrder) ) + +#define IMsTscDebug_get_HatchMembltOrder(This,phatchMembltOrder) \ + ( (This)->lpVtbl -> get_HatchMembltOrder(This,phatchMembltOrder) ) + +#define IMsTscDebug_put_HatchIndexPDU(This,phatchIndexPDU) \ + ( (This)->lpVtbl -> put_HatchIndexPDU(This,phatchIndexPDU) ) + +#define IMsTscDebug_get_HatchIndexPDU(This,phatchIndexPDU) \ + ( (This)->lpVtbl -> get_HatchIndexPDU(This,phatchIndexPDU) ) + +#define IMsTscDebug_put_LabelMemblt(This,plabelMemblt) \ + ( (This)->lpVtbl -> put_LabelMemblt(This,plabelMemblt) ) + +#define IMsTscDebug_get_LabelMemblt(This,plabelMemblt) \ + ( (This)->lpVtbl -> get_LabelMemblt(This,plabelMemblt) ) + +#define IMsTscDebug_put_BitmapCacheMonitor(This,pbitmapCacheMonitor) \ + ( (This)->lpVtbl -> put_BitmapCacheMonitor(This,pbitmapCacheMonitor) ) + +#define IMsTscDebug_get_BitmapCacheMonitor(This,pbitmapCacheMonitor) \ + ( (This)->lpVtbl -> get_BitmapCacheMonitor(This,pbitmapCacheMonitor) ) + +#define IMsTscDebug_put_MallocFailuresPercent(This,pmallocFailuresPercent) \ + ( (This)->lpVtbl -> put_MallocFailuresPercent(This,pmallocFailuresPercent) ) + +#define IMsTscDebug_get_MallocFailuresPercent(This,pmallocFailuresPercent) \ + ( (This)->lpVtbl -> get_MallocFailuresPercent(This,pmallocFailuresPercent) ) + +#define IMsTscDebug_put_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) \ + ( (This)->lpVtbl -> put_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) ) + +#define IMsTscDebug_get_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) \ + ( (This)->lpVtbl -> get_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) ) + +#define IMsTscDebug_put_NetThroughput(This,NetThroughput) \ + ( (This)->lpVtbl -> put_NetThroughput(This,NetThroughput) ) + +#define IMsTscDebug_get_NetThroughput(This,NetThroughput) \ + ( (This)->lpVtbl -> get_NetThroughput(This,NetThroughput) ) + +#define IMsTscDebug_put_CLXCmdLine(This,pCLXCmdLine) \ + ( (This)->lpVtbl -> put_CLXCmdLine(This,pCLXCmdLine) ) + +#define IMsTscDebug_get_CLXCmdLine(This,pCLXCmdLine) \ + ( (This)->lpVtbl -> get_CLXCmdLine(This,pCLXCmdLine) ) + +#define IMsTscDebug_put_CLXDll(This,pCLXDll) \ + ( (This)->lpVtbl -> put_CLXDll(This,pCLXDll) ) + +#define IMsTscDebug_get_CLXDll(This,pCLXDll) \ + ( (This)->lpVtbl -> get_CLXDll(This,pCLXDll) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscDebug_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_MsTscAx; + +#ifdef __cplusplus + +class DECLSPEC_UUID("A41A4187-5A86-4E26-B40A-856F9035D9CB") +MsTscAx; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient; + +#ifdef __cplusplus + +class DECLSPEC_UUID("7CACBD7B-0D99-468F-AC33-22E495C0AFE5") +MsRdpClient; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient2; + +#ifdef __cplusplus + +class DECLSPEC_UUID("3523C2FB-4031-44E4-9A3B-F1E94986EE7F") +MsRdpClient2; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient3; + +#ifdef __cplusplus + +class DECLSPEC_UUID("ACE575FD-1FCF-4074-9401-EBAB990FA9DE") +MsRdpClient3; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient4; + +#ifdef __cplusplus + +class DECLSPEC_UUID("6AE29350-321B-42BE-BBE5-12FB5270C0DE") +MsRdpClient4; +#endif +#endif /* __MSTSCLib_LIBRARY_DEFINED__ */ + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_i.c b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_i.c new file mode 100644 index 00000000000..b66a1a51b68 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_i.c @@ -0,0 +1,145 @@ + + +/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */ + +/* link this file in with the server and any clients */ + + + /* File created by MIDL compiler version 7.00.0493 */ +/* at Sun Aug 13 16:46:06 2006 + */ +/* Compiler settings for .\mstsclib.idl: + Oicf, W1, Zp8, env=Win32 (32b run) + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +//@@MIDL_FILE_HEADING( ) + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +#ifdef __cplusplus +extern "C"{ +#endif + + +#include +#include + +#ifdef _MIDL_USE_GUIDDEF_ + +#ifndef INITGUID +#define INITGUID +#include +#undef INITGUID +#else +#include +#endif + +#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ + DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) + +#else // !_MIDL_USE_GUIDDEF_ + +#ifndef __IID_DEFINED__ +#define __IID_DEFINED__ + +typedef struct _IID +{ + unsigned long x; + unsigned short s1; + unsigned short s2; + unsigned char c[8]; +} IID; + +#endif // __IID_DEFINED__ + +#ifndef CLSID_DEFINED +#define CLSID_DEFINED +typedef IID CLSID; +#endif // CLSID_DEFINED + +#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ + const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} + +#endif !_MIDL_USE_GUIDDEF_ + +MIDL_DEFINE_GUID(IID, LIBID_MSTSCLib,0x8C11EFA1,0x92C3,0x11D1,0xBC,0x1E,0x00,0xC0,0x4F,0xA3,0x14,0x89); + + +MIDL_DEFINE_GUID(IID, DIID_IMsTscAxEvents,0x336D5562,0xEFA8,0x482E,0x8C,0xB3,0xC5,0xC0,0xFC,0x7A,0x7D,0xB6); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscAx,0x8C11EFAE,0x92C3,0x11D1,0xBC,0x1E,0x00,0xC0,0x4F,0xA3,0x14,0x89); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient,0x92B4A539,0x7115,0x4B7C,0xA5,0xA9,0xE5,0xD9,0xEF,0xC2,0x78,0x0A); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient2,0xE7E17DC4,0x3B71,0x4BA7,0xA8,0xE6,0x28,0x1F,0xFA,0xDC,0xA2,0x8F); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient3,0x91B7CBC5,0xA72E,0x4FA0,0x93,0x00,0xD6,0x47,0xD7,0xE8,0x97,0xFF); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient4,0x095E0738,0xD97D,0x488B,0xB9,0xF6,0xDD,0x0E,0x8D,0x66,0xC0,0xDE); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscNonScriptable,0xC1E6743A,0x41C1,0x4A74,0x83,0x2A,0x0D,0xD0,0x6C,0x1C,0x7A,0x0E); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientNonScriptable,0x2F079C4C,0x87B2,0x4AFD,0x97,0xAB,0x20,0xCD,0xB4,0x30,0x38,0xAE); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientNonScriptable2,0x17A5E535,0x4072,0x4FA4,0xAF,0x32,0xC8,0xD0,0xD4,0x73,0x45,0xE9); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscAdvancedSettings,0x809945CC,0x4B3B,0x4A92,0xA6,0xB0,0xDB,0xF9,0xB5,0xF2,0xEF,0x2D); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings,0x3C65B4AB,0x12B3,0x465B,0xAC,0xD4,0xB8,0xDA,0xD3,0xBF,0xF9,0xE2); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings2,0x9AC42117,0x2B76,0x4320,0xAA,0x44,0x0E,0x61,0x6A,0xB8,0x43,0x7B); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings3,0x19CD856B,0xC542,0x4C53,0xAC,0xEE,0xF1,0x27,0xE3,0xBE,0x1A,0x59); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings4,0xFBA7F64E,0x7345,0x4405,0xAE,0x50,0xFA,0x4A,0x76,0x3D,0xC0,0xDE); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscSecuredSettings,0xC9D65442,0xA0F9,0x45B2,0x8F,0x73,0xD6,0x1D,0x2D,0xB8,0xCB,0xB6); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientSecuredSettings,0x605BEFCF,0x39C1,0x45CC,0xA8,0x11,0x06,0x8F,0xB7,0xBE,0x34,0x6D); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscDebug,0x209D0EB9,0x6254,0x47B1,0x90,0x33,0xA9,0x8D,0xAE,0x55,0xBB,0x27); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsTscAx,0xA41A4187,0x5A86,0x4E26,0xB4,0x0A,0x85,0x6F,0x90,0x35,0xD9,0xCB); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient,0x7CACBD7B,0x0D99,0x468F,0xAC,0x33,0x22,0xE4,0x95,0xC0,0xAF,0xE5); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient2,0x3523C2FB,0x4031,0x44E4,0x9A,0x3B,0xF1,0xE9,0x49,0x86,0xEE,0x7F); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient3,0xACE575FD,0x1FCF,0x4074,0x94,0x01,0xEB,0xAB,0x99,0x0F,0xA9,0xDE); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient4,0x6AE29350,0x321B,0x42BE,0xBB,0xE5,0x12,0xFB,0x52,0x70,0xC0,0xDE); + +#undef MIDL_DEFINE_GUID + +#ifdef __cplusplus +} +#endif + + + diff --git a/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist.idl b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist.idl new file mode 100644 index 00000000000..8a2421bc5e5 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist.idl @@ -0,0 +1,3 @@ +#define MSTSCLIB_REDIST_ +#include "./mstsclib.idl" +// EOF diff --git a/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist.rc b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist.rc new file mode 100644 index 00000000000..3cbb8ee6746 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist.rc @@ -0,0 +1,3 @@ +#define TYPELIB_RESOURCEID__ 2 +#include "./typelib.rh" +// EOF diff --git a/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist_h.h b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist_h.h new file mode 100644 index 00000000000..3ee3213df53 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist_h.h @@ -0,0 +1,8946 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 7.00.0493 */ +/* at Sun Aug 13 16:46:05 2006 + */ +/* Compiler settings for .\mstsclib_redist.idl: + Oicf, W1, Zp8, env=Win32 (32b run) + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +//@@MIDL_FILE_HEADING( ) + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + + +#ifndef __mstsclib_redist_h_h__ +#define __mstsclib_redist_h_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IMsTscAxEvents_FWD_DEFINED__ +#define __IMsTscAxEvents_FWD_DEFINED__ +typedef interface IMsTscAxEvents IMsTscAxEvents; +#endif /* __IMsTscAxEvents_FWD_DEFINED__ */ + + +#ifndef __IMsTscAx_FWD_DEFINED__ +#define __IMsTscAx_FWD_DEFINED__ +typedef interface IMsTscAx IMsTscAx; +#endif /* __IMsTscAx_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient_FWD_DEFINED__ +#define __IMsRdpClient_FWD_DEFINED__ +typedef interface IMsRdpClient IMsRdpClient; +#endif /* __IMsRdpClient_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient2_FWD_DEFINED__ +#define __IMsRdpClient2_FWD_DEFINED__ +typedef interface IMsRdpClient2 IMsRdpClient2; +#endif /* __IMsRdpClient2_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient3_FWD_DEFINED__ +#define __IMsRdpClient3_FWD_DEFINED__ +typedef interface IMsRdpClient3 IMsRdpClient3; +#endif /* __IMsRdpClient3_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient4_FWD_DEFINED__ +#define __IMsRdpClient4_FWD_DEFINED__ +typedef interface IMsRdpClient4 IMsRdpClient4; +#endif /* __IMsRdpClient4_FWD_DEFINED__ */ + + +#ifndef __IMsTscNonScriptable_FWD_DEFINED__ +#define __IMsTscNonScriptable_FWD_DEFINED__ +typedef interface IMsTscNonScriptable IMsTscNonScriptable; +#endif /* __IMsTscNonScriptable_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable_FWD_DEFINED__ +#define __IMsRdpClientNonScriptable_FWD_DEFINED__ +typedef interface IMsRdpClientNonScriptable IMsRdpClientNonScriptable; +#endif /* __IMsRdpClientNonScriptable_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable2_FWD_DEFINED__ +#define __IMsRdpClientNonScriptable2_FWD_DEFINED__ +typedef interface IMsRdpClientNonScriptable2 IMsRdpClientNonScriptable2; +#endif /* __IMsRdpClientNonScriptable2_FWD_DEFINED__ */ + + +#ifndef __IMsTscAdvancedSettings_FWD_DEFINED__ +#define __IMsTscAdvancedSettings_FWD_DEFINED__ +typedef interface IMsTscAdvancedSettings IMsTscAdvancedSettings; +#endif /* __IMsTscAdvancedSettings_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings IMsRdpClientAdvancedSettings; +#endif /* __IMsRdpClientAdvancedSettings_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings2_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings2_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings2 IMsRdpClientAdvancedSettings2; +#endif /* __IMsRdpClientAdvancedSettings2_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings3_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings3_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings3 IMsRdpClientAdvancedSettings3; +#endif /* __IMsRdpClientAdvancedSettings3_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings4_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings4_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings4 IMsRdpClientAdvancedSettings4; +#endif /* __IMsRdpClientAdvancedSettings4_FWD_DEFINED__ */ + + +#ifndef __IMsTscSecuredSettings_FWD_DEFINED__ +#define __IMsTscSecuredSettings_FWD_DEFINED__ +typedef interface IMsTscSecuredSettings IMsTscSecuredSettings; +#endif /* __IMsTscSecuredSettings_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientSecuredSettings_FWD_DEFINED__ +#define __IMsRdpClientSecuredSettings_FWD_DEFINED__ +typedef interface IMsRdpClientSecuredSettings IMsRdpClientSecuredSettings; +#endif /* __IMsRdpClientSecuredSettings_FWD_DEFINED__ */ + + +#ifndef __IMsTscDebug_FWD_DEFINED__ +#define __IMsTscDebug_FWD_DEFINED__ +typedef interface IMsTscDebug IMsTscDebug; +#endif /* __IMsTscDebug_FWD_DEFINED__ */ + + +#ifndef __MsTscAx_FWD_DEFINED__ +#define __MsTscAx_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsTscAx MsTscAx; +#else +typedef struct MsTscAx MsTscAx; +#endif /* __cplusplus */ + +#endif /* __MsTscAx_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient_FWD_DEFINED__ +#define __MsRdpClient_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient MsRdpClient; +#else +typedef struct MsRdpClient MsRdpClient; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient2_FWD_DEFINED__ +#define __MsRdpClient2_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient2 MsRdpClient2; +#else +typedef struct MsRdpClient2 MsRdpClient2; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient2_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient3_FWD_DEFINED__ +#define __MsRdpClient3_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient3 MsRdpClient3; +#else +typedef struct MsRdpClient3 MsRdpClient3; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient3_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient4_FWD_DEFINED__ +#define __MsRdpClient4_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient4 MsRdpClient4; +#else +typedef struct MsRdpClient4 MsRdpClient4; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient4_FWD_DEFINED__ */ + + +#ifdef __cplusplus +extern "C"{ +#endif + + + +#ifndef __MSTSCLib_LIBRARY_DEFINED__ +#define __MSTSCLib_LIBRARY_DEFINED__ + +/* library MSTSCLib */ +/* [version][uuid] */ + + + + + + + + + + + + + + + + + + +typedef /* [public][public][public] */ +enum __MIDL___MIDL_itf_mstsax_0275_0001 + { autoReconnectContinueAutomatic = 0, + autoReconnectContinueStop = 1, + autoReconnectContinueManual = 2 + } AutoReconnectContinueState; + +typedef /* [public][public][public] */ +enum __MIDL_IMsRdpClient_0001 + { exDiscReasonNoInfo = 0, + exDiscReasonAPIInitiatedDisconnect = 1, + exDiscReasonAPIInitiatedLogoff = 2, + exDiscReasonServerIdleTimeout = 3, + exDiscReasonServerLogonTimeout = 4, + exDiscReasonReplacedByOtherConnection = 5, + exDiscReasonOutOfMemory = 6, + exDiscReasonServerDeniedConnection = 7, + exDiscReasonServerDeniedConnectionFips = 8, + exDiscReasonLicenseInternal = 256, + exDiscReasonLicenseNoLicenseServer = 257, + exDiscReasonLicenseNoLicense = 258, + exDiscReasonLicenseErrClientMsg = 259, + exDiscReasonLicenseHwidDoesntMatchLicense = 260, + exDiscReasonLicenseErrClientLicense = 261, + exDiscReasonLicenseCantFinishProtocol = 262, + exDiscReasonLicenseClientEndedProtocol = 263, + exDiscReasonLicenseErrClientEncryption = 264, + exDiscReasonLicenseCantUpgradeLicense = 265, + exDiscReasonLicenseNoRemoteConnections = 266, + exDiscReasonProtocolRangeStart = 4096, + exDiscReasonProtocolRangeEnd = 32767 + } ExtendedDisconnectReasonCode; + +typedef /* [public][public][public] */ +enum __MIDL_IMsRdpClient_0002 + { controlCloseCanProceed = 0, + controlCloseWaitForEvents = 1 + } ControlCloseStatus; + +typedef /* [custom][public] */ unsigned __int3264 UINT_PTR; + +typedef /* [custom][public] */ __int3264 LONG_PTR; + + +EXTERN_C const IID LIBID_MSTSCLib; + +#ifndef __IMsTscAxEvents_DISPINTERFACE_DEFINED__ +#define __IMsTscAxEvents_DISPINTERFACE_DEFINED__ + +/* dispinterface IMsTscAxEvents */ +/* [uuid] */ + + +EXTERN_C const IID DIID_IMsTscAxEvents; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("336D5562-EFA8-482E-8CB3-C5C0FC7A7DB6") + IMsTscAxEvents : public IDispatch + { + }; + +#else /* C style interface */ + + typedef struct IMsTscAxEventsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscAxEvents * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscAxEvents * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscAxEvents * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscAxEvents * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscAxEvents * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscAxEvents * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscAxEvents * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + END_INTERFACE + } IMsTscAxEventsVtbl; + + interface IMsTscAxEvents + { + CONST_VTBL struct IMsTscAxEventsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscAxEvents_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscAxEvents_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscAxEvents_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscAxEvents_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscAxEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscAxEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscAxEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + +#endif /* __IMsTscAxEvents_DISPINTERFACE_DEFINED__ */ + + +#ifndef __IMsTscAx_INTERFACE_DEFINED__ +#define __IMsTscAx_INTERFACE_DEFINED__ + +/* interface IMsTscAx */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsTscAx; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("327BB5CD-834E-4400-AEF2-B30E15E5D682") + IMsTscAx : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Server( + /* [in] */ BSTR pServer) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Server( + /* [retval][out] */ BSTR *pServer) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Domain( + /* [in] */ BSTR pDomain) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Domain( + /* [retval][out] */ BSTR *pDomain) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_UserName( + /* [in] */ BSTR pUserName) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_UserName( + /* [retval][out] */ BSTR *pUserName) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisconnectedText( + /* [in] */ BSTR pDisconnectedText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisconnectedText( + /* [retval][out] */ BSTR *pDisconnectedText) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectingText( + /* [in] */ BSTR pConnectingText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectingText( + /* [retval][out] */ BSTR *pConnectingText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Connected( + /* [retval][out] */ short *pIsConnected) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DesktopWidth( + /* [in] */ long pVal) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DesktopWidth( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DesktopHeight( + /* [in] */ long pVal) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DesktopHeight( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_StartConnected( + /* [in] */ long pfStartConnected) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_StartConnected( + /* [retval][out] */ long *pfStartConnected) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HorizontalScrollBarVisible( + /* [retval][out] */ long *pfHScrollVisible) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_VerticalScrollBarVisible( + /* [retval][out] */ long *pfVScrollVisible) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_FullScreenTitle( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CipherStrength( + /* [retval][out] */ long *pCipherStrength) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Version( + /* [retval][out] */ BSTR *pVersion) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SecuredSettingsEnabled( + /* [retval][out] */ long *pSecuredSettingsEnabled) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SecuredSettings( + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings( + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings) = 0; + + virtual /* [hidden][propget][id] */ HRESULT STDMETHODCALLTYPE get_Debugger( + /* [retval][out] */ IMsTscDebug **ppDebugger) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Connect( void) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Disconnect( void) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE CreateVirtualChannels( + /* [in] */ BSTR newVal) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE SendOnVirtualChannel( + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscAxVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscAx * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscAx * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscAx * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscAx * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscAx * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscAx * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscAx * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsTscAx * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsTscAx * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsTscAx * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsTscAx * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsTscAx * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsTscAx * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsTscAx * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsTscAx * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsTscAx * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsTscAx * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsTscAx * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsTscAx * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsTscAx * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsTscAx * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsTscAx * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsTscAx * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsTscAx * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsTscAx * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsTscAx * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsTscAx * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsTscAx * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsTscAx * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsTscAx * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsTscAx * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + END_INTERFACE + } IMsTscAxVtbl; + + interface IMsTscAx + { + CONST_VTBL struct IMsTscAxVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscAx_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscAx_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscAx_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscAx_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscAx_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscAx_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscAx_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscAx_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsTscAx_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsTscAx_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsTscAx_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsTscAx_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsTscAx_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsTscAx_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsTscAx_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsTscAx_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsTscAx_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsTscAx_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsTscAx_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsTscAx_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsTscAx_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsTscAx_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsTscAx_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsTscAx_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsTscAx_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsTscAx_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsTscAx_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsTscAx_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsTscAx_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsTscAx_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsTscAx_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsTscAx_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsTscAx_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsTscAx_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsTscAx_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsTscAx_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsTscAx_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscAx_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient_INTERFACE_DEFINED__ +#define __IMsRdpClient_INTERFACE_DEFINED__ + +/* interface IMsRdpClient */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("92B4A539-7115-4B7C-A5A9-E5D9EFC2780A") + IMsRdpClient : public IMsTscAx + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ColorDepth( + /* [in] */ long pcolorDepth) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ColorDepth( + /* [retval][out] */ long *pcolorDepth) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings2( + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SecuredSettings2( + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ExtendedDisconnectReason( + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_FullScreen( + /* [in] */ VARIANT_BOOL pfFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_FullScreen( + /* [retval][out] */ VARIANT_BOOL *pfFullScreen) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE SetVirtualChannelOptions( + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE GetVirtualChannelOptions( + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE RequestClose( + /* [retval][out] */ ControlCloseStatus *pCloseStatus) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + END_INTERFACE + } IMsRdpClientVtbl; + + interface IMsRdpClient + { + CONST_VTBL struct IMsRdpClientVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient2_INTERFACE_DEFINED__ +#define __IMsRdpClient2_INTERFACE_DEFINED__ + +/* interface IMsRdpClient2 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("E7E17DC4-3B71-4BA7-A8E6-281FFADCA28F") + IMsRdpClient2 : public IMsRdpClient + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings3( + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectedStatusText( + /* [in] */ BSTR pConnectedStatusText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectedStatusText( + /* [retval][out] */ BSTR *pConnectedStatusText) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClient2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient2 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient2 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient2 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient2 * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient2 * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient2 * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient2 * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient2 * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient2 * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient2 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient2 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient2 * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient2 * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient2 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient2 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient2 * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient2 * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient2 * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient2 * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient2 * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient2 * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient2 * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient2 * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient2 * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings3 )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectedStatusText )( + IMsRdpClient2 * This, + /* [in] */ BSTR pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectedStatusText )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pConnectedStatusText); + + END_INTERFACE + } IMsRdpClient2Vtbl; + + interface IMsRdpClient2 + { + CONST_VTBL struct IMsRdpClient2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient2_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient2_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient2_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient2_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient2_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient2_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient2_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient2_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient2_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient2_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient2_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient2_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient2_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient2_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient2_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient2_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient2_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient2_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient2_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient2_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient2_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient2_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient2_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient2_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient2_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient2_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient2_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient2_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient2_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient2_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient2_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient2_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient2_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient2_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient2_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient2_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient2_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient2_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient2_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient2_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + + +#define IMsRdpClient2_get_AdvancedSettings3(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings3(This,ppAdvSettings) ) + +#define IMsRdpClient2_put_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> put_ConnectedStatusText(This,pConnectedStatusText) ) + +#define IMsRdpClient2_get_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> get_ConnectedStatusText(This,pConnectedStatusText) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient2_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient3_INTERFACE_DEFINED__ +#define __IMsRdpClient3_INTERFACE_DEFINED__ + +/* interface IMsRdpClient3 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("91B7CBC5-A72E-4FA0-9300-D647D7E897FF") + IMsRdpClient3 : public IMsRdpClient2 + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings4( + /* [retval][out] */ IMsRdpClientAdvancedSettings3 **ppAdvSettings) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClient3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient3 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient3 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient3 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient3 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient3 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient3 * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient3 * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient3 * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient3 * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient3 * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient3 * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient3 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient3 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient3 * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient3 * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient3 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient3 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient3 * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient3 * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient3 * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient3 * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient3 * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient3 * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient3 * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient3 * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient3 * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings3 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectedStatusText )( + IMsRdpClient3 * This, + /* [in] */ BSTR pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectedStatusText )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings4 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings3 **ppAdvSettings); + + END_INTERFACE + } IMsRdpClient3Vtbl; + + interface IMsRdpClient3 + { + CONST_VTBL struct IMsRdpClient3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient3_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient3_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient3_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient3_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient3_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient3_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient3_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient3_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient3_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient3_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient3_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient3_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient3_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient3_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient3_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient3_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient3_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient3_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient3_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient3_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient3_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient3_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient3_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient3_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient3_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient3_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient3_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient3_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient3_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient3_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient3_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient3_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient3_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient3_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient3_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient3_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient3_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient3_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient3_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient3_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient3_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + + +#define IMsRdpClient3_get_AdvancedSettings3(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings3(This,ppAdvSettings) ) + +#define IMsRdpClient3_put_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> put_ConnectedStatusText(This,pConnectedStatusText) ) + +#define IMsRdpClient3_get_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> get_ConnectedStatusText(This,pConnectedStatusText) ) + + +#define IMsRdpClient3_get_AdvancedSettings4(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings4(This,ppAdvSettings) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient3_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient4_INTERFACE_DEFINED__ +#define __IMsRdpClient4_INTERFACE_DEFINED__ + +/* interface IMsRdpClient4 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("095E0738-D97D-488B-B9F6-DD0E8D66C0DE") + IMsRdpClient4 : public IMsRdpClient3 + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings5( + /* [retval][out] */ IMsRdpClientAdvancedSettings4 **ppAdvSettings5) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClient4Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient4 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient4 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient4 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient4 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient4 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient4 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient4 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient4 * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient4 * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient4 * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient4 * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient4 * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient4 * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient4 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient4 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient4 * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient4 * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient4 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient4 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient4 * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient4 * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient4 * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient4 * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient4 * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient4 * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient4 * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient4 * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient4 * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings3 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectedStatusText )( + IMsRdpClient4 * This, + /* [in] */ BSTR pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectedStatusText )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings4 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings3 **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings5 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings4 **ppAdvSettings5); + + END_INTERFACE + } IMsRdpClient4Vtbl; + + interface IMsRdpClient4 + { + CONST_VTBL struct IMsRdpClient4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient4_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient4_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient4_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient4_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient4_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient4_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient4_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient4_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient4_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient4_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient4_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient4_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient4_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient4_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient4_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient4_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient4_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient4_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient4_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient4_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient4_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient4_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient4_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient4_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient4_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient4_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient4_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient4_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient4_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient4_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient4_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient4_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient4_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient4_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient4_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient4_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient4_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient4_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient4_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient4_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient4_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient4_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient4_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient4_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + + +#define IMsRdpClient4_get_AdvancedSettings3(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings3(This,ppAdvSettings) ) + +#define IMsRdpClient4_put_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> put_ConnectedStatusText(This,pConnectedStatusText) ) + +#define IMsRdpClient4_get_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> get_ConnectedStatusText(This,pConnectedStatusText) ) + + +#define IMsRdpClient4_get_AdvancedSettings4(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings4(This,ppAdvSettings) ) + + +#define IMsRdpClient4_get_AdvancedSettings5(This,ppAdvSettings5) \ + ( (This)->lpVtbl -> get_AdvancedSettings5(This,ppAdvSettings5) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient4_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscNonScriptable_INTERFACE_DEFINED__ +#define __IMsTscNonScriptable_INTERFACE_DEFINED__ + +/* interface IMsTscNonScriptable */ +/* [object][uuid] */ + + +EXTERN_C const IID IID_IMsTscNonScriptable; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C1E6743A-41C1-4A74-832A-0DD06C1C7A0E") + IMsTscNonScriptable : public IUnknown + { + public: + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ClearTextPassword( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PortablePassword( + /* [in] */ BSTR pPortablePass) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PortablePassword( + /* [retval][out] */ BSTR *pPortablePass) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PortableSalt( + /* [in] */ BSTR pPortableSalt) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PortableSalt( + /* [retval][out] */ BSTR *pPortableSalt) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_BinaryPassword( + /* [in] */ BSTR pBinaryPassword) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BinaryPassword( + /* [retval][out] */ BSTR *pBinaryPassword) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_BinarySalt( + /* [in] */ BSTR pSalt) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BinarySalt( + /* [retval][out] */ BSTR *pSalt) = 0; + + virtual HRESULT STDMETHODCALLTYPE ResetPassword( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscNonScriptableVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscNonScriptable * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscNonScriptable * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscNonScriptable * This); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsTscNonScriptable * This, + /* [in] */ BSTR rhs); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortablePassword )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pPortablePass); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortablePassword )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pPortablePass); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortableSalt )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pPortableSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortableSalt )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pPortableSalt); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinaryPassword )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pBinaryPassword); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinaryPassword )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pBinaryPassword); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinarySalt )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinarySalt )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pSalt); + + HRESULT ( STDMETHODCALLTYPE *ResetPassword )( + IMsTscNonScriptable * This); + + END_INTERFACE + } IMsTscNonScriptableVtbl; + + interface IMsTscNonScriptable + { + CONST_VTBL struct IMsTscNonScriptableVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscNonScriptable_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscNonScriptable_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscNonScriptable_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscNonScriptable_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsTscNonScriptable_put_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> put_PortablePassword(This,pPortablePass) ) + +#define IMsTscNonScriptable_get_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> get_PortablePassword(This,pPortablePass) ) + +#define IMsTscNonScriptable_put_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> put_PortableSalt(This,pPortableSalt) ) + +#define IMsTscNonScriptable_get_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> get_PortableSalt(This,pPortableSalt) ) + +#define IMsTscNonScriptable_put_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> put_BinaryPassword(This,pBinaryPassword) ) + +#define IMsTscNonScriptable_get_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> get_BinaryPassword(This,pBinaryPassword) ) + +#define IMsTscNonScriptable_put_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> put_BinarySalt(This,pSalt) ) + +#define IMsTscNonScriptable_get_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> get_BinarySalt(This,pSalt) ) + +#define IMsTscNonScriptable_ResetPassword(This) \ + ( (This)->lpVtbl -> ResetPassword(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscNonScriptable_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable_INTERFACE_DEFINED__ +#define __IMsRdpClientNonScriptable_INTERFACE_DEFINED__ + +/* interface IMsRdpClientNonScriptable */ +/* [object][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientNonScriptable; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2F079C4C-87B2-4AFD-97AB-20CDB43038AE") + IMsRdpClientNonScriptable : public IMsTscNonScriptable + { + public: + virtual HRESULT STDMETHODCALLTYPE NotifyRedirectDeviceChange( + /* [in] */ UINT_PTR wParam, + /* [in] */ LONG_PTR lParam) = 0; + + virtual HRESULT STDMETHODCALLTYPE SendKeys( + /* [in] */ long numKeys, + /* [in] */ VARIANT_BOOL *pbArrayKeyUp, + /* [in] */ long *plKeyData) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientNonScriptableVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientNonScriptable * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientNonScriptable * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientNonScriptable * This); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR rhs); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortablePassword )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pPortablePass); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortablePassword )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pPortablePass); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortableSalt )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pPortableSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortableSalt )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pPortableSalt); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinaryPassword )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pBinaryPassword); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinaryPassword )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pBinaryPassword); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinarySalt )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinarySalt )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pSalt); + + HRESULT ( STDMETHODCALLTYPE *ResetPassword )( + IMsRdpClientNonScriptable * This); + + HRESULT ( STDMETHODCALLTYPE *NotifyRedirectDeviceChange )( + IMsRdpClientNonScriptable * This, + /* [in] */ UINT_PTR wParam, + /* [in] */ LONG_PTR lParam); + + HRESULT ( STDMETHODCALLTYPE *SendKeys )( + IMsRdpClientNonScriptable * This, + /* [in] */ long numKeys, + /* [in] */ VARIANT_BOOL *pbArrayKeyUp, + /* [in] */ long *plKeyData); + + END_INTERFACE + } IMsRdpClientNonScriptableVtbl; + + interface IMsRdpClientNonScriptable + { + CONST_VTBL struct IMsRdpClientNonScriptableVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientNonScriptable_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientNonScriptable_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientNonScriptable_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientNonScriptable_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientNonScriptable_put_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> put_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable_get_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> get_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable_put_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> put_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable_get_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> get_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable_put_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> put_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable_get_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> get_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable_put_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> put_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable_get_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> get_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable_ResetPassword(This) \ + ( (This)->lpVtbl -> ResetPassword(This) ) + + +#define IMsRdpClientNonScriptable_NotifyRedirectDeviceChange(This,wParam,lParam) \ + ( (This)->lpVtbl -> NotifyRedirectDeviceChange(This,wParam,lParam) ) + +#define IMsRdpClientNonScriptable_SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) \ + ( (This)->lpVtbl -> SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClientNonScriptable_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable2_INTERFACE_DEFINED__ +#define __IMsRdpClientNonScriptable2_INTERFACE_DEFINED__ + +/* interface IMsRdpClientNonScriptable2 */ +/* [object][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientNonScriptable2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("17A5E535-4072-4FA4-AF32-C8D0D47345E9") + IMsRdpClientNonScriptable2 : public IMsRdpClientNonScriptable + { + public: + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_UIParentWindowHandle( + /* [in] */ HWND phwndUIParentWindowHandle) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_UIParentWindowHandle( + /* [retval][out] */ HWND *phwndUIParentWindowHandle) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientNonScriptable2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientNonScriptable2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientNonScriptable2 * This); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR rhs); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortablePassword )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pPortablePass); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortablePassword )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pPortablePass); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortableSalt )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pPortableSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortableSalt )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pPortableSalt); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinaryPassword )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pBinaryPassword); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinaryPassword )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pBinaryPassword); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinarySalt )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinarySalt )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pSalt); + + HRESULT ( STDMETHODCALLTYPE *ResetPassword )( + IMsRdpClientNonScriptable2 * This); + + HRESULT ( STDMETHODCALLTYPE *NotifyRedirectDeviceChange )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ UINT_PTR wParam, + /* [in] */ LONG_PTR lParam); + + HRESULT ( STDMETHODCALLTYPE *SendKeys )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ long numKeys, + /* [in] */ VARIANT_BOOL *pbArrayKeyUp, + /* [in] */ long *plKeyData); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_UIParentWindowHandle )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ HWND phwndUIParentWindowHandle); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_UIParentWindowHandle )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ HWND *phwndUIParentWindowHandle); + + END_INTERFACE + } IMsRdpClientNonScriptable2Vtbl; + + interface IMsRdpClientNonScriptable2 + { + CONST_VTBL struct IMsRdpClientNonScriptable2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientNonScriptable2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientNonScriptable2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientNonScriptable2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientNonScriptable2_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientNonScriptable2_put_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> put_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable2_get_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> get_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable2_put_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> put_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable2_get_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> get_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable2_put_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> put_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable2_get_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> get_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable2_put_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> put_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable2_get_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> get_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable2_ResetPassword(This) \ + ( (This)->lpVtbl -> ResetPassword(This) ) + + +#define IMsRdpClientNonScriptable2_NotifyRedirectDeviceChange(This,wParam,lParam) \ + ( (This)->lpVtbl -> NotifyRedirectDeviceChange(This,wParam,lParam) ) + +#define IMsRdpClientNonScriptable2_SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) \ + ( (This)->lpVtbl -> SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) ) + + +#define IMsRdpClientNonScriptable2_put_UIParentWindowHandle(This,phwndUIParentWindowHandle) \ + ( (This)->lpVtbl -> put_UIParentWindowHandle(This,phwndUIParentWindowHandle) ) + +#define IMsRdpClientNonScriptable2_get_UIParentWindowHandle(This,phwndUIParentWindowHandle) \ + ( (This)->lpVtbl -> get_UIParentWindowHandle(This,phwndUIParentWindowHandle) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClientNonScriptable2_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscAdvancedSettings_INTERFACE_DEFINED__ +#define __IMsTscAdvancedSettings_INTERFACE_DEFINED__ + +/* interface IMsTscAdvancedSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsTscAdvancedSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("809945CC-4B3B-4A92-A6B0-DBF9B5F2EF2D") + IMsTscAdvancedSettings : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Compress( + /* [in] */ long pcompress) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Compress( + /* [retval][out] */ long *pcompress) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapPeristence( + /* [in] */ long pbitmapPeristence) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapPeristence( + /* [retval][out] */ long *pbitmapPeristence) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_allowBackgroundInput( + /* [in] */ long pallowBackgroundInput) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_allowBackgroundInput( + /* [retval][out] */ long *pallowBackgroundInput) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyBoardLayoutStr( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PluginDlls( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_IconFile( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_IconIndex( + /* [in] */ long rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ContainerHandledFullScreen( + /* [in] */ long pContainerHandledFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ContainerHandledFullScreen( + /* [retval][out] */ long *pContainerHandledFullScreen) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisableRdpdr( + /* [in] */ long pDisableRdpdr) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisableRdpdr( + /* [retval][out] */ long *pDisableRdpdr) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscAdvancedSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscAdvancedSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscAdvancedSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscAdvancedSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscAdvancedSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscAdvancedSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsTscAdvancedSettings * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsTscAdvancedSettings * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsTscAdvancedSettings * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsTscAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsTscAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsTscAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsTscAdvancedSettings * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsTscAdvancedSettings * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsTscAdvancedSettings * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pDisableRdpdr); + + END_INTERFACE + } IMsTscAdvancedSettingsVtbl; + + interface IMsTscAdvancedSettings + { + CONST_VTBL struct IMsTscAdvancedSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscAdvancedSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscAdvancedSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscAdvancedSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscAdvancedSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscAdvancedSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscAdvancedSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscAdvancedSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscAdvancedSettings_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsTscAdvancedSettings_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsTscAdvancedSettings_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsTscAdvancedSettings_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsTscAdvancedSettings_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsTscAdvancedSettings_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsTscAdvancedSettings_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsTscAdvancedSettings_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsTscAdvancedSettings_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsTscAdvancedSettings_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsTscAdvancedSettings_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsTscAdvancedSettings_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsTscAdvancedSettings_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsTscAdvancedSettings_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscAdvancedSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3C65B4AB-12B3-465B-ACD4-B8DAD3BFF9E2") + IMsRdpClientAdvancedSettings : public IMsTscAdvancedSettings + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_SmoothScroll( + /* [in] */ long psmoothScroll) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SmoothScroll( + /* [retval][out] */ long *psmoothScroll) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AcceleratorPassthrough( + /* [in] */ long pacceleratorPassthrough) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AcceleratorPassthrough( + /* [retval][out] */ long *pacceleratorPassthrough) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ShadowBitmap( + /* [in] */ long pshadowBitmap) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ShadowBitmap( + /* [retval][out] */ long *pshadowBitmap) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_TransportType( + /* [in] */ long ptransportType) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_TransportType( + /* [retval][out] */ long *ptransportType) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_SasSequence( + /* [in] */ long psasSequence) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SasSequence( + /* [retval][out] */ long *psasSequence) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EncryptionEnabled( + /* [in] */ long pencryptionEnabled) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EncryptionEnabled( + /* [retval][out] */ long *pencryptionEnabled) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DedicatedTerminal( + /* [in] */ long pdedicatedTerminal) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DedicatedTerminal( + /* [retval][out] */ long *pdedicatedTerminal) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RDPPort( + /* [in] */ long prdpPort) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RDPPort( + /* [retval][out] */ long *prdpPort) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EnableMouse( + /* [in] */ long penableMouse) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EnableMouse( + /* [retval][out] */ long *penableMouse) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisableCtrlAltDel( + /* [in] */ long pdisableCtrlAltDel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisableCtrlAltDel( + /* [retval][out] */ long *pdisableCtrlAltDel) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EnableWindowsKey( + /* [in] */ long penableWindowsKey) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EnableWindowsKey( + /* [retval][out] */ long *penableWindowsKey) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DoubleClickDetect( + /* [in] */ long pdoubleClickDetect) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DoubleClickDetect( + /* [retval][out] */ long *pdoubleClickDetect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MaximizeShell( + /* [in] */ long pmaximizeShell) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MaximizeShell( + /* [retval][out] */ long *pmaximizeShell) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyFullScreen( + /* [in] */ long photKeyFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyFullScreen( + /* [retval][out] */ long *photKeyFullScreen) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyCtrlEsc( + /* [in] */ long photKeyCtrlEsc) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyCtrlEsc( + /* [retval][out] */ long *photKeyCtrlEsc) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltEsc( + /* [in] */ long photKeyAltEsc) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltEsc( + /* [retval][out] */ long *photKeyAltEsc) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltTab( + /* [in] */ long photKeyAltTab) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltTab( + /* [retval][out] */ long *photKeyAltTab) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltShiftTab( + /* [in] */ long photKeyAltShiftTab) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltShiftTab( + /* [retval][out] */ long *photKeyAltShiftTab) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltSpace( + /* [in] */ long photKeyAltSpace) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltSpace( + /* [retval][out] */ long *photKeyAltSpace) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyCtrlAltDel( + /* [in] */ long photKeyCtrlAltDel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyCtrlAltDel( + /* [retval][out] */ long *photKeyCtrlAltDel) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_orderDrawThreshold( + /* [in] */ long porderDrawThreshold) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_orderDrawThreshold( + /* [retval][out] */ long *porderDrawThreshold) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapCacheSize( + /* [in] */ long pbitmapCacheSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapCacheSize( + /* [retval][out] */ long *pbitmapCacheSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapVirtualCacheSize( + /* [in] */ long pbitmapVirtualCacheSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapVirtualCacheSize( + /* [retval][out] */ long *pbitmapVirtualCacheSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ScaleBitmapCachesByBPP( + /* [in] */ long pbScale) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ScaleBitmapCachesByBPP( + /* [retval][out] */ long *pbScale) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_NumBitmapCaches( + /* [in] */ long pnumBitmapCaches) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_NumBitmapCaches( + /* [retval][out] */ long *pnumBitmapCaches) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_CachePersistenceActive( + /* [in] */ long pcachePersistenceActive) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CachePersistenceActive( + /* [retval][out] */ long *pcachePersistenceActive) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PersistCacheDirectory( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_brushSupportLevel( + /* [in] */ long pbrushSupportLevel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_brushSupportLevel( + /* [retval][out] */ long *pbrushSupportLevel) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_minInputSendInterval( + /* [in] */ long pminInputSendInterval) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_minInputSendInterval( + /* [retval][out] */ long *pminInputSendInterval) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_InputEventsAtOnce( + /* [in] */ long pinputEventsAtOnce) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_InputEventsAtOnce( + /* [retval][out] */ long *pinputEventsAtOnce) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_maxEventCount( + /* [in] */ long pmaxEventCount) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_maxEventCount( + /* [retval][out] */ long *pmaxEventCount) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_keepAliveInterval( + /* [in] */ long pkeepAliveInterval) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_keepAliveInterval( + /* [retval][out] */ long *pkeepAliveInterval) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_shutdownTimeout( + /* [in] */ long pshutdownTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_shutdownTimeout( + /* [retval][out] */ long *pshutdownTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_overallConnectionTimeout( + /* [in] */ long poverallConnectionTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_overallConnectionTimeout( + /* [retval][out] */ long *poverallConnectionTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_singleConnectionTimeout( + /* [in] */ long psingleConnectionTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_singleConnectionTimeout( + /* [retval][out] */ long *psingleConnectionTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardType( + /* [in] */ long pkeyboardType) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardType( + /* [retval][out] */ long *pkeyboardType) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardSubType( + /* [in] */ long pkeyboardSubType) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardSubType( + /* [retval][out] */ long *pkeyboardSubType) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardFunctionKey( + /* [in] */ long pkeyboardFunctionKey) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardFunctionKey( + /* [retval][out] */ long *pkeyboardFunctionKey) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_WinceFixedPalette( + /* [in] */ long pwinceFixedPalette) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_WinceFixedPalette( + /* [retval][out] */ long *pwinceFixedPalette) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectToServerConsole( + /* [in] */ VARIANT_BOOL pConnectToConsole) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectToServerConsole( + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapPersistence( + /* [in] */ long pbitmapPersistence) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapPersistence( + /* [retval][out] */ long *pbitmapPersistence) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MinutesToIdleTimeout( + /* [in] */ long pminutesToIdleTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MinutesToIdleTimeout( + /* [retval][out] */ long *pminutesToIdleTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_SmartSizing( + /* [in] */ VARIANT_BOOL pfSmartSizing) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SmartSizing( + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RdpdrLocalPrintingDocName( + /* [in] */ BSTR pLocalPrintingDocName) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RdpdrLocalPrintingDocName( + /* [retval][out] */ BSTR *pLocalPrintingDocName) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RdpdrClipCleanTempDirString( + /* [in] */ BSTR clipCleanTempDirString) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RdpdrClipCleanTempDirString( + /* [retval][out] */ BSTR *clipCleanTempDirString) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RdpdrClipPasteInfoString( + /* [in] */ BSTR clipPasteInfoString) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RdpdrClipPasteInfoString( + /* [retval][out] */ BSTR *clipPasteInfoString) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ClearTextPassword( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisplayConnectionBar( + /* [in] */ VARIANT_BOOL pDisplayConnectionBar) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisplayConnectionBar( + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PinConnectionBar( + /* [in] */ VARIANT_BOOL pPinConnectionBar) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_PinConnectionBar( + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_GrabFocusOnConnect( + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_GrabFocusOnConnect( + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_LoadBalanceInfo( + /* [in] */ BSTR pLBInfo) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_LoadBalanceInfo( + /* [retval][out] */ BSTR *pLBInfo) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectDrives( + /* [in] */ VARIANT_BOOL pRedirectDrives) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectDrives( + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectPrinters( + /* [in] */ VARIANT_BOOL pRedirectPrinters) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectPrinters( + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectPorts( + /* [in] */ VARIANT_BOOL pRedirectPorts) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectPorts( + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectSmartCards( + /* [in] */ VARIANT_BOOL pRedirectSmartCards) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectSmartCards( + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapVirtualCache16BppSize( + /* [in] */ long pBitmapVirtualCache16BppSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapVirtualCache16BppSize( + /* [retval][out] */ long *pBitmapVirtualCache16BppSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapVirtualCache24BppSize( + /* [in] */ long pBitmapVirtualCache24BppSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapVirtualCache24BppSize( + /* [retval][out] */ long *pBitmapVirtualCache24BppSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PerformanceFlags( + /* [in] */ long pDisableList) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_PerformanceFlags( + /* [retval][out] */ long *pDisableList) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectWithEndpoint( + /* [in] */ VARIANT *rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_NotifyTSPublicKey( + /* [in] */ VARIANT_BOOL pfNotify) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_NotifyTSPublicKey( + /* [retval][out] */ VARIANT_BOOL *pfNotify) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + END_INTERFACE + } IMsRdpClientAdvancedSettingsVtbl; + + interface IMsRdpClientAdvancedSettings + { + CONST_VTBL struct IMsRdpClientAdvancedSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_RedirectSmartCards_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_RedirectSmartCards_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_BitmapVirtualCache16BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_BitmapVirtualCache16BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_BitmapVirtualCache16BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_BitmapVirtualCache16BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_BitmapVirtualCache24BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_BitmapVirtualCache24BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_BitmapVirtualCache24BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_BitmapVirtualCache24BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_PerformanceFlags_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pDisableList); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_PerformanceFlags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_PerformanceFlags_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pDisableList); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_PerformanceFlags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_ConnectWithEndpoint_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT *rhs); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_ConnectWithEndpoint_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_NotifyTSPublicKey_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfNotify); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_NotifyTSPublicKey_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_NotifyTSPublicKey_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_NotifyTSPublicKey_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings2_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings2_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings2 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9AC42117-2B76-4320-AA44-0E616AB8437B") + IMsRdpClientAdvancedSettings2 : public IMsRdpClientAdvancedSettings + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CanAutoReconnect( + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EnableAutoReconnect( + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EnableAutoReconnect( + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MaxReconnectAttempts( + /* [in] */ long pMaxReconnectAttempts) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MaxReconnectAttempts( + /* [retval][out] */ long *pMaxReconnectAttempts) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettings2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings2 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutoReconnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pMaxReconnectAttempts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + END_INTERFACE + } IMsRdpClientAdvancedSettings2Vtbl; + + interface IMsRdpClientAdvancedSettings2 + { + CONST_VTBL struct IMsRdpClientAdvancedSettings2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings2_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings2_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings2_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings2_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings2_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings2_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings2_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings2_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings2_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings2_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings2_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings2_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings2_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings2_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings2_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings2_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings2_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings2_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings2_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings2_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings2_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings2_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings2_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings2_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings2_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings2_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings2_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings2_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings2_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings2_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings2_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings2_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings2_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings2_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings2_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings2_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings2_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings2_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings2_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings2_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings2_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings2_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings2_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings2_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings2_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings2_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings2_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings2_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings2_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings2_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings2_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings2_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings2_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings2_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings2_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings2_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings2_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings2_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings2_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings2_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings2_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings2_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings2_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings2_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings2_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings2_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings2_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings2_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings2_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + + +#define IMsRdpClientAdvancedSettings2_get_CanAutoReconnect(This,pfCanAutoReconnect) \ + ( (This)->lpVtbl -> get_CanAutoReconnect(This,pfCanAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings2_put_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> put_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings2_get_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> get_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings2_put_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> put_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#define IMsRdpClientAdvancedSettings2_get_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> get_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_get_CanAutoReconnect_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_get_CanAutoReconnect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_put_EnableAutoReconnect_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_put_EnableAutoReconnect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_get_EnableAutoReconnect_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_get_EnableAutoReconnect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_put_MaxReconnectAttempts_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pMaxReconnectAttempts); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_put_MaxReconnectAttempts_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_get_MaxReconnectAttempts_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_get_MaxReconnectAttempts_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings2_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings3_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings3_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings3 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("19CD856B-C542-4C53-ACEE-F127E3BE1A59") + IMsRdpClientAdvancedSettings3 : public IMsRdpClientAdvancedSettings2 + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectionBarShowMinimizeButton( + /* [in] */ VARIANT_BOOL pfShowMinimize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectionBarShowMinimizeButton( + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectionBarShowRestoreButton( + /* [in] */ VARIANT_BOOL pfShowRestore) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectionBarShowRestoreButton( + /* [retval][out] */ VARIANT_BOOL *pfShowRestore) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettings3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings3 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutoReconnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pMaxReconnectAttempts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowMinimize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowRestore); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowRestore); + + END_INTERFACE + } IMsRdpClientAdvancedSettings3Vtbl; + + interface IMsRdpClientAdvancedSettings3 + { + CONST_VTBL struct IMsRdpClientAdvancedSettings3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings3_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings3_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings3_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings3_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings3_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings3_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings3_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings3_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings3_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings3_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings3_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings3_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings3_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings3_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings3_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings3_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings3_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings3_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings3_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings3_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings3_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings3_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings3_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings3_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings3_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings3_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings3_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings3_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings3_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings3_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings3_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings3_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings3_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings3_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings3_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings3_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings3_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings3_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings3_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings3_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings3_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings3_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings3_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings3_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings3_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings3_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings3_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings3_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings3_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings3_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings3_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings3_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings3_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings3_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings3_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings3_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings3_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings3_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings3_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings3_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings3_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings3_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings3_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings3_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings3_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings3_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings3_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings3_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings3_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings3_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + + +#define IMsRdpClientAdvancedSettings3_get_CanAutoReconnect(This,pfCanAutoReconnect) \ + ( (This)->lpVtbl -> get_CanAutoReconnect(This,pfCanAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings3_put_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> put_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings3_get_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> get_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings3_put_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> put_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#define IMsRdpClientAdvancedSettings3_get_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> get_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + + +#define IMsRdpClientAdvancedSettings3_put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings3_get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings3_put_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> put_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + +#define IMsRdpClientAdvancedSettings3_get_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> get_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_put_ConnectionBarShowMinimizeButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowMinimize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_put_ConnectionBarShowMinimizeButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_get_ConnectionBarShowMinimizeButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_get_ConnectionBarShowMinimizeButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_put_ConnectionBarShowRestoreButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowRestore); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_put_ConnectionBarShowRestoreButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_get_ConnectionBarShowRestoreButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowRestore); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_get_ConnectionBarShowRestoreButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings3_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings4_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings4_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings4 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("FBA7F64E-7345-4405-AE50-FA4A763DC0DE") + IMsRdpClientAdvancedSettings4 : public IMsRdpClientAdvancedSettings3 + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AuthenticationLevel( + /* [in] */ unsigned int puiAuthLevel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AuthenticationLevel( + /* [retval][out] */ unsigned int *puiAuthLevel) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettings4Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings4 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings4 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings4 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutoReconnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pMaxReconnectAttempts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfShowMinimize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfShowRestore); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowRestore); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AuthenticationLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ unsigned int puiAuthLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AuthenticationLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ unsigned int *puiAuthLevel); + + END_INTERFACE + } IMsRdpClientAdvancedSettings4Vtbl; + + interface IMsRdpClientAdvancedSettings4 + { + CONST_VTBL struct IMsRdpClientAdvancedSettings4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings4_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings4_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings4_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings4_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings4_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings4_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings4_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings4_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings4_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings4_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings4_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings4_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings4_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings4_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings4_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings4_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings4_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings4_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings4_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings4_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings4_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings4_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings4_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings4_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings4_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings4_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings4_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings4_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings4_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings4_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings4_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings4_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings4_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings4_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings4_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings4_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings4_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings4_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings4_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings4_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings4_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings4_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings4_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings4_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings4_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings4_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings4_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings4_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings4_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings4_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings4_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings4_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings4_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings4_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings4_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings4_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings4_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings4_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings4_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings4_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings4_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings4_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings4_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings4_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings4_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings4_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings4_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings4_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings4_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings4_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings4_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings4_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings4_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + + +#define IMsRdpClientAdvancedSettings4_get_CanAutoReconnect(This,pfCanAutoReconnect) \ + ( (This)->lpVtbl -> get_CanAutoReconnect(This,pfCanAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings4_put_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> put_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings4_get_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> get_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings4_put_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> put_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#define IMsRdpClientAdvancedSettings4_get_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> get_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + + +#define IMsRdpClientAdvancedSettings4_put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings4_get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings4_put_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> put_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + +#define IMsRdpClientAdvancedSettings4_get_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> get_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + + +#define IMsRdpClientAdvancedSettings4_put_AuthenticationLevel(This,puiAuthLevel) \ + ( (This)->lpVtbl -> put_AuthenticationLevel(This,puiAuthLevel) ) + +#define IMsRdpClientAdvancedSettings4_get_AuthenticationLevel(This,puiAuthLevel) \ + ( (This)->lpVtbl -> get_AuthenticationLevel(This,puiAuthLevel) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings4_put_AuthenticationLevel_Proxy( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ unsigned int puiAuthLevel); + + +void __RPC_STUB IMsRdpClientAdvancedSettings4_put_AuthenticationLevel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings4_get_AuthenticationLevel_Proxy( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ unsigned int *puiAuthLevel); + + +void __RPC_STUB IMsRdpClientAdvancedSettings4_get_AuthenticationLevel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings4_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscSecuredSettings_INTERFACE_DEFINED__ +#define __IMsTscSecuredSettings_INTERFACE_DEFINED__ + +/* interface IMsTscSecuredSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsTscSecuredSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C9D65442-A0F9-45B2-8F73-D61D2DB8CBB6") + IMsTscSecuredSettings : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_StartProgram( + /* [in] */ BSTR pStartProgram) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_StartProgram( + /* [retval][out] */ BSTR *pStartProgram) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_WorkDir( + /* [in] */ BSTR pWorkDir) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_WorkDir( + /* [retval][out] */ BSTR *pWorkDir) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_FullScreen( + /* [in] */ long pfFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_FullScreen( + /* [retval][out] */ long *pfFullScreen) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscSecuredSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscSecuredSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscSecuredSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscSecuredSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscSecuredSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscSecuredSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscSecuredSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscSecuredSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartProgram )( + IMsTscSecuredSettings * This, + /* [in] */ BSTR pStartProgram); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartProgram )( + IMsTscSecuredSettings * This, + /* [retval][out] */ BSTR *pStartProgram); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WorkDir )( + IMsTscSecuredSettings * This, + /* [in] */ BSTR pWorkDir); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WorkDir )( + IMsTscSecuredSettings * This, + /* [retval][out] */ BSTR *pWorkDir); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsTscSecuredSettings * This, + /* [in] */ long pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsTscSecuredSettings * This, + /* [retval][out] */ long *pfFullScreen); + + END_INTERFACE + } IMsTscSecuredSettingsVtbl; + + interface IMsTscSecuredSettings + { + CONST_VTBL struct IMsTscSecuredSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscSecuredSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscSecuredSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscSecuredSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscSecuredSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscSecuredSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscSecuredSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscSecuredSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscSecuredSettings_put_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> put_StartProgram(This,pStartProgram) ) + +#define IMsTscSecuredSettings_get_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> get_StartProgram(This,pStartProgram) ) + +#define IMsTscSecuredSettings_put_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> put_WorkDir(This,pWorkDir) ) + +#define IMsTscSecuredSettings_get_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> get_WorkDir(This,pWorkDir) ) + +#define IMsTscSecuredSettings_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsTscSecuredSettings_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscSecuredSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientSecuredSettings_INTERFACE_DEFINED__ +#define __IMsRdpClientSecuredSettings_INTERFACE_DEFINED__ + +/* interface IMsRdpClientSecuredSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientSecuredSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("605BEFCF-39C1-45CC-A811-068FB7BE346D") + IMsRdpClientSecuredSettings : public IMsTscSecuredSettings + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardHookMode( + /* [in] */ long pkeyboardHookMode) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardHookMode( + /* [retval][out] */ long *pkeyboardHookMode) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AudioRedirectionMode( + /* [in] */ long pAudioRedirectionMode) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AudioRedirectionMode( + /* [retval][out] */ long *pAudioRedirectionMode) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientSecuredSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientSecuredSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientSecuredSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientSecuredSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientSecuredSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientSecuredSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientSecuredSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientSecuredSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartProgram )( + IMsRdpClientSecuredSettings * This, + /* [in] */ BSTR pStartProgram); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartProgram )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ BSTR *pStartProgram); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WorkDir )( + IMsRdpClientSecuredSettings * This, + /* [in] */ BSTR pWorkDir); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WorkDir )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ BSTR *pWorkDir); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClientSecuredSettings * This, + /* [in] */ long pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ long *pfFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardHookMode )( + IMsRdpClientSecuredSettings * This, + /* [in] */ long pkeyboardHookMode); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardHookMode )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ long *pkeyboardHookMode); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AudioRedirectionMode )( + IMsRdpClientSecuredSettings * This, + /* [in] */ long pAudioRedirectionMode); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AudioRedirectionMode )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ long *pAudioRedirectionMode); + + END_INTERFACE + } IMsRdpClientSecuredSettingsVtbl; + + interface IMsRdpClientSecuredSettings + { + CONST_VTBL struct IMsRdpClientSecuredSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientSecuredSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientSecuredSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientSecuredSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientSecuredSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientSecuredSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientSecuredSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientSecuredSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientSecuredSettings_put_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> put_StartProgram(This,pStartProgram) ) + +#define IMsRdpClientSecuredSettings_get_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> get_StartProgram(This,pStartProgram) ) + +#define IMsRdpClientSecuredSettings_put_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> put_WorkDir(This,pWorkDir) ) + +#define IMsRdpClientSecuredSettings_get_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> get_WorkDir(This,pWorkDir) ) + +#define IMsRdpClientSecuredSettings_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClientSecuredSettings_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + + +#define IMsRdpClientSecuredSettings_put_KeyboardHookMode(This,pkeyboardHookMode) \ + ( (This)->lpVtbl -> put_KeyboardHookMode(This,pkeyboardHookMode) ) + +#define IMsRdpClientSecuredSettings_get_KeyboardHookMode(This,pkeyboardHookMode) \ + ( (This)->lpVtbl -> get_KeyboardHookMode(This,pkeyboardHookMode) ) + +#define IMsRdpClientSecuredSettings_put_AudioRedirectionMode(This,pAudioRedirectionMode) \ + ( (This)->lpVtbl -> put_AudioRedirectionMode(This,pAudioRedirectionMode) ) + +#define IMsRdpClientSecuredSettings_get_AudioRedirectionMode(This,pAudioRedirectionMode) \ + ( (This)->lpVtbl -> get_AudioRedirectionMode(This,pAudioRedirectionMode) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClientSecuredSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscDebug_INTERFACE_DEFINED__ +#define __IMsTscDebug_INTERFACE_DEFINED__ + +/* interface IMsTscDebug */ +/* [object][oleautomation][dual][hidden][uuid] */ + + +EXTERN_C const IID IID_IMsTscDebug; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("209D0EB9-6254-47B1-9033-A98DAE55BB27") + IMsTscDebug : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchBitmapPDU( + /* [in] */ long phatchBitmapPDU) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchBitmapPDU( + /* [retval][out] */ long *phatchBitmapPDU) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchSSBOrder( + /* [in] */ long phatchSSBOrder) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchSSBOrder( + /* [retval][out] */ long *phatchSSBOrder) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchMembltOrder( + /* [in] */ long phatchMembltOrder) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchMembltOrder( + /* [retval][out] */ long *phatchMembltOrder) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchIndexPDU( + /* [in] */ long phatchIndexPDU) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchIndexPDU( + /* [retval][out] */ long *phatchIndexPDU) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_LabelMemblt( + /* [in] */ long plabelMemblt) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_LabelMemblt( + /* [retval][out] */ long *plabelMemblt) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapCacheMonitor( + /* [in] */ long pbitmapCacheMonitor) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapCacheMonitor( + /* [retval][out] */ long *pbitmapCacheMonitor) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MallocFailuresPercent( + /* [in] */ long pmallocFailuresPercent) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MallocFailuresPercent( + /* [retval][out] */ long *pmallocFailuresPercent) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MallocHugeFailuresPercent( + /* [in] */ long pmallocHugeFailuresPercent) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MallocHugeFailuresPercent( + /* [retval][out] */ long *pmallocHugeFailuresPercent) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_NetThroughput( + /* [in] */ long NetThroughput) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_NetThroughput( + /* [retval][out] */ long *NetThroughput) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_CLXCmdLine( + /* [in] */ BSTR pCLXCmdLine) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CLXCmdLine( + /* [retval][out] */ BSTR *pCLXCmdLine) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_CLXDll( + /* [in] */ BSTR pCLXDll) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CLXDll( + /* [retval][out] */ BSTR *pCLXDll) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscDebugVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscDebug * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscDebug * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscDebug * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscDebug * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscDebug * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscDebug * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscDebug * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchBitmapPDU )( + IMsTscDebug * This, + /* [in] */ long phatchBitmapPDU); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchBitmapPDU )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchBitmapPDU); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchSSBOrder )( + IMsTscDebug * This, + /* [in] */ long phatchSSBOrder); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchSSBOrder )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchSSBOrder); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchMembltOrder )( + IMsTscDebug * This, + /* [in] */ long phatchMembltOrder); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchMembltOrder )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchMembltOrder); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchIndexPDU )( + IMsTscDebug * This, + /* [in] */ long phatchIndexPDU); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchIndexPDU )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchIndexPDU); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LabelMemblt )( + IMsTscDebug * This, + /* [in] */ long plabelMemblt); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LabelMemblt )( + IMsTscDebug * This, + /* [retval][out] */ long *plabelMemblt); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheMonitor )( + IMsTscDebug * This, + /* [in] */ long pbitmapCacheMonitor); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheMonitor )( + IMsTscDebug * This, + /* [retval][out] */ long *pbitmapCacheMonitor); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MallocFailuresPercent )( + IMsTscDebug * This, + /* [in] */ long pmallocFailuresPercent); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MallocFailuresPercent )( + IMsTscDebug * This, + /* [retval][out] */ long *pmallocFailuresPercent); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MallocHugeFailuresPercent )( + IMsTscDebug * This, + /* [in] */ long pmallocHugeFailuresPercent); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MallocHugeFailuresPercent )( + IMsTscDebug * This, + /* [retval][out] */ long *pmallocHugeFailuresPercent); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NetThroughput )( + IMsTscDebug * This, + /* [in] */ long NetThroughput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NetThroughput )( + IMsTscDebug * This, + /* [retval][out] */ long *NetThroughput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CLXCmdLine )( + IMsTscDebug * This, + /* [in] */ BSTR pCLXCmdLine); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CLXCmdLine )( + IMsTscDebug * This, + /* [retval][out] */ BSTR *pCLXCmdLine); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CLXDll )( + IMsTscDebug * This, + /* [in] */ BSTR pCLXDll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CLXDll )( + IMsTscDebug * This, + /* [retval][out] */ BSTR *pCLXDll); + + END_INTERFACE + } IMsTscDebugVtbl; + + interface IMsTscDebug + { + CONST_VTBL struct IMsTscDebugVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscDebug_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscDebug_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscDebug_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscDebug_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscDebug_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscDebug_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscDebug_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscDebug_put_HatchBitmapPDU(This,phatchBitmapPDU) \ + ( (This)->lpVtbl -> put_HatchBitmapPDU(This,phatchBitmapPDU) ) + +#define IMsTscDebug_get_HatchBitmapPDU(This,phatchBitmapPDU) \ + ( (This)->lpVtbl -> get_HatchBitmapPDU(This,phatchBitmapPDU) ) + +#define IMsTscDebug_put_HatchSSBOrder(This,phatchSSBOrder) \ + ( (This)->lpVtbl -> put_HatchSSBOrder(This,phatchSSBOrder) ) + +#define IMsTscDebug_get_HatchSSBOrder(This,phatchSSBOrder) \ + ( (This)->lpVtbl -> get_HatchSSBOrder(This,phatchSSBOrder) ) + +#define IMsTscDebug_put_HatchMembltOrder(This,phatchMembltOrder) \ + ( (This)->lpVtbl -> put_HatchMembltOrder(This,phatchMembltOrder) ) + +#define IMsTscDebug_get_HatchMembltOrder(This,phatchMembltOrder) \ + ( (This)->lpVtbl -> get_HatchMembltOrder(This,phatchMembltOrder) ) + +#define IMsTscDebug_put_HatchIndexPDU(This,phatchIndexPDU) \ + ( (This)->lpVtbl -> put_HatchIndexPDU(This,phatchIndexPDU) ) + +#define IMsTscDebug_get_HatchIndexPDU(This,phatchIndexPDU) \ + ( (This)->lpVtbl -> get_HatchIndexPDU(This,phatchIndexPDU) ) + +#define IMsTscDebug_put_LabelMemblt(This,plabelMemblt) \ + ( (This)->lpVtbl -> put_LabelMemblt(This,plabelMemblt) ) + +#define IMsTscDebug_get_LabelMemblt(This,plabelMemblt) \ + ( (This)->lpVtbl -> get_LabelMemblt(This,plabelMemblt) ) + +#define IMsTscDebug_put_BitmapCacheMonitor(This,pbitmapCacheMonitor) \ + ( (This)->lpVtbl -> put_BitmapCacheMonitor(This,pbitmapCacheMonitor) ) + +#define IMsTscDebug_get_BitmapCacheMonitor(This,pbitmapCacheMonitor) \ + ( (This)->lpVtbl -> get_BitmapCacheMonitor(This,pbitmapCacheMonitor) ) + +#define IMsTscDebug_put_MallocFailuresPercent(This,pmallocFailuresPercent) \ + ( (This)->lpVtbl -> put_MallocFailuresPercent(This,pmallocFailuresPercent) ) + +#define IMsTscDebug_get_MallocFailuresPercent(This,pmallocFailuresPercent) \ + ( (This)->lpVtbl -> get_MallocFailuresPercent(This,pmallocFailuresPercent) ) + +#define IMsTscDebug_put_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) \ + ( (This)->lpVtbl -> put_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) ) + +#define IMsTscDebug_get_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) \ + ( (This)->lpVtbl -> get_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) ) + +#define IMsTscDebug_put_NetThroughput(This,NetThroughput) \ + ( (This)->lpVtbl -> put_NetThroughput(This,NetThroughput) ) + +#define IMsTscDebug_get_NetThroughput(This,NetThroughput) \ + ( (This)->lpVtbl -> get_NetThroughput(This,NetThroughput) ) + +#define IMsTscDebug_put_CLXCmdLine(This,pCLXCmdLine) \ + ( (This)->lpVtbl -> put_CLXCmdLine(This,pCLXCmdLine) ) + +#define IMsTscDebug_get_CLXCmdLine(This,pCLXCmdLine) \ + ( (This)->lpVtbl -> get_CLXCmdLine(This,pCLXCmdLine) ) + +#define IMsTscDebug_put_CLXDll(This,pCLXDll) \ + ( (This)->lpVtbl -> put_CLXDll(This,pCLXDll) ) + +#define IMsTscDebug_get_CLXDll(This,pCLXDll) \ + ( (This)->lpVtbl -> get_CLXDll(This,pCLXDll) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscDebug_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_MsTscAx; + +#ifdef __cplusplus + +class DECLSPEC_UUID("1FB464C8-09BB-4017-A2F5-EB742F04392F") +MsTscAx; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient; + +#ifdef __cplusplus + +class DECLSPEC_UUID("791FA017-2DE3-492E-ACC5-53C67A2B94D0") +MsRdpClient; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient2; + +#ifdef __cplusplus + +class DECLSPEC_UUID("9059F30F-4EB1-4BD2-9FDC-36F43A218F4A") +MsRdpClient2; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient3; + +#ifdef __cplusplus + +class DECLSPEC_UUID("7584C670-2274-4EFB-B00B-D6AABA6D3850") +MsRdpClient3; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient4; + +#ifdef __cplusplus + +class DECLSPEC_UUID("6AE29350-321B-42BE-BBE5-12FB5270C0DE") +MsRdpClient4; +#endif +#endif /* __MSTSCLib_LIBRARY_DEFINED__ */ + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist_i.c b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist_i.c new file mode 100644 index 00000000000..eb8092fc8e4 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist_i.c @@ -0,0 +1,145 @@ + + +/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */ + +/* link this file in with the server and any clients */ + + + /* File created by MIDL compiler version 7.00.0493 */ +/* at Sun Aug 13 16:46:05 2006 + */ +/* Compiler settings for .\mstsclib_redist.idl: + Oicf, W1, Zp8, env=Win32 (32b run) + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +//@@MIDL_FILE_HEADING( ) + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +#ifdef __cplusplus +extern "C"{ +#endif + + +#include +#include + +#ifdef _MIDL_USE_GUIDDEF_ + +#ifndef INITGUID +#define INITGUID +#include +#undef INITGUID +#else +#include +#endif + +#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ + DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) + +#else // !_MIDL_USE_GUIDDEF_ + +#ifndef __IID_DEFINED__ +#define __IID_DEFINED__ + +typedef struct _IID +{ + unsigned long x; + unsigned short s1; + unsigned short s2; + unsigned char c[8]; +} IID; + +#endif // __IID_DEFINED__ + +#ifndef CLSID_DEFINED +#define CLSID_DEFINED +typedef IID CLSID; +#endif // CLSID_DEFINED + +#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ + const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} + +#endif !_MIDL_USE_GUIDDEF_ + +MIDL_DEFINE_GUID(IID, LIBID_MSTSCLib,0xAF586AAE,0xB62A,0x420E,0xB7,0x96,0x29,0x4E,0x7E,0xE6,0x4C,0x70); + + +MIDL_DEFINE_GUID(IID, DIID_IMsTscAxEvents,0x336D5562,0xEFA8,0x482E,0x8C,0xB3,0xC5,0xC0,0xFC,0x7A,0x7D,0xB6); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscAx,0x327BB5CD,0x834E,0x4400,0xAE,0xF2,0xB3,0x0E,0x15,0xE5,0xD6,0x82); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient,0x92B4A539,0x7115,0x4B7C,0xA5,0xA9,0xE5,0xD9,0xEF,0xC2,0x78,0x0A); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient2,0xE7E17DC4,0x3B71,0x4BA7,0xA8,0xE6,0x28,0x1F,0xFA,0xDC,0xA2,0x8F); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient3,0x91B7CBC5,0xA72E,0x4FA0,0x93,0x00,0xD6,0x47,0xD7,0xE8,0x97,0xFF); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient4,0x095E0738,0xD97D,0x488B,0xB9,0xF6,0xDD,0x0E,0x8D,0x66,0xC0,0xDE); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscNonScriptable,0xC1E6743A,0x41C1,0x4A74,0x83,0x2A,0x0D,0xD0,0x6C,0x1C,0x7A,0x0E); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientNonScriptable,0x2F079C4C,0x87B2,0x4AFD,0x97,0xAB,0x20,0xCD,0xB4,0x30,0x38,0xAE); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientNonScriptable2,0x17A5E535,0x4072,0x4FA4,0xAF,0x32,0xC8,0xD0,0xD4,0x73,0x45,0xE9); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscAdvancedSettings,0x809945CC,0x4B3B,0x4A92,0xA6,0xB0,0xDB,0xF9,0xB5,0xF2,0xEF,0x2D); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings,0x3C65B4AB,0x12B3,0x465B,0xAC,0xD4,0xB8,0xDA,0xD3,0xBF,0xF9,0xE2); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings2,0x9AC42117,0x2B76,0x4320,0xAA,0x44,0x0E,0x61,0x6A,0xB8,0x43,0x7B); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings3,0x19CD856B,0xC542,0x4C53,0xAC,0xEE,0xF1,0x27,0xE3,0xBE,0x1A,0x59); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings4,0xFBA7F64E,0x7345,0x4405,0xAE,0x50,0xFA,0x4A,0x76,0x3D,0xC0,0xDE); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscSecuredSettings,0xC9D65442,0xA0F9,0x45B2,0x8F,0x73,0xD6,0x1D,0x2D,0xB8,0xCB,0xB6); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientSecuredSettings,0x605BEFCF,0x39C1,0x45CC,0xA8,0x11,0x06,0x8F,0xB7,0xBE,0x34,0x6D); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscDebug,0x209D0EB9,0x6254,0x47B1,0x90,0x33,0xA9,0x8D,0xAE,0x55,0xBB,0x27); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsTscAx,0x1FB464C8,0x09BB,0x4017,0xA2,0xF5,0xEB,0x74,0x2F,0x04,0x39,0x2F); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient,0x791FA017,0x2DE3,0x492E,0xAC,0xC5,0x53,0xC6,0x7A,0x2B,0x94,0xD0); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient2,0x9059F30F,0x4EB1,0x4BD2,0x9F,0xDC,0x36,0xF4,0x3A,0x21,0x8F,0x4A); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient3,0x7584C670,0x2274,0x4EFB,0xB0,0x0B,0xD6,0xAA,0xBA,0x6D,0x38,0x50); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient4,0x6AE29350,0x321B,0x42BE,0xBB,0xE5,0x12,0xFB,0x52,0x70,0xC0,0xDE); + +#undef MIDL_DEFINE_GUID + +#ifdef __cplusplus +} +#endif + + + diff --git a/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.cpp b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.cpp new file mode 100644 index 00000000000..29992767db0 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.cpp @@ -0,0 +1,653 @@ +#include "stdafx.h" + +#include + +#include "rdesktop/rdesktop.h" +#include "rdesktop/proto.h" + +extern "C" +{ + /* ==== BEGIN POOP ==== */ + // Temporary implementations of stuff we totally positively need to make the Real Thing happy + /* produce a hex dump */ + void + hexdump(unsigned char *p, unsigned int len) + { + unsigned char *line = p; + int i, thisline; + unsigned int offset = 0; + + while (offset < len) + { + printf("%04x ", offset); + thisline = len - offset; + if (thisline > 16) + thisline = 16; + + for (i = 0; i < thisline; i++) + printf("%02x ", line[i]); + + for (; i < 16; i++) + printf(" "); + + for (i = 0; i < thisline; i++) + printf("%c", (line[i] >= 0x20 && line[i] < 0x7f) ? line[i] : '.'); + + printf("\n"); + offset += thisline; + line += thisline; + } + } + + void generate_random(uint8 * random) + { + memcpy(random, "12345678901234567890123456789012", 32); + } + + /* report an error */ + void + error(char *format, ...) + { + va_list ap; + + fprintf(stderr, "ERROR: "); + + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + } + + /* report a warning */ + void + warning(char *format, ...) + { + va_list ap; + + fprintf(stderr, "WARNING: "); + + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + } + + /* report an unimplemented protocol feature */ + void + unimpl(char *format, ...) + { + va_list ap; + + fprintf(stderr, "NOT IMPLEMENTED: "); + + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + } + + /* Create the bitmap cache directory */ + BOOL + rd_pstcache_mkdir(void) + { + char *home; + char bmpcache_dir[256]; + + home = getenv("HOME"); + + if (home == NULL) + return False; + + sprintf(bmpcache_dir, "%s/%s", home, ".rdesktop"); + + if ((_mkdir(bmpcache_dir) == -1) && errno != EEXIST) + { + perror(bmpcache_dir); + return False; + } + + sprintf(bmpcache_dir, "%s/%s", home, ".rdesktop/cache"); + + if ((_mkdir(bmpcache_dir) == -1) && errno != EEXIST) + { + perror(bmpcache_dir); + return False; + } + + return True; + } + + /* open a file in the .rdesktop directory */ + int + rd_open_file(char *filename) + { + char *home; + char fn[256]; + int fd; + + home = getenv("HOME"); + if (home == NULL) + return -1; + sprintf(fn, "%s/.rdesktop/%s", home, filename); + fd = _open(fn, _O_RDWR | _O_CREAT, 0); + if (fd == -1) + perror(fn); + return fd; + } + + /* close file */ + void + rd_close_file(int fd) + { + _close(fd); + } + + /* read from file*/ + int + rd_read_file(int fd, void *ptr, int len) + { + return _read(fd, ptr, len); + } + + /* write to file */ + int + rd_write_file(int fd, void *ptr, int len) + { + return _write(fd, ptr, len); + } + + /* move file pointer */ + int + rd_lseek_file(int fd, int offset) + { + return _lseek(fd, offset, SEEK_SET); + } + + /* do a write lock on a file */ + BOOL + rd_lock_file(int fd, int start, int len) + { + // TODOOO... + return False; + } + + int + load_licence(RDPCLIENT * This, unsigned char **data) + { + return -1; + } + + void + save_licence(RDPCLIENT * This, unsigned char *data, int length) + { + } + + /* ==== END POOP ==== */ + + /* ==== UI ==== */ + // Globals are totally teh evil, but cut me some slack here + HWND hwnd; + HBITMAP hbmBuffer; + PVOID pBuffer; + HDC hdcBuffer; + UINT wmZMouseWheel; + +}; + +static +void +mstsc_mousewheel(RDPCLIENT * This, int value, LPARAM lparam) +{ + uint16 button; + + if(value < 0) + button = MOUSE_FLAG_BUTTON5; + else + button = MOUSE_FLAG_BUTTON4; + + if(value < 0) + value = - value; + + for(int click = 0; click < value; click += WHEEL_DELTA) + rdp_send_input(This, GetTickCount(), RDP_INPUT_MOUSE, button | MOUSE_FLAG_DOWN, LOWORD(lparam), HIWORD(lparam)); +} + +static +LRESULT +CALLBACK +mstsc_WndProc(HWND hwnd, UINT uMsg, WPARAM wparam, LPARAM lparam) +{ + // BUGBUG: LongToPtr & PtrToLong will break on Win64 + + RDPCLIENT * This = reinterpret_cast(LongToPtr(GetWindowLongPtr(hwnd, GWLP_USERDATA))); + + switch(uMsg) + { + case WM_CLOSE: + DestroyWindow(hwnd); + break; + + // FIXME: temporary + case WM_DESTROY: + PostQuitMessage(0); + break; + + /* Initialization */ + case WM_CREATE: + This = static_cast(reinterpret_cast(lparam)->lpCreateParams); + SetWindowLongPtr(hwnd, GWLP_USERDATA, PtrToLong(This)); + break; + + /* Painting */ + case WM_PRINTCLIENT: + if(wparam == 0) + break; + + case WM_PAINT: + { + HDC hdc = (HDC)wparam; + + // A DC was provided: print the whole client area into it + if(hdc) + { + RECT rc; + GetClientRect(hwnd, &rc); + BitBlt(hdc, 0, 0, rc.right, rc.bottom, hdcBuffer, 0, 0, SRCCOPY); + } + // Otherwise, we're refreshing to screen + else + { + PAINTSTRUCT ps; + hdc = BeginPaint(hwnd, &ps); + + BitBlt + ( + hdc, + ps.rcPaint.left, + ps.rcPaint.top, + ps.rcPaint.right - ps.rcPaint.left, + ps.rcPaint.bottom - ps.rcPaint.top, + hdcBuffer, + ps.rcPaint.left, + ps.rcPaint.top, + SRCCOPY + ); + + EndPaint(hwnd, &ps); + } + } + + break; + + /* Keyboard stuff */ + case WM_SYSKEYDOWN: + case WM_KEYDOWN: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_SCANCODE, RDP_KEYPRESS | (lparam & 0x1000000 ? KBD_FLAG_EXT : 0), LOBYTE(HIWORD(lparam)), 0); + break; + + case WM_SYSKEYUP: + case WM_KEYUP: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_SCANCODE, RDP_KEYRELEASE | (lparam & 0x1000000 ? KBD_FLAG_EXT : 0), LOBYTE(HIWORD(lparam)), 0); + break; + + /* Mouse stuff */ + // Cursor shape + case WM_SETCURSOR: + if(LOWORD(lparam) == HTCLIENT) + { + //SetCursor(hcursor); + return TRUE; + } + + break; + + // Movement + case WM_MOUSEMOVE: + //if(This->sendmotion || wparam & (MK_LBUTTON | MK_RBUTTON | MK_MBUTTON | MK_XBUTTON1 | MK_XBUTTON2)) + rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_MOVE, LOWORD(lparam), HIWORD(lparam)); + + break; + + // Buttons + // TODO: X buttons + case WM_LBUTTONDOWN: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON1 | MOUSE_FLAG_DOWN, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_RBUTTONDOWN: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON2 | MOUSE_FLAG_DOWN, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_MBUTTONDOWN: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON3 | MOUSE_FLAG_DOWN, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_LBUTTONUP: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON1, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_RBUTTONUP: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON2, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_MBUTTONUP: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON3, LOWORD(lparam), HIWORD(lparam)); + break; + + // Wheel + case WM_MOUSEWHEEL: + mstsc_mousewheel(This, (SHORT)HIWORD(wparam), lparam); + break; + + default: + /* Registered messages */ + // Z-Mouse wheel support - you know, just in case + if(uMsg == wmZMouseWheel) + { + mstsc_mousewheel(This, (int)wparam, lparam); + break; + } + + /* Unhandled messages */ + return DefWindowProc(hwnd, uMsg, wparam, lparam); + } + + return 0; +} + +static +DWORD +WINAPI +mstsc_ProtocolIOThread +( + LPVOID lpArgument +) +{ + RDPCLIENT * This = static_cast(lpArgument); + + WCHAR hostname[MAX_COMPUTERNAME_LENGTH + 1]; + DWORD dw = ARRAYSIZE(hostname); + GetComputerNameW(hostname, &dw); + + uint32 flags = RDP_LOGON_NORMAL | RDP_LOGON_COMPRESSION | RDP_LOGON_COMPRESSION2; + + rdp_connect(This, "10.0.0.3", flags, L"Administrator", L"", L"", L"", L"", hostname, ""); + //rdp_connect(This, "192.168.7.232", flags, "", "", "", ""); + + hdcBuffer = CreateCompatibleDC(NULL); + + BITMAPINFO bmi; + bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader); + bmi.bmiHeader.biWidth = This->width; + bmi.bmiHeader.biHeight = This->height; + bmi.bmiHeader.biPlanes = 1; + bmi.bmiHeader.biBitCount = This->server_depth; + bmi.bmiHeader.biCompression = BI_RGB; + bmi.bmiHeader.biSizeImage = 0; + bmi.bmiHeader.biXPelsPerMeter = 0; + bmi.bmiHeader.biYPelsPerMeter = 0; + bmi.bmiHeader.biClrUsed = 0; // TODO! palette displays + bmi.bmiHeader.biClrImportant = 0; // TODO! palette displays + + hbmBuffer = CreateDIBSection(hdcBuffer, &bmi, DIB_RGB_COLORS, &pBuffer, NULL, 0); + + SelectObject(hdcBuffer, hbmBuffer); + +#if 0 + rcClip.left = 0; + rcClip.top = 0; + rcClip.right = This->width + 1; + rcClip.bottom = This->height + 1; +#endif + + BOOL deactivated; + uint32 ext_disc_reason; + + rdp_main_loop(This, &deactivated, &ext_disc_reason); + // TODO: handle redirection + // EVENT: OnDisconnect + + SendMessage(hwnd, WM_CLOSE, 0, 0); + + return 0; +} + +/* Virtual channel stuff */ +extern "C" void channel_process(RDPCLIENT * This, STREAM s, uint16 mcs_channel) +{ +} + +DWORD tlsIndex; + +typedef struct CHANNEL_HANDLE_ +{ + RDPCLIENT * client; + int channel; +} +CHANNEL_HANDLE; + +static +UINT +VCAPITYPE +VirtualChannelInit +( + LPVOID * ppInitHandle, + PCHANNEL_DEF pChannel, + INT channelCount, + ULONG versionRequested, + PCHANNEL_INIT_EVENT_FN pChannelInitEventProc +) +{ + if(channelCount <= 0) + return CHANNEL_RC_BAD_CHANNEL; + + if(ppInitHandle == NULL) + return CHANNEL_RC_BAD_INIT_HANDLE; + + if(pChannel == NULL) + return CHANNEL_RC_BAD_CHANNEL; + + if(pChannelInitEventProc == NULL) + return CHANNEL_RC_BAD_PROC; + + RDPCLIENT * This = (RDPCLIENT *)TlsGetValue(tlsIndex); + + if(This == NULL) + return CHANNEL_RC_NOT_IN_VIRTUALCHANNELENTRY; + + if(This->num_channels + channelCount > CHANNEL_MAX_COUNT) + return CHANNEL_RC_TOO_MANY_CHANNELS; + + for(INT i = 0; i < channelCount; ++ i) + { + if(strlen(pChannel[i].name) > CHANNEL_NAME_LEN) + return CHANNEL_RC_BAD_CHANNEL; + } + + memcpy(This->channel_defs + This->num_channels, pChannel, sizeof(*pChannel) * channelCount); + +#if 0 // TODO + for(INT i = 0; i < channelCount; ++ i) + { + pChannel[i].options |= CHANNEL_OPTION_INITIALIZED; + + int j = This->num_channels + i; + This->channel_data[j].opened = 0; + This->channel_data[j].pChannelInitEventProc = pChannelInitEventProc; + This->channel_data[j].pChannelOpenEventProc = NULL; + } +#endif + + This->num_channels += channelCount; + + *ppInitHandle = This; + + return CHANNEL_RC_OK; +} + +UINT +VCAPITYPE +VirtualChannelOpen +( + LPVOID pInitHandle, + LPDWORD pOpenHandle, + PCHAR pChannelName, + PCHANNEL_OPEN_EVENT_FN pChannelOpenEventProc +) +{ + if(pInitHandle == NULL) + return CHANNEL_RC_BAD_INIT_HANDLE; + + if(pOpenHandle == NULL) + return CHANNEL_RC_BAD_CHANNEL_HANDLE; + + if(pChannelName == NULL) + return CHANNEL_RC_UNKNOWN_CHANNEL_NAME; + + if(pChannelOpenEventProc == NULL) + return CHANNEL_RC_BAD_PROC; + + RDPCLIENT * This = (RDPCLIENT *)pInitHandle; + +#if 0 // TODO + for(unsigned i = 0; i < This->num_channels; ++ i) + { + if(strcmp(pChannelName, This->channel_defs[i].name) == 0) + { + if(This->channel_data[i].opened) + return CHANNEL_RC_ALREADY_OPEN; + + This->channel_data[i].opened = 1; + This->channel_data[i].pChannelOpenEventProc = pChannelOpenEventProc; + + // TODO: allocate a handle here + *pOpenHandle = 0; + + break; + } + } +#endif + + return CHANNEL_RC_OK; +} + +UINT VCAPITYPE VirtualChannelClose +( + DWORD openHandle +) +{ + // TODO: channel handle management + return CHANNEL_RC_BAD_CHANNEL_HANDLE; +} + +UINT VCAPITYPE VirtualChannelWrite +( + DWORD openHandle, + LPVOID pData, + ULONG dataLength, + LPVOID pUserData +) +{ + // TODO + return CHANNEL_RC_BAD_CHANNEL_HANDLE; +} + +int wmain() +{ + WSADATA wsd; + WSAStartup(MAKEWORD(2, 2), &wsd); + + static RDPCLIENT This_; // NOTE: this is HUGE and would overflow the stack! + ZeroMemory(&This_, sizeof(This_)); + + RDPCLIENT * This = &This_; + + /* + Threading model for MissTosca: + - main thread is the GUI thread. Message loop maintained by caller + - protocol I/O is handled in an I/O thread (or thread pool) + - extra threads maintained by virtual channel handlers. Virtual channel writes are thread-neutral + + How we handle drawing: at the moment just an off-screen buffer we dump on-screen when asked to. + Still considering how to draw on-screen directly and *then* buffering off-screen (for example, + when running inside another remote session) + */ + + // FIXME: keyboard mess + This->keylayout = 0x409; + This->keyboard_type = 0x4; + This->keyboard_subtype = 0x0; + This->keyboard_functionkeys = 0xc; + This->width = 800; + This->height = 600; + This->server_depth = 24; + This->bitmap_compression = True; + //This->sendmotion = True; + This->bitmap_cache = True; + This->bitmap_cache_persist_enable = False; + This->bitmap_cache_precache = True; + This->encryption = True; + This->packet_encryption = True; + This->desktop_save = True; + This->polygon_ellipse_orders = False; // = True; + //This->fullscreen = False; + //This->grab_keyboard = True; + //This->hide_decorations = False; + This->use_rdp5 = True; + //This->rdpclip = True; + This->console_session = False; + //This->numlock_sync = False; + //This->seamless_rdp = False; + This->rdp5_performanceflags = RDP5_NO_WALLPAPER | RDP5_NO_FULLWINDOWDRAG | RDP5_NO_MENUANIMATIONS; + This->tcp_port_rdp = TCP_PORT_RDP; + +#define NOT_SET -1 + This->cache.bmpcache_lru[0] = NOT_SET; + This->cache.bmpcache_lru[1] = NOT_SET; + This->cache.bmpcache_lru[2] = NOT_SET; + This->cache.bmpcache_mru[0] = NOT_SET; + This->cache.bmpcache_mru[1] = NOT_SET; + This->cache.bmpcache_mru[2] = NOT_SET; + + This->rdp.current_status = 1; + + //hcursor = NULL; + + WNDCLASS wc; + ZeroMemory(&wc, sizeof(wc)); + + wc.lpfnWndProc = mstsc_WndProc; + wc.hbrBackground = static_cast(GetStockObject(HOLLOW_BRUSH)); + wc.lpszClassName = TEXT("MissTosca_Desktop"); + + wmZMouseWheel = RegisterWindowMessage(MSH_MOUSEWHEEL); + + ATOM a = RegisterClass(&wc); + + hwnd = CreateWindow + ( + MAKEINTATOM(a), + NULL, + WS_POPUP | WS_VISIBLE, + CW_USEDEFAULT, + CW_USEDEFAULT, + This->width, + This->height, + NULL, + NULL, + NULL, + This + ); + + // The righ time to start the protocol thread + DWORD dwThreadId; + HANDLE hThread = CreateThread(NULL, 0, mstsc_ProtocolIOThread, This, 0, &dwThreadId); + + // Your standard, garden variety message loop + MSG msg; + + while(GetMessage(&msg, NULL, 0, 0)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } +} + +// EOF diff --git a/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj new file mode 100644 index 00000000000..3e91425b3b5 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj @@ -0,0 +1,377 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/stdafx.cpp b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/stdafx.cpp new file mode 100644 index 00000000000..1e9dbf2c515 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/stdafx.cpp @@ -0,0 +1,3 @@ +#include "stdafx.h" + +// EOF diff --git a/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/stdafx.h b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/stdafx.h new file mode 100644 index 00000000000..87956e633cb --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/stdafx.h @@ -0,0 +1,32 @@ +#pragma once + +#define _CRT_SECURE_NO_DEPRECATE +#define _SECURE_SCL 0 + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#define WIN32_LEAN_AND_MEAN +#include +#include + +#include +#include +#include +#include +#include + +#include + +// EOF diff --git a/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/typelib.rh b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/typelib.rh new file mode 100644 index 00000000000..e14a7da2c05 --- /dev/null +++ b/rosapps/applications/net/tsclient/porting-tools/rdesktop-core-tester/typelib.rh @@ -0,0 +1,21 @@ +#define TOSTRING_(X) #X +#define TOSTRING(X) TOSTRING_(X) + +LANGUAGE 0, 0 + +#ifndef TYPELIB_PATH__ +#error TYPELIB_PATH__ not defined +#endif + +#ifndef TYPELIB_RESOURCEID__ +#error TYPELIB_RESOURCEID__ not defined +#endif + +/* + NOTE: + TYPELIB_PATH__ is defined on the command line (-D TYPELIB_PATH__=) + TYPELIB_RESOURCEID__ is defined before this file is included +*/ +TYPELIB_RESOURCEID__ TYPELIB TOSTRING(TYPELIB_PATH__) + +// EOF diff --git a/rosapps/applications/net/tsclient/rdesktop/COPYING b/rosapps/applications/net/tsclient/rdesktop/COPYING new file mode 100644 index 00000000000..416ee71e5ba --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/COPYING @@ -0,0 +1,346 @@ +This software is released under the GNU General Public License +(reproduced below) with the additional exemption that compiling, +linking, and/or using OpenSSL together with this software is +allowed. + +--- + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/rosapps/applications/net/tsclient/rdesktop/Makefile.in b/rosapps/applications/net/tsclient/rdesktop/Makefile.in new file mode 100644 index 00000000000..17d5522fac3 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/Makefile.in @@ -0,0 +1,158 @@ +# +# rdesktop: A Remote Desktop Protocol client +# Makefile.in +# Copyright (C) Matthew Chapman 1999-2005 +# + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +mandir = @mandir@ +datadir = @datadir@ + +VERSION = @PACKAGE_VERSION@ +KEYMAP_PATH = $(datadir)/rdesktop/keymaps/ + +CC = @CC@ +INSTALL = @INSTALL@ +CFLAGS = @CFLAGS@ @X_CFLAGS@ @DEFS@ -DKEYMAP_PATH=\"$(KEYMAP_PATH)\" +LDFLAGS = @LDFLAGS@ @LIBS@ @X_LIBS@ @X_EXTRA_LIBS@ +STRIP = @STRIP@ + +TARGETS = rdesktop @RDP2VNCTARGET@ +VNCINC = @VNCINC@ +LDVNC = @LDVNC@ +VNCLINK = @VNCLINK@ +SOUNDOBJ = @SOUNDOBJ@ + +RDPOBJ = tcp.o iso.o mcs.o secure.o licence.o rdp.o orders.o bitmap.o cache.o rdp5.o channels.o rdpdr.o serial.o printer.o disk.o parallel.o printercache.o mppc.o pstcache.o lspci.o seamless.o +X11OBJ = rdesktop.o xwin.o xkeymap.o ewmhints.o xclip.o cliprdr.o +VNCOBJ = vnc/rdp2vnc.o vnc/vnc.o vnc/xkeymap.o vnc/x11stubs.o + +.PHONY: all +all: $(TARGETS) + +rdesktop: $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ) + $(CC) $(CFLAGS) -o rdesktop $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ) $(LDFLAGS) -lX11 + +rdp2vnc: $(VNCOBJ) $(SOUNDOBJ) $(RDPOBJ) + $(VNCLINK) $(CFLAGS) -o rdp2vnc $(VNCOBJ) $(SOUNDOBJ) $(RDPOBJ) $(LDFLAGS) $(LDVNC) + +vnc/rdp2vnc.o: rdesktop.c + $(CC) $(CFLAGS) $(VNCINC) -DRDP2VNC -o vnc/rdp2vnc.o -c rdesktop.c + +vnc/vnc.o: vnc/vnc.c + $(CC) $(CFLAGS) $(VNCINC) -DRDP2VNC -o vnc/vnc.o -c vnc/vnc.c + +vnc/xkeymap.o: xkeymap.c + $(CC) $(CFLAGS) $(VNCINC) -DRDP2VNC -o vnc/xkeymap.o -c xkeymap.c + +vnc/x11stubs.o: vnc/x11stubs.c + $(CC) $(CFLAGS) $(VNCINC) -o vnc/x11stubs.o -c vnc/x11stubs.c + +.PHONY: install +install: installbin installkeymaps installman + +.PHONY: installbin +installbin: rdesktop + mkdir -p $(DESTDIR)$(bindir) + $(INSTALL) rdesktop $(DESTDIR)$(bindir) + $(STRIP) $(DESTDIR)$(bindir)/rdesktop + chmod 755 $(DESTDIR)$(bindir)/rdesktop + +.PHONY: installman +installman: doc/rdesktop.1 + mkdir -p $(DESTDIR)$(mandir)/man1 + cp doc/rdesktop.1 $(DESTDIR)$(mandir)/man1 + chmod 644 $(DESTDIR)$(mandir)/man1/rdesktop.1 + +.PHONY: installkeymaps +installkeymaps: + mkdir -p $(DESTDIR)$(KEYMAP_PATH) +# Prevent copying the CVS directory + cp keymaps/?? keymaps/??-?? $(DESTDIR)$(KEYMAP_PATH) + cp keymaps/common $(DESTDIR)$(KEYMAP_PATH) + cp keymaps/modifiers $(DESTDIR)$(KEYMAP_PATH) + chmod 644 $(DESTDIR)$(KEYMAP_PATH)/* + +.PHONY: proto +proto: + cat proto.head > proto.h + cproto -DMAKE_PROTO \ + bitmap.c cache.c channels.c cliprdr.c disk.c mppc.c ewmhints.c \ + iso.c licence.c mcs.c orders.c parallel.c printer.c printercache.c \ + pstcache.c rdesktop.c rdp5.c rdp.c rdpdr.c rdpsnd.c rdpsnd_oss.c \ + secure.c serial.c tcp.c xclip.c xkeymap.c xwin.c lspci.c seamless.c >> proto.h + cat proto.tail >> proto.h + +.PHONY: clean +clean: + rm -f *.o *~ vnc/*.o vnc/*~ rdesktop rdp2vnc + +.PHONY: distclean +distclean: clean + rm -rf autom4te.cache config.log config.status Makefile + +.PHONY: dist +dist: rdesktop-$(VERSION).tar.gz + +rdesktop-$(VERSION).tar.gz: Makefile configure + mkdir -p /tmp/rdesktop-make-dist-dir + ln -sf `pwd` /tmp/rdesktop-make-dist-dir/rdesktop-$(VERSION) + (cd /tmp/rdesktop-make-dist-dir; \ + tar zcvf rdesktop-$(VERSION)/rdesktop-$(VERSION).tar.gz \ + rdesktop-$(VERSION)/COPYING \ + rdesktop-$(VERSION)/README \ + rdesktop-$(VERSION)/configure \ + rdesktop-$(VERSION)/configure.ac \ + rdesktop-$(VERSION)/config.sub \ + rdesktop-$(VERSION)/config.guess \ + rdesktop-$(VERSION)/bootstrap \ + rdesktop-$(VERSION)/install-sh \ + rdesktop-$(VERSION)/Makefile.in \ + rdesktop-$(VERSION)/rdesktop.spec \ + rdesktop-$(VERSION)/*.c \ + rdesktop-$(VERSION)/*.h \ + rdesktop-$(VERSION)/proto.head \ + rdesktop-$(VERSION)/proto.tail \ + rdesktop-$(VERSION)/keymaps/?? \ + rdesktop-$(VERSION)/keymaps/??-?? \ + rdesktop-$(VERSION)/keymaps/common \ + rdesktop-$(VERSION)/keymaps/modifiers \ + rdesktop-$(VERSION)/keymaps/convert-map \ + rdesktop-$(VERSION)/doc/HACKING \ + rdesktop-$(VERSION)/doc/AUTHORS \ + rdesktop-$(VERSION)/doc/TODO \ + rdesktop-$(VERSION)/doc/ChangeLog \ + rdesktop-$(VERSION)/doc/keymapping.txt \ + rdesktop-$(VERSION)/doc/keymap-names.txt \ + rdesktop-$(VERSION)/doc/ipv6.txt \ + rdesktop-$(VERSION)/doc/licensing.txt \ + rdesktop-$(VERSION)/doc/patches.txt \ + rdesktop-$(VERSION)/doc/redirection.txt \ + rdesktop-$(VERSION)/doc/rdesktop.1 ) + rm -rf /tmp/rdesktop-make-dist-dir + +.PHONY: dist-noversion +dist-noversion: rdesktop.tar.gz + +rdesktop.tar.gz: rdesktop-$(VERSION).tar.gz + mkdir -p /tmp/rdesktop-make-dist-dir + tar zxvf $< -C /tmp/rdesktop-make-dist-dir + mv /tmp/rdesktop-make-dist-dir/rdesktop-$(VERSION) /tmp/rdesktop-make-dist-dir/rdesktop + ls /tmp/rdesktop-make-dist-dir/rdesktop + tar zcvf $@ -C /tmp/rdesktop-make-dist-dir rdesktop + rm -rf /tmp/rdesktop-make-dist-dir + +Makefile: Makefile.in configure + ./config.status + +configure: configure.ac + ./bootstrap + +.SUFFIXES: +.SUFFIXES: .c .o + +.c.o: + $(CC) $(CFLAGS) -o $@ -c $< + diff --git a/rosapps/applications/net/tsclient/rdesktop/README b/rosapps/applications/net/tsclient/rdesktop/README new file mode 100644 index 00000000000..d554582ba6d --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/README @@ -0,0 +1,32 @@ +=========================================== +rdesktop: A Remote Desktop Protocol client. +=========================================== + +rdesktop is a client for Microsoft Windows NT Terminal Server, Windows 2000 +Terminal Services, Windows 2003 Terminal Services/Remote Desktop, Windows XP +Remote Desktop, and possibly other Terminal Services products. +rdesktop currently implements the RDP version 4 and 5 protocols. + +Installation +------------ +rdesktop uses a typical GNU-style build procedure: + + % ./configure [options] + % make + % make install + +where documentation for [options] can be found by running "./configure --help". +Usually no options are necessary. The default is to install under /usr/local, +this can be changed with --prefix=directory. + +Invocation +---------- + + % rdesktop [options] server + +where server is the name of the Terminal Services machine. Note: if you +receive "Connection refused", this probably means that the server does not have +Terminal Services enabled, or there is a firewall blocking access. + +The rdesktop manual page lists the possible options ("man rdesktop"). + diff --git a/rosapps/applications/net/tsclient/rdesktop/bitmap.c b/rosapps/applications/net/tsclient/rdesktop/bitmap.c new file mode 100644 index 00000000000..d23a77c7c15 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/bitmap.c @@ -0,0 +1,1112 @@ +/* -*- c-basic-offset: 8 -*- + rdesktop: A Remote Desktop Protocol client. + Bitmap decompression routines + Copyright (C) Matthew Chapman 1999-2005 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +/* three seperate function for speed when decompressing the bitmaps */ +/* when modifing one function make the change in the others */ +/* comment out #define BITMAP_SPEED_OVER_SIZE below for one slower function */ +/* j@american-data.com */ + +#define BITMAP_SPEED_OVER_SIZE + +/* indent is confused by this file */ +/* *INDENT-OFF* */ + +#include "rdesktop.h" + +#define CVAL(p) (*(p++)) +#ifdef NEED_ALIGN +#ifdef L_ENDIAN +#define CVAL2(p, v) { v = (*(p++)); v |= (*(p++)) << 8; } +#else +#define CVAL2(p, v) { v = (*(p++)) << 8; v |= (*(p++)); } +#endif /* L_ENDIAN */ +#else +#define CVAL2(p, v) { v = (*((uint16*)p)); p += 2; } +#endif /* NEED_ALIGN */ + +#define UNROLL8(exp) { exp exp exp exp exp exp exp exp } + +#define REPEAT(statement) \ +{ \ + while((count & ~0x7) && ((x+8) < width)) \ + UNROLL8( statement; count--; x++; ); \ + \ + while((count > 0) && (x < width)) \ + { \ + statement; \ + count--; \ + x++; \ + } \ +} + +#define MASK_UPDATE() \ +{ \ + mixmask <<= 1; \ + if (mixmask == 0) \ + { \ + mask = fom_mask ? fom_mask : CVAL(input); \ + mixmask = 1; \ + } \ +} + +#ifdef BITMAP_SPEED_OVER_SIZE + +/* 1 byte bitmap decompress */ +static BOOL +bitmap_decompress1(uint8 * output, int width, int height, uint8 * input, int size) +{ + uint8 *end = input + size; + uint8 *prevline = NULL; + int opcode, count, offset, isfillormix; + int lastopcode = -1, insertmix = False, bicolour = False; + uint8 code; + uint8 colour1 = 0, colour2 = 0; + uint8 mixmask, mask = 0; + uint8 mix = 0xff; + int fom_mask = 0; +#if 0 + uint8 *line = NULL; + int x = width; +#else + uint8 *line = output; + int x = 0; + int y = 0; +#endif + + while (input < end) + { + fom_mask = 0; + code = CVAL(input); + opcode = code >> 4; + /* Handle different opcode forms */ + switch (opcode) + { + case 0xc: + case 0xd: + case 0xe: + opcode -= 6; + count = code & 0xf; + offset = 16; + break; + case 0xf: + opcode = code & 0xf; + if (opcode < 9) + { + count = CVAL(input); + count |= CVAL(input) << 8; + } + else + { + count = (opcode < 0xb) ? 8 : 1; + } + offset = 0; + break; + default: + opcode >>= 1; + count = code & 0x1f; + offset = 32; + break; + } + /* Handle strange cases for counts */ + if (offset != 0) + { + isfillormix = ((opcode == 2) || (opcode == 7)); + if (count == 0) + { + if (isfillormix) + count = CVAL(input) + 1; + else + count = CVAL(input) + offset; + } + else if (isfillormix) + { + count <<= 3; + } + } + /* Read preliminary data */ + switch (opcode) + { + case 0: /* Fill */ + if ((lastopcode == opcode) && !((x == width) && (prevline == NULL))) + insertmix = True; + break; + case 8: /* Bicolour */ + colour1 = CVAL(input); + case 3: /* Colour */ + colour2 = CVAL(input); + break; + case 6: /* SetMix/Mix */ + case 7: /* SetMix/FillOrMix */ + mix = CVAL(input); + opcode -= 5; + break; + case 9: /* FillOrMix_1 */ + mask = 0x03; + opcode = 0x02; + fom_mask = 3; + break; + case 0x0a: /* FillOrMix_2 */ + mask = 0x05; + opcode = 0x02; + fom_mask = 5; + break; + } + lastopcode = opcode; + mixmask = 0; + /* Output body */ + while (count > 0) + { + if (x >= width) + { +#if 0 + if (height <= 0) +#else + if (y >= height) +#endif + return False; + x = 0; + +#if 0 + height--; +#else + y ++; +#endif + + prevline = line; + +#if 0 + line = output + height * width; +#else + line = output + y * width; +#endif + } + switch (opcode) + { + case 0: /* Fill */ + if (insertmix) + { + if (prevline == NULL) + line[x] = mix; + else + line[x] = prevline[x] ^ mix; + insertmix = False; + count--; + x++; + } + if (prevline == NULL) + { + REPEAT(line[x] = 0) + } + else + { + REPEAT(line[x] = prevline[x]) + } + break; + case 1: /* Mix */ + if (prevline == NULL) + { + REPEAT(line[x] = mix) + } + else + { + REPEAT(line[x] = prevline[x] ^ mix) + } + break; + case 2: /* Fill or Mix */ + if (prevline == NULL) + { + REPEAT + ( + MASK_UPDATE(); + if (mask & mixmask) + line[x] = mix; + else + line[x] = 0; + ) + } + else + { + REPEAT + ( + MASK_UPDATE(); + if (mask & mixmask) + line[x] = prevline[x] ^ mix; + else + line[x] = prevline[x]; + ) + } + break; + case 3: /* Colour */ + REPEAT(line[x] = colour2) + break; + case 4: /* Copy */ + REPEAT(line[x] = CVAL(input)) + break; + case 8: /* Bicolour */ + REPEAT + ( + if (bicolour) + { + line[x] = colour2; + bicolour = False; + } + else + { + line[x] = colour1; + bicolour = True; count++; + } + ) + break; + case 0xd: /* White */ + REPEAT(line[x] = 0xff) + break; + case 0xe: /* Black */ + REPEAT(line[x] = 0) + break; + default: + unimpl("bitmap opcode 0x%x\n", opcode); + return False; + } + } + } + return True; +} + +/* 2 byte bitmap decompress */ +static BOOL +bitmap_decompress2(uint8 * output, int width, int height, uint8 * input, int size) +{ + uint8 *end = input + size; + uint16 *prevline = NULL; + int opcode, count, offset, isfillormix; + int lastopcode = -1, insertmix = False, bicolour = False; + uint8 code; + uint16 colour1 = 0, colour2 = 0; + uint8 mixmask, mask = 0; + uint16 mix = 0xffff; + int fom_mask = 0; +#if 0 + uint8 *line = NULL; + int x = width; +#else + uint8 *line = output; + int x = 0; + int y = 0; +#endif + + while (input < end) + { + fom_mask = 0; + code = CVAL(input); + opcode = code >> 4; + /* Handle different opcode forms */ + switch (opcode) + { + case 0xc: + case 0xd: + case 0xe: + opcode -= 6; + count = code & 0xf; + offset = 16; + break; + case 0xf: + opcode = code & 0xf; + if (opcode < 9) + { + count = CVAL(input); + count |= CVAL(input) << 8; + } + else + { + count = (opcode < 0xb) ? 8 : 1; + } + offset = 0; + break; + default: + opcode >>= 1; + count = code & 0x1f; + offset = 32; + break; + } + /* Handle strange cases for counts */ + if (offset != 0) + { + isfillormix = ((opcode == 2) || (opcode == 7)); + if (count == 0) + { + if (isfillormix) + count = CVAL(input) + 1; + else + count = CVAL(input) + offset; + } + else if (isfillormix) + { + count <<= 3; + } + } + /* Read preliminary data */ + switch (opcode) + { + case 0: /* Fill */ + if ((lastopcode == opcode) && !((x == width) && (prevline == NULL))) + insertmix = True; + break; + case 8: /* Bicolour */ + CVAL2(input, colour1); + case 3: /* Colour */ + CVAL2(input, colour2); + break; + case 6: /* SetMix/Mix */ + case 7: /* SetMix/FillOrMix */ + CVAL2(input, mix); + opcode -= 5; + break; + case 9: /* FillOrMix_1 */ + mask = 0x03; + opcode = 0x02; + fom_mask = 3; + break; + case 0x0a: /* FillOrMix_2 */ + mask = 0x05; + opcode = 0x02; + fom_mask = 5; + break; + } + lastopcode = opcode; + mixmask = 0; + /* Output body */ + while (count > 0) + { + if (x >= width) + { +#if 0 + if (height <= 0) +#else + if (y >= height) +#endif + return False; + x = 0; + +#if 0 + height--; +#else + y ++; +#endif + + prevline = line; + +#if 0 + line = ((uint16 *) output) + height * width; +#else + line = ((uint16 *) output) + y * width; +#endif + } + switch (opcode) + { + case 0: /* Fill */ + if (insertmix) + { + if (prevline == NULL) + line[x] = mix; + else + line[x] = prevline[x] ^ mix; + insertmix = False; + count--; + x++; + } + if (prevline == NULL) + { + REPEAT(line[x] = 0) + } + else + { + REPEAT(line[x] = prevline[x]) + } + break; + case 1: /* Mix */ + if (prevline == NULL) + { + REPEAT(line[x] = mix) + } + else + { + REPEAT(line[x] = prevline[x] ^ mix) + } + break; + case 2: /* Fill or Mix */ + if (prevline == NULL) + { + REPEAT + ( + MASK_UPDATE(); + if (mask & mixmask) + line[x] = mix; + else + line[x] = 0; + ) + } + else + { + REPEAT + ( + MASK_UPDATE(); + if (mask & mixmask) + line[x] = prevline[x] ^ mix; + else + line[x] = prevline[x]; + ) + } + break; + case 3: /* Colour */ + REPEAT(line[x] = colour2) + break; + case 4: /* Copy */ + REPEAT(CVAL2(input, line[x])) + break; + case 8: /* Bicolour */ + REPEAT + ( + if (bicolour) + { + line[x] = colour2; + bicolour = False; + } + else + { + line[x] = colour1; + bicolour = True; + count++; + } + ) + break; + case 0xd: /* White */ + REPEAT(line[x] = 0xffff) + break; + case 0xe: /* Black */ + REPEAT(line[x] = 0) + break; + default: + unimpl("bitmap opcode 0x%x\n", opcode); + return False; + } + } + } + return True; +} + +/* 3 byte bitmap decompress */ +static BOOL +bitmap_decompress3(uint8 * output, int width, int height, uint8 * input, int size) +{ + uint8 *end = input + size; + uint8 *prevline = NULL; + int opcode, count, offset, isfillormix; + int lastopcode = -1, insertmix = False, bicolour = False; + uint8 code; + uint8 colour1[3] = {0, 0, 0}, colour2[3] = {0, 0, 0}; + uint8 mixmask, mask = 0; + uint8 mix[3] = {0xff, 0xff, 0xff}; + int fom_mask = 0; +#if 0 + uint8 *line = NULL; + int x = width; +#else + uint8 *line = output; + int x = 0; + int y = 0; +#endif + + while (input < end) + { + fom_mask = 0; + code = CVAL(input); + opcode = code >> 4; + /* Handle different opcode forms */ + switch (opcode) + { + case 0xc: + case 0xd: + case 0xe: + opcode -= 6; + count = code & 0xf; + offset = 16; + break; + case 0xf: + opcode = code & 0xf; + if (opcode < 9) + { + count = CVAL(input); + count |= CVAL(input) << 8; + } + else + { + count = (opcode < + 0xb) ? 8 : 1; + } + offset = 0; + break; + default: + opcode >>= 1; + count = code & 0x1f; + offset = 32; + break; + } + /* Handle strange cases for counts */ + if (offset != 0) + { + isfillormix = ((opcode == 2) || (opcode == 7)); + if (count == 0) + { + if (isfillormix) + count = CVAL(input) + 1; + else + count = CVAL(input) + offset; + } + else if (isfillormix) + { + count <<= 3; + } + } + /* Read preliminary data */ + switch (opcode) + { + case 0: /* Fill */ + if ((lastopcode == opcode) && !((x == width) && (prevline == NULL))) + insertmix = True; + break; + case 8: /* Bicolour */ + colour1[0] = CVAL(input); + colour1[1] = CVAL(input); + colour1[2] = CVAL(input); + case 3: /* Colour */ + colour2[0] = CVAL(input); + colour2[1] = CVAL(input); + colour2[2] = CVAL(input); + break; + case 6: /* SetMix/Mix */ + case 7: /* SetMix/FillOrMix */ + mix[0] = CVAL(input); + mix[1] = CVAL(input); + mix[2] = CVAL(input); + opcode -= 5; + break; + case 9: /* FillOrMix_1 */ + mask = 0x03; + opcode = 0x02; + fom_mask = 3; + break; + case 0x0a: /* FillOrMix_2 */ + mask = 0x05; + opcode = 0x02; + fom_mask = 5; + break; + } + lastopcode = opcode; + mixmask = 0; + /* Output body */ + while (count > 0) + { + if (x >= width) + { +#if 0 + if (height <= 0) +#else + if (y >= height) +#endif + return False; + x = 0; + +#if 0 + height--; +#else + y ++; +#endif + + prevline = line; + +#if 0 + line = output + height * (width * 3); +#else + line = output + y * (width * 3); +#endif + } + switch (opcode) + { + case 0: /* Fill */ + if (insertmix) + { + if (prevline == NULL) + { + line[x * 3] = mix[0]; + line[x * 3 + 1] = mix[1]; + line[x * 3 + 2] = mix[2]; + } + else + { + line[x * 3] = + prevline[x * 3] ^ mix[0]; + line[x * 3 + 1] = + prevline[x * 3 + 1] ^ mix[1]; + line[x * 3 + 2] = + prevline[x * 3 + 2] ^ mix[2]; + } + insertmix = False; + count--; + x++; + } + if (prevline == NULL) + { + REPEAT + ( + line[x * 3] = 0; + line[x * 3 + 1] = 0; + line[x * 3 + 2] = 0; + ) + } + else + { + REPEAT + ( + line[x * 3] = prevline[x * 3]; + line[x * 3 + 1] = prevline[x * 3 + 1]; + line[x * 3 + 2] = prevline[x * 3 + 2]; + ) + } + break; + case 1: /* Mix */ + if (prevline == NULL) + { + REPEAT + ( + line[x * 3] = mix[0]; + line[x * 3 + 1] = mix[1]; + line[x * 3 + 2] = mix[2]; + ) + } + else + { + REPEAT + ( + line[x * 3] = + prevline[x * 3] ^ mix[0]; + line[x * 3 + 1] = + prevline[x * 3 + 1] ^ mix[1]; + line[x * 3 + 2] = + prevline[x * 3 + 2] ^ mix[2]; + ) + } + break; + case 2: /* Fill or Mix */ + if (prevline == NULL) + { + REPEAT + ( + MASK_UPDATE(); + if (mask & mixmask) + { + line[x * 3] = mix[0]; + line[x * 3 + 1] = mix[1]; + line[x * 3 + 2] = mix[2]; + } + else + { + line[x * 3] = 0; + line[x * 3 + 1] = 0; + line[x * 3 + 2] = 0; + } + ) + } + else + { + REPEAT + ( + MASK_UPDATE(); + if (mask & mixmask) + { + line[x * 3] = + prevline[x * 3] ^ mix [0]; + line[x * 3 + 1] = + prevline[x * 3 + 1] ^ mix [1]; + line[x * 3 + 2] = + prevline[x * 3 + 2] ^ mix [2]; + } + else + { + line[x * 3] = + prevline[x * 3]; + line[x * 3 + 1] = + prevline[x * 3 + 1]; + line[x * 3 + 2] = + prevline[x * 3 + 2]; + } + ) + } + break; + case 3: /* Colour */ + REPEAT + ( + line[x * 3] = colour2 [0]; + line[x * 3 + 1] = colour2 [1]; + line[x * 3 + 2] = colour2 [2]; + ) + break; + case 4: /* Copy */ + REPEAT + ( + line[x * 3] = CVAL(input); + line[x * 3 + 1] = CVAL(input); + line[x * 3 + 2] = CVAL(input); + ) + break; + case 8: /* Bicolour */ + REPEAT + ( + if (bicolour) + { + line[x * 3] = colour2[0]; + line[x * 3 + 1] = colour2[1]; + line[x * 3 + 2] = colour2[2]; + bicolour = False; + } + else + { + line[x * 3] = colour1[0]; + line[x * 3 + 1] = colour1[1]; + line[x * 3 + 2] = colour1[2]; + bicolour = True; + count++; + } + ) + break; + case 0xd: /* White */ + REPEAT + ( + line[x * 3] = 0xff; + line[x * 3 + 1] = 0xff; + line[x * 3 + 2] = 0xff; + ) + break; + case 0xe: /* Black */ + REPEAT + ( + line[x * 3] = 0; + line[x * 3 + 1] = 0; + line[x * 3 + 2] = 0; + ) + break; + default: + unimpl("bitmap opcode 0x%x\n", opcode); + return False; + } + } + } + return True; +} + +#else + +static uint32 +cvalx(uint8 **input, int Bpp) +{ + uint32 rv = 0; + memcpy(&rv, *input, Bpp); + *input += Bpp; + return rv; +} + +static void +setli(uint8 *input, int offset, uint32 value, int Bpp) +{ + input += offset * Bpp; + memcpy(input, &value, Bpp); +} + +static uint32 +getli(uint8 *input, int offset, int Bpp) +{ + uint32 rv = 0; + input += offset * Bpp; + memcpy(&rv, input, Bpp); + return rv; +} + +static BOOL +bitmap_decompressx(uint8 *output, int width, int height, uint8 *input, int size, int Bpp) +{ + uint8 *end = input + size; + uint8 *prevline = NULL; + int opcode, count, offset, isfillormix; + int lastopcode = -1, insertmix = False, bicolour = False; + uint8 code; + uint32 colour1 = 0, colour2 = 0; + uint8 mixmask, mask = 0; + uint32 mix = 0xffffffff; + int fom_mask = 0; +#if 0 + uint8 *line = NULL; + int x = width; +#else + uint8 *line = output; + int x = 0; + int y = 0; +#endif + + while (input < end) + { + fom_mask = 0; + code = CVAL(input); + opcode = code >> 4; + + /* Handle different opcode forms */ + switch (opcode) + { + case 0xc: + case 0xd: + case 0xe: + opcode -= 6; + count = code & 0xf; + offset = 16; + break; + + case 0xf: + opcode = code & 0xf; + if (opcode < 9) + { + count = CVAL(input); + count |= CVAL(input) << 8; + } + else + { + count = (opcode < 0xb) ? 8 : 1; + } + offset = 0; + break; + + default: + opcode >>= 1; + count = code & 0x1f; + offset = 32; + break; + } + + /* Handle strange cases for counts */ + if (offset != 0) + { + isfillormix = ((opcode == 2) || (opcode == 7)); + + if (count == 0) + { + if (isfillormix) + count = CVAL(input) + 1; + else + count = CVAL(input) + offset; + } + else if (isfillormix) + { + count <<= 3; + } + } + + /* Read preliminary data */ + switch (opcode) + { + case 0: /* Fill */ + if ((lastopcode == opcode) && !((x == width) && (prevline == NULL))) + insertmix = True; + break; + case 8: /* Bicolour */ + colour1 = cvalx(&input, Bpp); + case 3: /* Colour */ + colour2 = cvalx(&input, Bpp); + break; + case 6: /* SetMix/Mix */ + case 7: /* SetMix/FillOrMix */ + mix = cvalx(&input, Bpp); + opcode -= 5; + break; + case 9: /* FillOrMix_1 */ + mask = 0x03; + opcode = 0x02; + fom_mask = 3; + break; + case 0x0a: /* FillOrMix_2 */ + mask = 0x05; + opcode = 0x02; + fom_mask = 5; + break; + + } + + lastopcode = opcode; + mixmask = 0; + + /* Output body */ + while (count > 0) + { + if (x >= width) + { +#if 0 + if (height <= 0) +#else + if (y >= height) +#endif + return False; + + x = 0; + +#if 0 + height--; +#else + y ++; +#endif + + prevline = line; + +#if 0 + line = output + height * width * Bpp; +#else + line = output + y * width * Bpp; +#endif + } + + switch (opcode) + { + case 0: /* Fill */ + if (insertmix) + { + if (prevline == NULL) + setli(line, x, mix, Bpp); + else + setli(line, x, + getli(prevline, x, Bpp) ^ mix, Bpp); + + insertmix = False; + count--; + x++; + } + + if (prevline == NULL) + { + REPEAT(setli(line, x, 0, Bpp))} + else + { + REPEAT(setli + (line, x, getli(prevline, x, Bpp), Bpp)); + } + break; + + case 1: /* Mix */ + if (prevline == NULL) + { + REPEAT(setli(line, x, mix, Bpp)); + } + else + { + REPEAT(setli + (line, x, getli(prevline, x, Bpp) ^ mix, + Bpp)); + } + break; + + case 2: /* Fill or Mix */ + if (prevline == NULL) + { + REPEAT(MASK_UPDATE(); + if (mask & mixmask) setli(line, x, mix, Bpp); + else + setli(line, x, 0, Bpp);); + } + else + { + REPEAT(MASK_UPDATE(); + if (mask & mixmask) + setli(line, x, getli(prevline, x, Bpp) ^ mix, + Bpp); + else + setli(line, x, getli(prevline, x, Bpp), + Bpp);); + } + break; + + case 3: /* Colour */ + REPEAT(setli(line, x, colour2, Bpp)); + break; + + case 4: /* Copy */ + REPEAT(setli(line, x, cvalx(&input, Bpp), Bpp)); + break; + + case 8: /* Bicolour */ + REPEAT(if (bicolour) + { + setli(line, x, colour2, Bpp); bicolour = False;} + else + { + setli(line, x, colour1, Bpp); bicolour = True; + count++;} + ); + break; + + case 0xd: /* White */ + REPEAT(setli(line, x, 0xffffffff, Bpp)); + break; + + case 0xe: /* Black */ + REPEAT(setli(line, x, 0, Bpp)); + break; + + default: + unimpl("bitmap opcode 0x%x\n", opcode); + return False; + } + } + } + + return True; +} + +#endif + +/* main decompress function */ +BOOL +bitmap_decompress(uint8 * output, int width, int height, uint8 * input, int size, int Bpp) +{ +#ifdef BITMAP_SPEED_OVER_SIZE + BOOL rv = False; + switch (Bpp) + { + case 1: + rv = bitmap_decompress1(output, width, height, input, size); + break; + case 2: + rv = bitmap_decompress2(output, width, height, input, size); + break; + case 3: + rv = bitmap_decompress3(output, width, height, input, size); + break; + } +#else + BOOL rv; + rv = bitmap_decompressx(output, width, height, input, size, Bpp); +#endif + return rv; +} + +/* *INDENT-ON* */ diff --git a/rosapps/applications/net/tsclient/rdesktop/bootstrap b/rosapps/applications/net/tsclient/rdesktop/bootstrap new file mode 100644 index 00000000000..73979144b4b --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/bootstrap @@ -0,0 +1,3 @@ +#!/bin/sh +rm -rf autom4te.cache +autoreconf -i diff --git a/rosapps/applications/net/tsclient/rdesktop/cache.c b/rosapps/applications/net/tsclient/rdesktop/cache.c new file mode 100644 index 00000000000..dd0bb491755 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/cache.c @@ -0,0 +1,414 @@ +/* -*- c-basic-offset: 8 -*- + rdesktop: A Remote Desktop Protocol client. + Cache routines + Copyright (C) Matthew Chapman 1999-2005 + Copyright (C) Jeroen Meijer 2005 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "rdesktop.h" + +#undef IS_SET // !!!FIXME!!! + +/* BITMAP CACHE */ +#define NUM_ELEMENTS(array) (sizeof(array) / sizeof(array[0])) +#define IS_PERSISTENT(id) (This->pstcache_fd[id] > 0) +#define TO_TOP -1 +#define NOT_SET -1 +#define IS_SET(idx) (idx >= 0) + +/* + * TODO: Test for optimal value of BUMP_COUNT. TO_TOP gives lowest cpu utilisation but using + * a positive value will hopefully result in less frequently used bitmaps having a greater chance + * of being evicted from the cache, and therby reducing the need to load bitmaps from disk. + * (Jeroen) + */ +#define BUMP_COUNT 40 + +/* Setup the bitmap cache lru/mru linked list */ +void +cache_rebuild_bmpcache_linked_list(RDPCLIENT * This, uint8 id, sint16 * idx, int count) +{ + int n = count, c = 0; + sint16 n_idx; + + /* find top, skip evicted bitmaps */ + while (--n >= 0 && This->cache.bmpcache[id][idx[n]].bitmap == NULL); + if (n < 0) + { + This->cache.bmpcache_mru[id] = This->cache.bmpcache_lru[id] = NOT_SET; + return; + } + + This->cache.bmpcache_mru[id] = idx[n]; + This->cache.bmpcache[id][idx[n]].next = NOT_SET; + n_idx = idx[n]; + c++; + + /* link list */ + while (n >= 0) + { + /* skip evicted bitmaps */ + while (--n >= 0 && This->cache.bmpcache[id][idx[n]].bitmap == NULL); + + if (n < 0) + break; + + This->cache.bmpcache[id][n_idx].previous = idx[n]; + This->cache.bmpcache[id][idx[n]].next = n_idx; + n_idx = idx[n]; + c++; + } + + This->cache.bmpcache[id][n_idx].previous = NOT_SET; + This->cache.bmpcache_lru[id] = n_idx; + + if (c != This->cache.bmpcache_count[id]) + { + error("Oops. %d in bitmap cache linked list, %d in ui cache...\n", c, + This->cache.bmpcache_count[id]); + exit(1); + } +} + +/* Move a bitmap to a new position in the linked list. */ +void +cache_bump_bitmap(RDPCLIENT * This, uint8 id, uint16 idx, int bump) +{ + int p_idx, n_idx, n; + + if (!IS_PERSISTENT(id)) + return; + + if (This->cache.bmpcache_mru[id] == idx) + return; + + DEBUG_RDP5(("bump bitmap: id=%d, idx=%d, bump=%d\n", id, idx, bump)); + + n_idx = This->cache.bmpcache[id][idx].next; + p_idx = This->cache.bmpcache[id][idx].previous; + + if (IS_SET(n_idx)) + { + /* remove */ + --This->cache.bmpcache_count[id]; + if (IS_SET(p_idx)) + This->cache.bmpcache[id][p_idx].next = n_idx; + else + This->cache.bmpcache_lru[id] = n_idx; + if (IS_SET(n_idx)) + This->cache.bmpcache[id][n_idx].previous = p_idx; + else + This->cache.bmpcache_mru[id] = p_idx; + } + else + { + p_idx = NOT_SET; + n_idx = This->cache.bmpcache_lru[id]; + } + + if (bump >= 0) + { + for (n = 0; n < bump && IS_SET(n_idx); n++) + { + p_idx = n_idx; + n_idx = This->cache.bmpcache[id][p_idx].next; + } + } + else + { + p_idx = This->cache.bmpcache_mru[id]; + n_idx = NOT_SET; + } + + /* insert */ + ++This->cache.bmpcache_count[id]; + This->cache.bmpcache[id][idx].previous = p_idx; + This->cache.bmpcache[id][idx].next = n_idx; + + if (p_idx >= 0) + This->cache.bmpcache[id][p_idx].next = idx; + else + This->cache.bmpcache_lru[id] = idx; + + if (n_idx >= 0) + This->cache.bmpcache[id][n_idx].previous = idx; + else + This->cache.bmpcache_mru[id] = idx; +} + +/* Evict the least-recently used bitmap from the cache */ +void +cache_evict_bitmap(RDPCLIENT * This, uint8 id) +{ + uint16 idx; + int n_idx; + + if (!IS_PERSISTENT(id)) + return; + + idx = This->cache.bmpcache_lru[id]; + n_idx = This->cache.bmpcache[id][idx].next; + DEBUG_RDP5(("evict bitmap: id=%d idx=%d n_idx=%d bmp=0x%x\n", id, idx, n_idx, + This->cache.bmpcache[id][idx].bitmap)); + + ui_destroy_bitmap(This, This->cache.bmpcache[id][idx].bitmap); + --This->cache.bmpcache_count[id]; + This->cache.bmpcache[id][idx].bitmap = 0; + + This->cache.bmpcache_lru[id] = n_idx; + This->cache.bmpcache[id][n_idx].previous = NOT_SET; + + pstcache_touch_bitmap(This, id, idx, 0); +} + +/* Retrieve a bitmap from the cache */ +HBITMAP +cache_get_bitmap(RDPCLIENT * This, uint8 id, uint16 idx) +{ + if ((id < NUM_ELEMENTS(This->cache.bmpcache)) && (idx < NUM_ELEMENTS(This->cache.bmpcache[0]))) + { + if (This->cache.bmpcache[id][idx].bitmap || pstcache_load_bitmap(This, id, idx)) + { + if (IS_PERSISTENT(id)) + cache_bump_bitmap(This, id, idx, BUMP_COUNT); + + return This->cache.bmpcache[id][idx].bitmap; + } + } + else if ((id < NUM_ELEMENTS(This->cache.volatile_bc)) && (idx == 0x7fff)) + { + return This->cache.volatile_bc[id]; + } + + error("get bitmap %d:%d\n", id, idx); + return NULL; +} + +/* Store a bitmap in the cache */ +void +cache_put_bitmap(RDPCLIENT * This, uint8 id, uint16 idx, HBITMAP bitmap) +{ + HBITMAP old; + + if ((id < NUM_ELEMENTS(This->cache.bmpcache)) && (idx < NUM_ELEMENTS(This->cache.bmpcache[0]))) + { + old = This->cache.bmpcache[id][idx].bitmap; + if (old != NULL) + ui_destroy_bitmap(This, old); + This->cache.bmpcache[id][idx].bitmap = bitmap; + + if (IS_PERSISTENT(id)) + { + if (old == NULL) + This->cache.bmpcache[id][idx].previous = This->cache.bmpcache[id][idx].next = NOT_SET; + + cache_bump_bitmap(This, id, idx, TO_TOP); + if (This->cache.bmpcache_count[id] > BMPCACHE2_C2_CELLS) + cache_evict_bitmap(This, id); + } + } + else if ((id < NUM_ELEMENTS(This->cache.volatile_bc)) && (idx == 0x7fff)) + { + old = This->cache.volatile_bc[id]; + if (old != NULL) + ui_destroy_bitmap(This, old); + This->cache.volatile_bc[id] = bitmap; + } + else + { + error("put bitmap %d:%d\n", id, idx); + } +} + +/* Updates the persistent bitmap cache MRU information on exit */ +void +cache_save_state(RDPCLIENT * This) +{ + uint32 id = 0, t = 0; + int idx; + + for (id = 0; id < NUM_ELEMENTS(This->cache.bmpcache); id++) + if (IS_PERSISTENT(id)) + { + DEBUG_RDP5(("Saving cache state for bitmap cache %d...", id)); + idx = This->cache.bmpcache_lru[id]; + while (idx >= 0) + { + pstcache_touch_bitmap(This, id, idx, ++t); + idx = This->cache.bmpcache[id][idx].next; + } + DEBUG_RDP5((" %d stamps written.\n", t)); + } +} + + +/* FONT CACHE */ +/* Retrieve a glyph from the font cache */ +FONTGLYPH * +cache_get_font(RDPCLIENT * This, uint8 font, uint16 character) +{ + FONTGLYPH *glyph; + + if ((font < NUM_ELEMENTS(This->cache.fontcache)) && (character < NUM_ELEMENTS(This->cache.fontcache[0]))) + { + glyph = &This->cache.fontcache[font][character]; + if (glyph->pixmap != NULL) + return glyph; + } + + error("get font %d:%d\n", font, character); + return NULL; +} + +/* Store a glyph in the font cache */ +void +cache_put_font(RDPCLIENT * This, uint8 font, uint16 character, uint16 offset, + uint16 baseline, uint16 width, uint16 height, HGLYPH pixmap) +{ + FONTGLYPH *glyph; + + if ((font < NUM_ELEMENTS(This->cache.fontcache)) && (character < NUM_ELEMENTS(This->cache.fontcache[0]))) + { + glyph = &This->cache.fontcache[font][character]; + if (glyph->pixmap != NULL) + ui_destroy_glyph(This, glyph->pixmap); + + glyph->offset = offset; + glyph->baseline = baseline; + glyph->width = width; + glyph->height = height; + glyph->pixmap = pixmap; + } + else + { + error("put font %d:%d\n", font, character); + } +} + + +/* TEXT CACHE */ +/* Retrieve a text item from the cache */ +DATABLOB * +cache_get_text(RDPCLIENT * This, uint8 cache_id) +{ + DATABLOB *text; + + text = &This->cache.textcache[cache_id]; + return text; +} + +/* Store a text item in the cache */ +void +cache_put_text(RDPCLIENT * This, uint8 cache_id, void *data, int length) +{ + DATABLOB *text; + void * p = malloc(length); + + if(p == NULL) + return; + + text = &This->cache.textcache[cache_id]; + if (text->data != NULL) + free(text->data); + text->data = p; + text->size = length; + memcpy(text->data, data, length); +} + + +/* DESKTOP CACHE */ +/* Retrieve desktop data from the cache */ +uint8 * +cache_get_desktop(RDPCLIENT * This, uint32 offset, int cx, int cy, int bytes_per_pixel) +{ + int length = cx * cy * bytes_per_pixel; + + if (offset > sizeof(This->cache.deskcache)) + offset = 0; + + if ((offset + length) <= sizeof(This->cache.deskcache)) + { + return &This->cache.deskcache[offset]; + } + + error("get desktop %d:%d\n", offset, length); + return NULL; +} + +/* Store desktop data in the cache */ +void +cache_put_desktop(RDPCLIENT * This, uint32 offset, int cx, int cy, int scanline, int bytes_per_pixel, uint8 * data) +{ + int length = cx * cy * bytes_per_pixel; + + if (offset > sizeof(This->cache.deskcache)) + offset = 0; + + if ((offset + length) <= sizeof(This->cache.deskcache)) + { + cx *= bytes_per_pixel; + while (cy--) + { + memcpy(&This->cache.deskcache[offset], data, cx); + data += scanline; + offset += cx; + } + } + else + { + error("put desktop %d:%d\n", offset, length); + } +} + + +/* CURSOR CACHE */ +/* Retrieve cursor from cache */ +HCURSOR +cache_get_cursor(RDPCLIENT * This, uint16 cache_idx) +{ + HCURSOR cursor; + + if (cache_idx < NUM_ELEMENTS(This->cache.cursorcache)) + { + cursor = This->cache.cursorcache[cache_idx]; + if (cursor != NULL) + return cursor; + } + + error("get cursor %d\n", cache_idx); + return NULL; +} + +/* Store cursor in cache */ +void +cache_put_cursor(RDPCLIENT * This, uint16 cache_idx, HCURSOR cursor) +{ + HCURSOR old; + + if (cache_idx < NUM_ELEMENTS(This->cache.cursorcache)) + { + old = This->cache.cursorcache[cache_idx]; + if (old != NULL) + ui_destroy_cursor(This, old); + + This->cache.cursorcache[cache_idx] = cursor; + } + else + { + error("put cursor %d\n", cache_idx); + } +} diff --git a/rosapps/applications/net/tsclient/rdesktop/channels.c b/rosapps/applications/net/tsclient/rdesktop/channels.c new file mode 100644 index 00000000000..5c1f1bc696d --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/channels.c @@ -0,0 +1,177 @@ +/* -*- c-basic-offset: 8 -*- + rdesktop: A Remote Desktop Protocol client. + Protocol services - Virtual channels + Copyright (C) Erik Forsberg 2003 + Copyright (C) Matthew Chapman 2003-2005 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "rdesktop.h" + +// FIXME: header mess +#if 0 +#define CHANNEL_CHUNK_LENGTH 1600 +#define CHANNEL_FLAG_FIRST 0x01 +#define CHANNEL_FLAG_LAST 0x02 +#define CHANNEL_FLAG_SHOW_PROTOCOL 0x10 +#endif + +/* FIXME: We should use the information in TAG_SRV_CHANNELS to map RDP5 + channels to MCS channels. + + The format of TAG_SRV_CHANNELS seems to be + + global_channel_no (uint16le) + number_of_other_channels (uint16le) + ..followed by uint16les for the other channels. +*/ + +VCHANNEL * +channel_register(RDPCLIENT * This, char *name, uint32 flags, void (*callback) (RDPCLIENT *, STREAM)) +{ + VCHANNEL *channel; + + if (!This->use_rdp5) + return NULL; + + if (This->num_channels >= MAX_CHANNELS) + { + error("Channel table full, increase MAX_CHANNELS\n"); + return NULL; + } + + channel = &This->channels[This->num_channels]; + channel->mcs_id = MCS_GLOBAL_CHANNEL + 1 + This->num_channels; + strncpy(channel->name, name, 8); + channel->flags = flags; + channel->process = callback; + This->num_channels++; + return channel; +} + +STREAM +channel_init(RDPCLIENT * This, VCHANNEL * channel, uint32 length) +{ + STREAM s; + + s = sec_init(This, This->encryption ? SEC_ENCRYPT : 0, length + 8); + s_push_layer(s, channel_hdr, 8); + return s; +} + +void +channel_send(RDPCLIENT * This, STREAM s, VCHANNEL * channel) +{ + uint32 length, flags; + uint32 thislength, remaining; + uint8 *data; + + /* first fragment sent in-place */ + s_pop_layer(s, channel_hdr); + length = s->end - s->p - sizeof(CHANNEL_PDU_HEADER); + + DEBUG_CHANNEL(("channel_send, length = %d\n", length)); + + thislength = MIN(length, CHANNEL_CHUNK_LENGTH); +/* Note: In the original clipboard implementation, this number was + 1592, not 1600. However, I don't remember the reason and 1600 seems + to work so.. This applies only to *this* length, not the length of + continuation or ending packets. */ + remaining = length - thislength; + flags = (remaining == 0) ? CHANNEL_FLAG_FIRST | CHANNEL_FLAG_LAST : CHANNEL_FLAG_FIRST; + if (channel->flags & CHANNEL_OPTION_SHOW_PROTOCOL) + flags |= CHANNEL_FLAG_SHOW_PROTOCOL; + + out_uint32_le(s, length); + out_uint32_le(s, flags); + data = s->end = s->p + thislength; + DEBUG_CHANNEL(("Sending %d bytes with FLAG_FIRST\n", thislength)); + sec_send_to_channel(This, s, This->encryption ? SEC_ENCRYPT : 0, channel->mcs_id); + + /* subsequent segments copied (otherwise would have to generate headers backwards) */ + while (remaining > 0) + { + thislength = MIN(remaining, CHANNEL_CHUNK_LENGTH); + remaining -= thislength; + flags = (remaining == 0) ? CHANNEL_FLAG_LAST : 0; + if (channel->flags & CHANNEL_OPTION_SHOW_PROTOCOL) + flags |= CHANNEL_FLAG_SHOW_PROTOCOL; + + DEBUG_CHANNEL(("Sending %d bytes with flags %d\n", thislength, flags)); + + s = sec_init(This, This->encryption ? SEC_ENCRYPT : 0, thislength + 8); + out_uint32_le(s, length); + out_uint32_le(s, flags); + out_uint8p(s, data, thislength); + s_mark_end(s); + sec_send_to_channel(This, s, This->encryption ? SEC_ENCRYPT : 0, channel->mcs_id); + + data += thislength; + } +} + +void +channel_process(RDPCLIENT * This, STREAM s, uint16 mcs_channel) +{ + uint32 length, flags; + uint32 thislength; + VCHANNEL *channel = NULL; + unsigned int i; + STREAM in; + + for (i = 0; i < This->num_channels; i++) + { + channel = &This->channels[i]; + if (channel->mcs_id == mcs_channel) + break; + } + + if (i >= This->num_channels) + return; + + in_uint32_le(s, length); + in_uint32_le(s, flags); + if ((flags & CHANNEL_FLAG_FIRST) && (flags & CHANNEL_FLAG_LAST)) + { + /* single fragment - pass straight up */ + channel->process(This, s); + } + else + { + /* add fragment to defragmentation buffer */ + in = &channel->in; + if (flags & CHANNEL_FLAG_FIRST) + { + if (length > in->size) + { + in->data = (uint8 *) xrealloc(in->data, length); + in->size = length; + } + in->p = in->data; + } + + thislength = MIN(s->end - s->p, in->data + in->size - in->p); + memcpy(in->p, s->p, thislength); + in->p += thislength; + + if (flags & CHANNEL_FLAG_LAST) + { + in->end = in->p; + in->p = in->data; + channel->process(This, in); + } + } +} diff --git a/rosapps/applications/net/tsclient/rdesktop/cliprdr.c b/rosapps/applications/net/tsclient/rdesktop/cliprdr.c new file mode 100644 index 00000000000..01ef9055b14 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/cliprdr.c @@ -0,0 +1,182 @@ +/* -*- c-basic-offset: 8 -*- + rdesktop: A Remote Desktop Protocol client. + Protocol services - Clipboard functions + Copyright (C) Erik Forsberg 2003 + Copyright (C) Matthew Chapman 2003 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "rdesktop.h" + +#define CLIPRDR_CONNECT 1 +#define CLIPRDR_FORMAT_ANNOUNCE 2 +#define CLIPRDR_FORMAT_ACK 3 +#define CLIPRDR_DATA_REQUEST 4 +#define CLIPRDR_DATA_RESPONSE 5 + +#define CLIPRDR_REQUEST 0 +#define CLIPRDR_RESPONSE 1 +#define CLIPRDR_ERROR 2 + +static void +cliprdr_send_packet(RDPCLIENT * This, uint16 type, uint16 status, uint8 * data, uint32 length) +{ + STREAM s; + + DEBUG_CLIPBOARD(("CLIPRDR send: type=%d, status=%d, length=%d\n", type, status, length)); + + s = channel_init(This, This->cliprdr.channel, length + 12); + out_uint16_le(s, type); + out_uint16_le(s, status); + out_uint32_le(s, length); + out_uint8p(s, data, length); + out_uint32(s, 0); /* pad? */ + s_mark_end(s); + channel_send(This, s, This->cliprdr.channel); +} + +/* Helper which announces our readiness to supply clipboard data + in a single format (such as CF_TEXT) to the RDP side. + To announce more than one format at a time, use + cliprdr_send_native_format_announce. + */ +void +cliprdr_send_simple_native_format_announce(RDPCLIENT * This, uint32 format) +{ + uint8 buffer[36]; + + DEBUG_CLIPBOARD(("cliprdr_send_simple_native_format_announce\n")); + + buf_out_uint32(buffer, format); + memset(buffer + 4, 0, sizeof(buffer) - 4); /* description */ + cliprdr_send_native_format_announce(This, buffer, sizeof(buffer)); +} + +/* Announces our readiness to supply clipboard data in multiple + formats, each denoted by a 36-byte format descriptor of + [ uint32 format + 32-byte description ]. + */ +void +cliprdr_send_native_format_announce(RDPCLIENT * This, uint8 * formats_data, uint32 formats_data_length) +{ + DEBUG_CLIPBOARD(("cliprdr_send_native_format_announce\n")); + + cliprdr_send_packet(This, CLIPRDR_FORMAT_ANNOUNCE, CLIPRDR_REQUEST, formats_data, + formats_data_length); + + if (formats_data != This->cliprdr.last_formats) + { + if (This->cliprdr.last_formats) + xfree(This->cliprdr.last_formats); + + This->cliprdr.last_formats = xmalloc(formats_data_length); + memcpy(This->cliprdr.last_formats, formats_data, formats_data_length); + This->cliprdr.last_formats_length = formats_data_length; + } +} + +void +cliprdr_send_data_request(RDPCLIENT * This, uint32 format) +{ + uint8 buffer[4]; + + DEBUG_CLIPBOARD(("cliprdr_send_data_request\n")); + buf_out_uint32(buffer, format); + cliprdr_send_packet(This, CLIPRDR_DATA_REQUEST, CLIPRDR_REQUEST, buffer, sizeof(buffer)); +} + +void +cliprdr_send_data(RDPCLIENT * This, uint8 * data, uint32 length) +{ + DEBUG_CLIPBOARD(("cliprdr_send_data\n")); + cliprdr_send_packet(This, CLIPRDR_DATA_RESPONSE, CLIPRDR_RESPONSE, data, length); +} + +static void +cliprdr_process(RDPCLIENT * This, STREAM s) +{ + uint16 type, status; + uint32 length, format; + uint8 *data; + + in_uint16_le(s, type); + in_uint16_le(s, status); + in_uint32_le(s, length); + data = s->p; + + DEBUG_CLIPBOARD(("CLIPRDR recv: type=%d, status=%d, length=%d\n", type, status, length)); + + if (status == CLIPRDR_ERROR) + { + switch (type) + { + case CLIPRDR_FORMAT_ACK: + /* FIXME: We seem to get this when we send an announce while the server is + still processing a paste. Try sending another announce. */ + cliprdr_send_native_format_announce(This, This->cliprdr.last_formats, + This->cliprdr.last_formats_length); + break; + case CLIPRDR_DATA_RESPONSE: + ui_clip_request_failed(This); + break; + default: + DEBUG_CLIPBOARD(("CLIPRDR error (type=%d)\n", type)); + } + + return; + } + + switch (type) + { + case CLIPRDR_CONNECT: + ui_clip_sync(This); + break; + case CLIPRDR_FORMAT_ANNOUNCE: + ui_clip_format_announce(This, data, length); + cliprdr_send_packet(This, CLIPRDR_FORMAT_ACK, CLIPRDR_RESPONSE, NULL, 0); + return; + case CLIPRDR_FORMAT_ACK: + break; + case CLIPRDR_DATA_REQUEST: + in_uint32_le(s, format); + ui_clip_request_data(This, format); + break; + case CLIPRDR_DATA_RESPONSE: + ui_clip_handle_data(This, data, length); + break; + case 7: /* TODO: W2K3 SP1 sends this on connect with a value of 1 */ + break; + default: + unimpl("CLIPRDR packet type %d\n", type); + } +} + +void +cliprdr_set_mode(RDPCLIENT * This, const char *optarg) +{ + ui_clip_set_mode(This, optarg); +} + +BOOL +cliprdr_init(RDPCLIENT * This) +{ + This->cliprdr.channel = + channel_register(This, "cliprdr", + CHANNEL_OPTION_INITIALIZED | CHANNEL_OPTION_ENCRYPT_RDP | + CHANNEL_OPTION_COMPRESS_RDP | CHANNEL_OPTION_SHOW_PROTOCOL, + cliprdr_process); + return (This->cliprdr.channel != NULL); +} diff --git a/rosapps/applications/net/tsclient/rdesktop/config.guess b/rosapps/applications/net/tsclient/rdesktop/config.guess new file mode 100644 index 00000000000..2fc3acce2ea --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/config.guess @@ -0,0 +1,1411 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-06-17' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +## for Red Hat Linux +if test -f /etc/redhat-release ; then + VENDOR=redhat ; +else + VENDOR= ; +fi + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha*:OpenVMS:*:*) + echo alpha-hp-vms + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR:-ibm}-linux-gnu + exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR:-pc}-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/rosapps/applications/net/tsclient/rdesktop/config.sub b/rosapps/applications/net/tsclient/rdesktop/config.sub new file mode 100644 index 00000000000..7cee3d6ec7f --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/config.sub @@ -0,0 +1,1500 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-06-18' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | s390 | s390x \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | s390-* | s390x-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/rosapps/applications/net/tsclient/rdesktop/configure.ac b/rosapps/applications/net/tsclient/rdesktop/configure.ac new file mode 100644 index 00000000000..34a4e79c211 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/configure.ac @@ -0,0 +1,727 @@ +AC_INIT(rdesktop, 1.4.1) + +AC_CONFIG_SRCDIR([rdesktop.c]) + +AC_PROG_CC +if test "$GCC" = yes; then + CFLAGS="$CFLAGS -Wall" +fi + +AC_PROG_INSTALL +AC_LANG_C +AC_HEADER_STDC +AC_C_BIGENDIAN([AC_DEFINE(B_ENDIAN)], [AC_DEFINE(L_ENDIAN)]) +AC_PATH_XTRA + +AC_SEARCH_LIBS(socket, socket) +AC_SEARCH_LIBS(inet_aton, resolv) + +AC_CHECK_HEADER(sys/select.h, AC_DEFINE(HAVE_SYS_SELECT_H)) +AC_CHECK_HEADER(sys/modem.h, AC_DEFINE(HAVE_SYS_MODEM_H)) +AC_CHECK_HEADER(sys/filio.h, AC_DEFINE(HAVE_SYS_FILIO_H)) +AC_CHECK_HEADER(sys/strtio.h, AC_DEFINE(HAVE_SYS_STRTIO_H)) +AC_CHECK_HEADER(locale.h, AC_DEFINE(HAVE_LOCALE_H)) +AC_CHECK_HEADER(langinfo.h, AC_DEFINE(HAVE_LANGINFO_H)) + +AC_CHECK_TOOL(STRIP, strip, :) + +rpath="" + +# +# OpenSSL detection borrowed from stunnel +# +checkssldir() { : + if test -f "$1/include/openssl/ssl.h"; then + ssldir="$1" + return 0 + fi + return 1 +} +AC_MSG_CHECKING([for OpenSSL directory]) +AC_ARG_WITH(openssl, + [ --with-openssl=DIR look for OpenSSL at DIR/include, DIR/lib], + [ + dnl Check the specified location only + checkssldir "$withval" + ], + [ + dnl Search default locations of OpenSSL library + for maindir in /usr/local /usr/lib /usr/pkg /usr /var/ssl /opt; do + for dir in $maindir $maindir/openssl $maindir/ssl; do + checkssldir $dir && break 2 + done + done + ] +) +if test -z "$ssldir"; then + AC_MSG_RESULT([Not found]) + echo + echo "Couldn't find your OpenSSL library installation dir" + echo "Use --with-openssl option to fix this problem" + echo + exit 1 +fi +AC_MSG_RESULT([$ssldir]) +AC_SUBST(ssldir) +AC_DEFINE_UNQUOTED(ssldir, "$ssldir") + +dnl Add OpenSSL includes and libraries +CFLAGS="$CFLAGS -I$ssldir/include" +AC_ARG_ENABLE(static-openssl, + [ --enable-static-openssl link OpenSSL statically], + [ +LIBS="$LIBS $ssldir/lib/libcrypto.a" + ], + [ +LIBS="$LIBS -L$ssldir/lib -lcrypto" +rpath="$rpath:$ssldir/lib" + ]) + + +# +# Alignment +# +AC_MSG_CHECKING([if architecture needs alignment]) +AC_TRY_RUN([ +#include +#include +int main(int argc, char **argv) +{ + unsigned char test[8] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88 }; + signal(SIGBUS, exit); + signal(SIGABRT, exit); + signal(SIGSEGV, exit); + if (*((unsigned int *)(test + 1)) != 0x55443322 && *((unsigned int *)(test + 1)) != 0x22334455) { + return 1; + } + return 0; +}], + [AC_MSG_RESULT(no)], + [AC_MSG_RESULT(yes) + AC_DEFINE(NEED_ALIGN)], + [AC_MSG_RESULT(assuming yes) + AC_DEFINE(NEED_ALIGN)]) + + +# +# EGD +# +AC_ARG_WITH(egd-socket, + [ --with-egd-socket=PATH look for Entropy Gathering Daemon socket at PATH], + [EGD_SOCKET="$withval"], + [EGD_SOCKET="/var/run/egd-pool"] +) +AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET") + + +# +# rdp2vnc +# +vncserverconfig=libvncserver-config +AC_ARG_WITH(libvncserver-config, + [ --with-libvncserver-config=CMD use CMD as libvncserver-config], + [vncserverconfig="$withval"] +) +AC_ARG_WITH(libvncserver, + [ --with-libvncserver make rdp2vnc], + [ + VNCINC=`$vncserverconfig --cflags` + AC_SUBST(VNCINC) + LDVNC=`$vncserverconfig --libs` + AC_SUBST(LDVNC) + VNCLINK=`$vncserverconfig --link` + AC_SUBST(VNCLINK) + RDP2VNCTARGET="rdp2vnc" + AC_SUBST(RDP2VNCTARGET) + ] +) + +# +# sound +# +AC_ARG_WITH(libao, + [ --with-libao=DIR look for libao at DIR/include, DIR/lib], + [ + CFLAGS="$CFLAGS -I$withval/include" + CPPFLAGS="$CPPFLAGS -I$withval/include" + LIBS="$LIBS -L$withval/lib" + rpath="$rpath:$withval/lib" + ] +) + +sound="yes" +AC_ARG_WITH(sound, + [ --with-sound select sound system ("oss", "sgi", "sun" or "libao") ], + [ + sound="$withval" + ]) +if test "$sound" = yes; then + AC_CHECK_HEADER(ao/ao.h, [sound=libao]) + AC_CHECK_HEADER(sys/soundcard.h, [sound=oss]) + AC_CHECK_HEADER(dmedia/audio.h, [sound=sgi]) + AC_CHECK_HEADER(sys/audioio.h, [sound=sun]) +fi +if test "$sound" = no; then + break +elif test "$sound" = oss; then + SOUNDOBJ="rdpsnd.o rdpsnd_oss.o" + AC_DEFINE(WITH_RDPSND) +elif test "$sound" = sgi; then + SOUNDOBJ="rdpsnd.o rdpsnd_sgi.o" + LDFLAGS="$LDFLAGS -laudio" + AC_DEFINE(WITH_RDPSND) +elif test "$sound" = sun; then + SOUNDOBJ="rdpsnd.o rdpsnd_sun.o" + AC_DEFINE(WITH_RDPSND) +elif test "$sound" = libao; then + SOUNDOBJ="rdpsnd.o rdpsnd_libao.o" + LDFLAGS="$LDFLAGS -lao" + AC_DEFINE(WITH_RDPSND) +else + AC_MSG_WARN([sound support disabled]) + AC_MSG_WARN([Currently supported systems are Open Sound System (oss), SGI AL (sgi), Sun/BSD (sun) and libao]) +fi +AC_SUBST(SOUNDOBJ) + +# +# dirfd +# +dnl Find out how to get the file descriptor associated with an open DIR*. +dnl From Jim Meyering + +AC_DEFUN([UTILS_FUNC_DIRFD], +[ + + AC_HEADER_DIRENT + dirfd_headers=' +#if HAVE_DIRENT_H +# include +#else /* not HAVE_DIRENT_H */ +# define dirent direct +# if HAVE_SYS_NDIR_H +# include +# endif /* HAVE_SYS_NDIR_H */ +# if HAVE_SYS_DIR_H +# include +# endif /* HAVE_SYS_DIR_H */ +# if HAVE_NDIR_H +# include +# endif /* HAVE_NDIR_H */ +#endif /* HAVE_DIRENT_H */ +' + AC_CHECK_FUNCS(dirfd) + AC_CHECK_DECLS([dirfd], , , $dirfd_headers) + + AC_CACHE_CHECK([whether dirfd is a macro], + jm_cv_func_dirfd_macro, + [AC_EGREP_CPP([dirent_header_defines_dirfd], [$dirfd_headers +#ifdef dirfd + dirent_header_defines_dirfd +#endif], + jm_cv_func_dirfd_macro=yes, + jm_cv_func_dirfd_macro=no)]) + + # Use the replacement only if we have no function, macro, + # or declaration with that name. + if test $ac_cv_func_dirfd,$ac_cv_have_decl_dirfd,$jm_cv_func_dirfd_macro \ + = no,no,no; then + AC_REPLACE_FUNCS([dirfd]) + AC_CACHE_CHECK( + [how to get the file descriptor associated with an open DIR*], + gl_cv_sys_dir_fd_member_name, + [ + dirfd_save_CFLAGS=$CFLAGS + for ac_expr in d_fd dd_fd; do + + CFLAGS="$CFLAGS -DDIR_FD_MEMBER_NAME=$ac_expr" + AC_TRY_COMPILE( + [$dirfd_headers + ], + [DIR *dir_p = opendir("."); (void) dir_p->DIR_FD_MEMBER_NAME;], + dir_fd_found=yes + ) + CFLAGS=$dirfd_save_CFLAGS + test "$dir_fd_found" = yes && break + done + test "$dir_fd_found" = yes || ac_expr=no_such_member + + gl_cv_sys_dir_fd_member_name=$ac_expr + ] + ) + if test $gl_cv_sys_dir_fd_member_name != no_such_member; then + AC_DEFINE_UNQUOTED(DIR_FD_MEMBER_NAME, + $gl_cv_sys_dir_fd_member_name, + [the name of the file descriptor member of DIR]) + fi + AH_VERBATIM(DIR_TO_FD, + [#ifdef DIR_FD_MEMBER_NAME +# define DIR_TO_FD(Dir_p) ((Dir_p)->DIR_FD_MEMBER_NAME) +#else +# define DIR_TO_FD(Dir_p) -1 +#endif +] + ) + fi +]) + +UTILS_FUNC_DIRFD + +# +# iconv +# + +dnl This macros shamelessly stolen from +dnl http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg01398.html. +dnl Written by Bruno Haible. + +AC_DEFUN([UTILS_FUNC_ICONV], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + AC_ARG_WITH([libiconv-prefix], +[ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [ + for dir in `echo "$withval" | tr : ' '`; do + if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi + if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi + done + ]) + AC_CHECK_HEADER(iconv.h, AC_DEFINE(HAVE_ICONV_H)) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi + LIBICONV= + if test "$am_cv_lib_iconv" = yes; then + LIBICONV="-liconv" + fi + AC_SUBST(LIBICONV) +]) + +UTILS_FUNC_ICONV +LIBS="$LIBS $LIBICONV" + +# +# socklen_t +# from curl + +dnl Check for socklen_t: historically on BSD it is an int, and in +dnl POSIX 1g it is a type of its own, but some platforms use different +dnl types for the argument to getsockopt, getpeername, etc. So we +dnl have to test to find something that will work. +AC_DEFUN([TYPE_SOCKLEN_T], +[ + AC_CHECK_TYPE([socklen_t], ,[ + AC_MSG_CHECKING([for socklen_t equivalent]) + AC_CACHE_VAL([socklen_t_equiv], + [ + # Systems have either "struct sockaddr *" or + # "void *" as the second argument to getpeername + socklen_t_equiv= + for arg2 in "struct sockaddr" void; do + for t in int size_t unsigned long "unsigned long"; do + AC_TRY_COMPILE([ + #include + #include + + int getpeername (int, $arg2 *, $t *); + ],[ + $t len; + getpeername(0,0,&len); + ],[ + socklen_t_equiv="$t" + break + ]) + done + done + + if test "x$socklen_t_equiv" = x; then + AC_MSG_ERROR([Cannot find a type to use in place of socklen_t]) + fi + ]) + AC_MSG_RESULT($socklen_t_equiv) + AC_DEFINE_UNQUOTED(socklen_t, $socklen_t_equiv, + [type to use in place of socklen_t if not defined])], + [#include +#include ]) +]) + +TYPE_SOCKLEN_T + +# +# statfs stuff +# +AC_CHECK_HEADERS(sys/vfs.h) +AC_CHECK_HEADERS(sys/statvfs.h) +AC_CHECK_HEADERS(sys/statfs.h) +AC_CHECK_HEADERS(sys/param.h) + +mount_includes="\ + $ac_includes_default + #if HAVE_SYS_PARAM_H + # include + #endif + " + +AC_CHECK_HEADERS(sys/mount.h,,,[$mount_includes]) + +################################################# +# these tests are taken from the GNU fileutils package +AC_CHECKING(how to get filesystem space usage) +space=no + +# Test for statvfs64. +if test $space = no; then + # SVR4 + AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64, + [AC_TRY_RUN([ +#if defined(HAVE_UNISTD_H) +#include +#endif +#include +#include + main () + { + struct statvfs64 fsd; + exit (statvfs64 (".", &fsd)); + }], + fu_cv_sys_stat_statvfs64=yes, + fu_cv_sys_stat_statvfs64=no, + fu_cv_sys_stat_statvfs64=cross)]) + if test $fu_cv_sys_stat_statvfs64 = yes; then + space=yes + AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available]) + fi +fi + +# Perform only the link test since it seems there are no variants of the +# statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs) +# because that got a false positive on SCO OSR5. Adding the declaration +# of a `struct statvfs' causes this test to fail (as it should) on such +# systems. That system is reported to work fine with STAT_STATFS4 which +# is what it gets when this test fails. +if test $space = no; then + # SVR4 + AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs, + [AC_TRY_LINK([#include +#include ], + [struct statvfs fsd; statvfs (0, &fsd);], + fu_cv_sys_stat_statvfs=yes, + fu_cv_sys_stat_statvfs=no)]) + if test $fu_cv_sys_stat_statvfs = yes; then + space=yes + AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available]) + fi +fi + +if test $space = no; then + # DEC Alpha running OSF/1 + AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)]) + AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1, + [AC_TRY_RUN([ +#include +#include +#include + main () + { + struct statfs fsd; + fsd.f_fsize = 0; + exit (statfs (".", &fsd, sizeof (struct statfs))); + }], + fu_cv_sys_stat_statfs3_osf1=yes, + fu_cv_sys_stat_statfs3_osf1=no, + fu_cv_sys_stat_statfs3_osf1=no)]) + + +#C_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1) + if test $fu_cv_sys_stat_statfs3_osf1 = yes; then + space=yes + AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments]) + fi +fi + +if test $space = no; then +# AIX + AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl +member (AIX, 4.3BSD)]) + AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize, + [AC_TRY_RUN([ +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif +#ifdef HAVE_SYS_VFS_H +#include +#endif + main () + { + struct statfs fsd; + fsd.f_bsize = 0; + exit (statfs (".", &fsd)); + }], + fu_cv_sys_stat_statfs2_bsize=yes, + fu_cv_sys_stat_statfs2_bsize=no, + fu_cv_sys_stat_statfs2_bsize=no)]) + AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize) + if test $fu_cv_sys_stat_statfs2_bsize = yes; then + space=yes + AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property]) + fi +fi + +if test $space = no; then +# SVR3 + AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)]) + AC_CACHE_VAL(fu_cv_sys_stat_statfs4, + [AC_TRY_RUN([#include +#include + main () + { + struct statfs fsd; + exit (statfs (".", &fsd, sizeof fsd, 0)); + }], + fu_cv_sys_stat_statfs4=yes, + fu_cv_sys_stat_statfs4=no, + fu_cv_sys_stat_statfs4=no)]) + AC_MSG_RESULT($fu_cv_sys_stat_statfs4) + if test $fu_cv_sys_stat_statfs4 = yes; then + space=yes + AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments]) + fi +fi + +if test $space = no; then +# 4.4BSD and NetBSD + AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl +member (4.4BSD and NetBSD)]) + AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize, + [AC_TRY_RUN([#include +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif + main () + { + struct statfs fsd; + fsd.f_fsize = 0; + exit (statfs (".", &fsd)); + }], + fu_cv_sys_stat_statfs2_fsize=yes, + fu_cv_sys_stat_statfs2_fsize=no, + fu_cv_sys_stat_statfs2_fsize=no)]) + AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize) + if test $fu_cv_sys_stat_statfs2_fsize = yes; then + space=yes + AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize]) + fi +fi + +if test $space = no; then + # Ultrix + AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)]) + AC_CACHE_VAL(fu_cv_sys_stat_fs_data, + [AC_TRY_RUN([#include +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif +#ifdef HAVE_SYS_FS_TYPES_H +#include +#endif + main () + { + struct fs_data fsd; + /* Ultrix's statfs returns 1 for success, + 0 for not mounted, -1 for failure. */ + exit (statfs (".", &fsd) != 1); + }], + fu_cv_sys_stat_fs_data=yes, + fu_cv_sys_stat_fs_data=no, + fu_cv_sys_stat_fs_data=no)]) + AC_MSG_RESULT($fu_cv_sys_stat_fs_data) + if test $fu_cv_sys_stat_fs_data = yes; then + space=yes + AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available]) + fi +fi + + statxfs_includes="\ +$ac_includes_default +#if HAVE_SYS_STATVFS_H +# include +#endif +#if HAVE_SYS_VFS_H +# include +#endif +#if !HAVE_SYS_STATVFS_H && !HAVE_SYS_VFS_H +# if HAVE_SYS_MOUNT_H && HAVE_SYS_PARAM_H +/* NetBSD 1.5.2 needs these, for the declaration of struct statfs. */ +# include +# include +# elif HAVE_NETINET_IN_H && HAVE_NFS_NFS_CLNT_H && HAVE_NFS_VFS_H +/* Ultrix 4.4 needs these for the declaration of struct statfs. */ +# include +# include +# include +# endif +#endif +" + +AC_CHECK_MEMBERS([struct statfs.f_namemax],,,[$statxfs_includes]) +AC_CHECK_MEMBERS([struct statvfs.f_namemax],,,[$statxfs_includes]) +AC_CHECK_MEMBERS([struct statfs.f_namelen],,,[$statxfs_includes]) +AC_CHECK_MEMBERS([struct statvfs.f_namelen],,,[$statxfs_includes]) + +# +# Large file support +# +AC_SYS_LARGEFILE + +# +# mntent +# +AC_CHECK_HEADER(mntent.h, AC_DEFINE(HAVE_MNTENT_H)) +AC_CHECK_FUNCS(setmntent) + +# +# IPv6 +# +AC_ARG_WITH(ipv6, + [ --with-ipv6 enable IPv6-support], + [ + if test $withval != "no"; + then + AC_DEFINE(IPv6,1) + fi + ]) + + +# +# debugging +# +AC_ARG_WITH(debug, + [ --with-debug enable protocol debugging output], + [ + if test $withval != "no"; + then + AC_DEFINE(WITH_DEBUG,1) + fi + ]) + +AC_ARG_WITH(debug-kbd, + [ --with-debug-kbd enable debugging of keyboard handling], + [ + if test $withval != "no"; + then + AC_DEFINE(WITH_DEBUG_KBD,1) + fi + ]) + +AC_ARG_WITH(debug-rdp5, + [ --with-debug-rdp5 enable debugging of RDP5 code], + [ + if test $withval != "no"; + then + AC_DEFINE(WITH_DEBUG_RDP5,1) + fi + ]) + +AC_ARG_WITH(debug-clipboard, + [ --with-debug-clipboard enable debugging of clipboard code], + [ + if test $withval != "no"; + then + AC_DEFINE(WITH_DEBUG_CLIPBOARD,1) + fi + ]) + +AC_ARG_WITH(debug-channel, + [ --with-debug-channel enable debugging of virtual channel code], + [ + if test $withval != "no"; + then + AC_DEFINE(WITH_DEBUG_CHANNEL,1) + fi + ]) + + +# +# target-specific stuff +# +# strip leading colon from rpath +rpath=`echo $rpath |sed 's/^://'` +AC_CANONICAL_HOST +case "$host" in +*-*-solaris*) + LDFLAGS="$LDFLAGS -R$rpath" + ;; +*-dec-osf*) + LDFLAGS="$LDFLAGS -Wl,-rpath,$rpath" + ;; +*-*-hpux*) + CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED" + ;; +*-*-irix6.5*) + LIBS="$LIBS -L$ssldir/lib32 -lcrypto" + CFLAGS="$CFLAGS -D__SGI_IRIX__" + ;; +esac + + +AC_OUTPUT(Makefile) + +dnl Local Variables: +dnl comment-start: "dnl " +dnl comment-end: "" +dnl comment-start-skip: "\\bdnl\\b\\s *" +dnl compile-command: "autoconf" +dnl End: diff --git a/rosapps/applications/net/tsclient/rdesktop/constants.h b/rosapps/applications/net/tsclient/rdesktop/constants.h new file mode 100644 index 00000000000..fe940cca3c1 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/constants.h @@ -0,0 +1,430 @@ +/* + rdesktop: A Remote Desktop Protocol client. + Miscellaneous protocol constants + Copyright (C) Matthew Chapman 1999-2005 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +/* TCP port for Remote Desktop Protocol */ +#define TCP_PORT_RDP 3389 + +#define DEFAULT_CODEPAGE "UTF-8" +#define WINDOWS_CODEPAGE "UTF-16LE" + +/* ISO PDU codes */ +enum ISO_PDU_CODE +{ + ISO_PDU_CR = 0xE0, /* Connection Request */ + ISO_PDU_CC = 0xD0, /* Connection Confirm */ + ISO_PDU_DR = 0x80, /* Disconnect Request */ + ISO_PDU_DT = 0xF0, /* Data */ + ISO_PDU_ER = 0x70 /* Error */ +}; + +/* MCS PDU codes */ +enum MCS_PDU_TYPE +{ + MCS_EDRQ = 1, /* Erect Domain Request */ + MCS_DPUM = 8, /* Disconnect Provider Ultimatum */ + MCS_AURQ = 10, /* Attach User Request */ + MCS_AUCF = 11, /* Attach User Confirm */ + MCS_CJRQ = 14, /* Channel Join Request */ + MCS_CJCF = 15, /* Channel Join Confirm */ + MCS_SDRQ = 25, /* Send Data Request */ + MCS_SDIN = 26 /* Send Data Indication */ +}; + +#define MCS_CONNECT_INITIAL 0x7f65 +#define MCS_CONNECT_RESPONSE 0x7f66 + +#define BER_TAG_BOOLEAN 1 +#define BER_TAG_INTEGER 2 +#define BER_TAG_OCTET_STRING 4 +#define BER_TAG_RESULT 10 +#define MCS_TAG_DOMAIN_PARAMS 0x30 + +#define MCS_GLOBAL_CHANNEL 1003 +#define MCS_USERCHANNEL_BASE 1001 + +/* RDP secure transport constants */ +#define SEC_RANDOM_SIZE 32 +#define SEC_MODULUS_SIZE 64 +#define SEC_MAX_MODULUS_SIZE 256 +#define SEC_PADDING_SIZE 8 +#define SEC_EXPONENT_SIZE 4 + +#define SEC_CLIENT_RANDOM 0x0001 +#define SEC_ENCRYPT 0x0008 +#define SEC_LOGON_INFO 0x0040 +#define SEC_LICENCE_NEG 0x0080 +#define SEC_REDIRECT_ENCRYPT 0x0C00 + +#define SEC_TAG_SRV_INFO 0x0c01 +#define SEC_TAG_SRV_CRYPT 0x0c02 +#define SEC_TAG_SRV_CHANNELS 0x0c03 + +#define SEC_TAG_CLI_INFO 0xc001 +#define SEC_TAG_CLI_CRYPT 0xc002 +#define SEC_TAG_CLI_CHANNELS 0xc003 +#define SEC_TAG_CLI_4 0xc004 + +#define SEC_TAG_PUBKEY 0x0006 +#define SEC_TAG_KEYSIG 0x0008 + +#define SEC_RSA_MAGIC 0x31415352 /* RSA1 */ + +/* RDP licensing constants */ +#define LICENCE_TOKEN_SIZE 10 +#define LICENCE_HWID_SIZE 20 +#define LICENCE_SIGNATURE_SIZE 16 + +#define LICENCE_TAG_DEMAND 0x01 +#define LICENCE_TAG_AUTHREQ 0x02 +#define LICENCE_TAG_ISSUE 0x03 +#define LICENCE_TAG_REISSUE 0x04 +#define LICENCE_TAG_PRESENT 0x12 +#define LICENCE_TAG_REQUEST 0x13 +#define LICENCE_TAG_AUTHRESP 0x15 +#define LICENCE_TAG_RESULT 0xff + +#define LICENCE_TAG_USER 0x000f +#define LICENCE_TAG_HOST 0x0010 + +/* RDP PDU codes */ +enum RDP_PDU_TYPE +{ + RDP_PDU_DEMAND_ACTIVE = 1, + RDP_PDU_CONFIRM_ACTIVE = 3, + RDP_PDU_REDIRECT = 4, /* MS Server 2003 Session Redirect */ + RDP_PDU_DEACTIVATE = 6, + RDP_PDU_DATA = 7 +}; + +enum RDP_DATA_PDU_TYPE +{ + RDP_DATA_PDU_UPDATE = 2, + RDP_DATA_PDU_CONTROL = 20, + RDP_DATA_PDU_POINTER = 27, + RDP_DATA_PDU_INPUT = 28, + RDP_DATA_PDU_SYNCHRONISE = 31, + RDP_DATA_PDU_BELL = 34, + RDP_DATA_PDU_CLIENT_WINDOW_STATUS = 35, + RDP_DATA_PDU_LOGON = 38, + RDP_DATA_PDU_FONT2 = 39, + RDP_DATA_PDU_KEYBOARD_INDICATORS = 41, + RDP_DATA_PDU_DISCONNECT = 47 +}; + +enum RDP_CONTROL_PDU_TYPE +{ + RDP_CTL_REQUEST_CONTROL = 1, + RDP_CTL_GRANT_CONTROL = 2, + RDP_CTL_DETACH = 3, + RDP_CTL_COOPERATE = 4 +}; + +enum RDP_UPDATE_PDU_TYPE +{ + RDP_UPDATE_ORDERS = 0, + RDP_UPDATE_BITMAP = 1, + RDP_UPDATE_PALETTE = 2, + RDP_UPDATE_SYNCHRONIZE = 3 +}; + +enum RDP_POINTER_PDU_TYPE +{ + RDP_POINTER_SYSTEM = 1, + RDP_POINTER_MOVE = 3, + RDP_POINTER_COLOR = 6, + RDP_POINTER_CACHED = 7 +}; + +enum RDP_SYSTEM_POINTER_TYPE +{ + RDP_NULL_POINTER = 0, + RDP_DEFAULT_POINTER = 0x7F00 +}; + +enum RDP_INPUT_DEVICE +{ + RDP_INPUT_SYNCHRONIZE = 0, + RDP_INPUT_CODEPOINT = 1, + RDP_INPUT_VIRTKEY = 2, + RDP_INPUT_SCANCODE = 4, + RDP_INPUT_MOUSE = 0x8001 +}; + +/* Device flags */ +#define KBD_FLAG_RIGHT 0x0001 +#define KBD_FLAG_EXT 0x0100 +#define KBD_FLAG_QUIET 0x1000 +#define KBD_FLAG_DOWN 0x4000 +#define KBD_FLAG_UP 0x8000 + +/* These are for synchronization; not for keystrokes */ +#define KBD_FLAG_SCROLL 0x0001 +#define KBD_FLAG_NUMLOCK 0x0002 +#define KBD_FLAG_CAPITAL 0x0004 + +/* See T.128 */ +#define RDP_KEYPRESS 0 +#define RDP_KEYRELEASE (KBD_FLAG_DOWN | KBD_FLAG_UP) + +#define MOUSE_FLAG_MOVE 0x0800 +#define MOUSE_FLAG_BUTTON1 0x1000 +#define MOUSE_FLAG_BUTTON2 0x2000 +#define MOUSE_FLAG_BUTTON3 0x4000 +#define MOUSE_FLAG_BUTTON4 0x0280 +#define MOUSE_FLAG_BUTTON5 0x0380 +#define MOUSE_FLAG_DOWN 0x8000 + +/* Raster operation masks */ +#define ROP2_S(rop3) (rop3 & 0xf) +#define ROP2_P(rop3) ((rop3 & 0x3) | ((rop3 & 0x30) >> 2)) + +#define ROP2_COPY 0xc +#define ROP2_XOR 0x6 +#define ROP2_AND 0x8 +#define ROP2_NXOR 0x9 +#define ROP2_OR 0xe + +#define MIX_TRANSPARENT 0 +#define MIX_OPAQUE 1 + +#define TEXT2_VERTICAL 0x04 +#define TEXT2_IMPLICIT_X 0x20 + +#define ALTERNATE 1 +#define WINDING 2 + +/* RDP bitmap cache (version 2) constants */ +#define BMPCACHE2_C0_CELLS 0x78 +#define BMPCACHE2_C1_CELLS 0x78 +#define BMPCACHE2_C2_CELLS 0x150 +#define BMPCACHE2_NUM_PSTCELLS 0x9f6 + +#define PDU_FLAG_FIRST 0x01 +#define PDU_FLAG_LAST 0x02 + +/* RDP capabilities */ +#define RDP_CAPSET_GENERAL 1 /* Maps to generalCapabilitySet in T.128 page 138 */ +#define RDP_CAPLEN_GENERAL 0x18 +#define OS_MAJOR_TYPE_UNIX 4 +#define OS_MINOR_TYPE_XSERVER 7 + +#define RDP_CAPSET_BITMAP 2 +#define RDP_CAPLEN_BITMAP 0x1C + +#define RDP_CAPSET_ORDER 3 +#define RDP_CAPLEN_ORDER 0x58 +#define ORDER_CAP_NEGOTIATE 2 +#define ORDER_CAP_NOSUPPORT 4 + +#define RDP_CAPSET_BMPCACHE 4 +#define RDP_CAPLEN_BMPCACHE 0x28 + +#define RDP_CAPSET_CONTROL 5 +#define RDP_CAPLEN_CONTROL 0x0C + +#define RDP_CAPSET_ACTIVATE 7 +#define RDP_CAPLEN_ACTIVATE 0x0C + +#define RDP_CAPSET_POINTER 8 +#define RDP_CAPLEN_POINTER 0x08 + +#define RDP_CAPSET_SHARE 9 +#define RDP_CAPLEN_SHARE 0x08 + +#define RDP_CAPSET_COLCACHE 10 +#define RDP_CAPLEN_COLCACHE 0x08 + +#define RDP_CAPSET_BMPCACHE2 19 +#define RDP_CAPLEN_BMPCACHE2 0x28 +#define BMPCACHE2_FLAG_PERSIST ((uint32)1<<31) + +#define RDP_SOURCE "MSTSC" + +/* Logon flags */ +#define RDP_LOGON_AUTO 0x0008 +#define RDP_LOGON_NORMAL 0x0033 +#define RDP_LOGON_COMPRESSION 0x0080 /* mppc compression with 8kB histroy buffer */ +#define RDP_LOGON_BLOB 0x0100 +#define RDP_LOGON_COMPRESSION2 0x0200 /* rdp5 mppc compression with 64kB history buffer */ +#define RDP_LOGON_LEAVE_AUDIO 0x2000 + +#define RDP5_DISABLE_NOTHING 0x00 +#define RDP5_NO_WALLPAPER 0x01 +#define RDP5_NO_FULLWINDOWDRAG 0x02 +#define RDP5_NO_MENUANIMATIONS 0x04 +#define RDP5_NO_THEMING 0x08 +#define RDP5_NO_CURSOR_SHADOW 0x20 +#define RDP5_NO_CURSORSETTINGS 0x40 /* disables cursor blinking */ + +/* compression types */ +#define RDP_MPPC_BIG 0x01 +#define RDP_MPPC_COMPRESSED 0x20 +#define RDP_MPPC_RESET 0x40 +#define RDP_MPPC_FLUSH 0x80 +#define RDP_MPPC_DICT_SIZE 65536 + +#define RDP5_COMPRESSED 0x80 + +/* Keymap flags */ +#define MapRightShiftMask (1<<0) +#define MapLeftShiftMask (1<<1) +#define MapShiftMask (MapRightShiftMask | MapLeftShiftMask) + +#define MapRightAltMask (1<<2) +#define MapLeftAltMask (1<<3) +#define MapAltGrMask MapRightAltMask + +#define MapRightCtrlMask (1<<4) +#define MapLeftCtrlMask (1<<5) +#define MapCtrlMask (MapRightCtrlMask | MapLeftCtrlMask) + +#define MapRightWinMask (1<<6) +#define MapLeftWinMask (1<<7) +#define MapWinMask (MapRightWinMask | MapLeftWinMask) + +#define MapNumLockMask (1<<8) +#define MapCapsLockMask (1<<9) + +#define MapLocalStateMask (1<<10) + +#define MapInhibitMask (1<<11) + +#define MASK_ADD_BITS(var, mask) (var |= mask) +#define MASK_REMOVE_BITS(var, mask) (var &= ~mask) +#define MASK_HAS_BITS(var, mask) ((var & mask)>0) +#define MASK_CHANGE_BIT(var, mask, active) (var = ((var & ~mask) | (active ? mask : 0))) + +/* Clipboard constants, "borrowed" from GCC system headers in + the w32 cross compiler */ + +#if 0 +#define CF_TEXT 1 +#define CF_BITMAP 2 +#define CF_METAFILEPICT 3 +#define CF_SYLK 4 +#define CF_DIF 5 +#define CF_TIFF 6 +#define CF_OEMTEXT 7 +#define CF_DIB 8 +#define CF_PALETTE 9 +#define CF_PENDATA 10 +#define CF_RIFF 11 +#define CF_WAVE 12 +#define CF_UNICODETEXT 13 +#define CF_ENHMETAFILE 14 +#define CF_HDROP 15 +#define CF_LOCALE 16 +#define CF_MAX 17 +#define CF_OWNERDISPLAY 128 +#define CF_DSPTEXT 129 +#define CF_DSPBITMAP 130 +#define CF_DSPMETAFILEPICT 131 +#define CF_DSPENHMETAFILE 142 +#define CF_PRIVATEFIRST 512 +#define CF_PRIVATELAST 767 +#define CF_GDIOBJFIRST 768 +#define CF_GDIOBJLAST 1023 + +/* Sound format constants */ +#define WAVE_FORMAT_PCM 1 +#define WAVE_FORMAT_ADPCM 2 +#define WAVE_FORMAT_ALAW 6 +#define WAVE_FORMAT_MULAW 7 + +/* Virtual channel options */ +#define CHANNEL_OPTION_INITIALIZED 0x80000000 +#define CHANNEL_OPTION_ENCRYPT_RDP 0x40000000 +#define CHANNEL_OPTION_COMPRESS_RDP 0x00800000 +#define CHANNEL_OPTION_SHOW_PROTOCOL 0x00200000 + +/* NT status codes for RDPDR */ +#define STATUS_SUCCESS 0x00000000 +#define STATUS_NOT_IMPLEMENTED 0x00000001 +#define STATUS_PENDING 0x00000103 + +#define STATUS_NO_MORE_FILES 0x80000006 +#define STATUS_DEVICE_PAPER_EMPTY 0x8000000e +#define STATUS_DEVICE_POWERED_OFF 0x8000000f +#define STATUS_DEVICE_OFF_LINE 0x80000010 +#define STATUS_DEVICE_BUSY 0x80000011 + +#define STATUS_INVALID_HANDLE 0xc0000008 +#define STATUS_INVALID_PARAMETER 0xc000000d +#define STATUS_NO_SUCH_FILE 0xc000000f +#define STATUS_INVALID_DEVICE_REQUEST 0xc0000010 +#define STATUS_ACCESS_DENIED 0xc0000022 +#define STATUS_OBJECT_NAME_COLLISION 0xc0000035 +#define STATUS_DISK_FULL 0xc000007f +#define STATUS_FILE_IS_A_DIRECTORY 0xc00000ba +#define STATUS_NOT_SUPPORTED 0xc00000bb +#define STATUS_TIMEOUT 0xc0000102 +#define STATUS_NOTIFY_ENUM_DIR 0xc000010c +#define STATUS_CANCELLED 0xc0000120 + +/* RDPDR constants */ +#define RDPDR_MAX_DEVICES 0x10 +#define DEVICE_TYPE_SERIAL 0x01 +#define DEVICE_TYPE_PARALLEL 0x02 +#define DEVICE_TYPE_PRINTER 0x04 +#define DEVICE_TYPE_DISK 0x08 +#define DEVICE_TYPE_SCARD 0x20 + +#define FILE_DIRECTORY_FILE 0x00000001 +#define FILE_NON_DIRECTORY_FILE 0x00000040 +#define FILE_COMPLETE_IF_OPLOCKED 0x00000100 +#define FILE_DELETE_ON_CLOSE 0x00001000 +#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 + +/* RDP5 disconnect PDU */ +#define exDiscReasonNoInfo 0x0000 +#define exDiscReasonAPIInitiatedDisconnect 0x0001 +#define exDiscReasonAPIInitiatedLogoff 0x0002 +#define exDiscReasonServerIdleTimeout 0x0003 +#define exDiscReasonServerLogonTimeout 0x0004 +#define exDiscReasonReplacedByOtherConnection 0x0005 +#define exDiscReasonOutOfMemory 0x0006 +#define exDiscReasonServerDeniedConnection 0x0007 +#define exDiscReasonServerDeniedConnectionFips 0x0008 +#define exDiscReasonLicenseInternal 0x0100 +#define exDiscReasonLicenseNoLicenseServer 0x0101 +#define exDiscReasonLicenseNoLicense 0x0102 +#define exDiscReasonLicenseErrClientMsg 0x0103 +#define exDiscReasonLicenseHwidDoesntMatchLicense 0x0104 +#define exDiscReasonLicenseErrClientLicense 0x0105 +#define exDiscReasonLicenseCantFinishProtocol 0x0106 +#define exDiscReasonLicenseClientEndedProtocol 0x0107 +#define exDiscReasonLicenseErrClientEncryption 0x0108 +#define exDiscReasonLicenseCantUpgradeLicense 0x0109 +#define exDiscReasonLicenseNoRemoteConnections 0x010a +#endif + +#if 0 +/* SeamlessRDP constants */ +#define SEAMLESSRDP_NOTYETMAPPED -1 +#define SEAMLESSRDP_NORMAL 0 +#define SEAMLESSRDP_MINIMIZED 1 +#define SEAMLESSRDP_MAXIMIZED 2 +#define SEAMLESSRDP_POSITION_TIMER 200000 + +#define SEAMLESSRDP_CREATE_MODAL 0x0001 + +#define SEAMLESSRDP_HELLO_RECONNECT 0x0001 +#define SEAMLESSRDP_HELLO_HIDDEN 0x0002 +#endif diff --git a/rosapps/applications/net/tsclient/rdesktop/disk.c b/rosapps/applications/net/tsclient/rdesktop/disk.c new file mode 100644 index 00000000000..22f4114291e --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/disk.c @@ -0,0 +1,1246 @@ +/* -*- c-basic-offset: 8 -*- + rdesktop: A Remote Desktop Protocol client. + Disk Redirection + Copyright (C) Jeroen Meijer 2003 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "disk.h" + +#include +#include +#include +#include /* open, close */ +#include /* opendir, closedir, readdir */ +#include +#include /* errno */ +#include + +#include +#include /* ctime */ + +#if (defined(HAVE_DIRFD) || (HAVE_DECL_DIRFD == 1)) +#define DIRFD(a) (dirfd(a)) +#else +#define DIRFD(a) ((a)->DIR_FD_MEMBER_NAME) +#endif + +/* TODO: Fix mntent-handling for solaris + * #include */ +#if (defined(HAVE_MNTENT_H) && defined(HAVE_SETMNTENT)) +#include +#define MNTENT_PATH "/etc/mtab" +#define USE_SETMNTENT +#endif + +#ifdef HAVE_SYS_VFS_H +#include +#endif + +#ifdef HAVE_SYS_STATVFS_H +#include +#endif + +#ifdef HAVE_SYS_STATFS_H +#include +#endif + +#ifdef HAVE_SYS_PARAM_H +#include +#endif + +#ifdef HAVE_SYS_MOUNT_H +#include +#endif + +#include "rdesktop.h" + +#ifdef STAT_STATFS3_OSF1 +#define STATFS_FN(path, buf) (statfs(path,buf,sizeof(buf))) +#define STATFS_T statfs +#define USE_STATFS +#endif + +#ifdef STAT_STATVFS +#define STATFS_FN(path, buf) (statvfs(path,buf)) +#define STATFS_T statvfs +#define USE_STATVFS +#endif + +#ifdef STAT_STATVFS64 +#define STATFS_FN(path, buf) (statvfs64(path,buf)) +#define STATFS_T statvfs64 +#define USE_STATVFS +#endif + +#if (defined(STAT_STATFS2_FS_DATA) || defined(STAT_STATFS2_BSIZE) || defined(STAT_STATFS2_FSIZE)) +#define STATFS_FN(path, buf) (statfs(path,buf)) +#define STATFS_T statfs +#define USE_STATFS +#endif + +#ifdef STAT_STATFS4 +#define STATFS_FN(path, buf) (statfs(path,buf,sizeof(buf),0)) +#define STATFS_T statfs +#define USE_STATFS +#endif + +#if ((defined(USE_STATFS) && defined(HAVE_STRUCT_STATFS_F_NAMEMAX)) || (defined(USE_STATVFS) && defined(HAVE_STRUCT_STATVFS_F_NAMEMAX))) +#define F_NAMELEN(buf) ((buf).f_namemax) +#endif + +#if ((defined(USE_STATFS) && defined(HAVE_STRUCT_STATFS_F_NAMELEN)) || (defined(USE_STATVFS) && defined(HAVE_STRUCT_STATVFS_F_NAMELEN))) +#define F_NAMELEN(buf) ((buf).f_namelen) +#endif + +#ifndef F_NAMELEN +#define F_NAMELEN(buf) (255) +#endif + +/* Dummy statfs fallback */ +#ifndef STATFS_T +struct dummy_statfs_t +{ + long f_bfree; + long f_bsize; + long f_blocks; + int f_namelen; + int f_namemax; +}; + +static int +dummy_statfs(struct dummy_statfs_t *buf) +{ + buf->f_blocks = 262144; + buf->f_bfree = 131072; + buf->f_bsize = 512; + buf->f_namelen = 255; + buf->f_namemax = 255; + + return 0; +} + +#define STATFS_T dummy_statfs_t +#define STATFS_FN(path,buf) (dummy_statfs(buf)) +#endif + +typedef struct +{ + char name[PATH_MAX]; + char label[PATH_MAX]; + unsigned long serial; + char type[PATH_MAX]; +} FsInfoType; + +static NTSTATUS NotifyInfo(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, NOTIFY * p); + +static time_t +get_create_time(struct stat *st) +{ + time_t ret, ret1; + + ret = MIN(st->st_ctime, st->st_mtime); + ret1 = MIN(ret, st->st_atime); + + if (ret1 != (time_t) 0) + return ret1; + + return ret; +} + +/* Convert seconds since 1970 to a filetime */ +static void +seconds_since_1970_to_filetime(time_t seconds, uint32 * high, uint32 * low) +{ + unsigned long long ticks; + + ticks = (seconds + 11644473600LL) * 10000000; + *low = (uint32) ticks; + *high = (uint32) (ticks >> 32); +} + +/* Convert seconds since 1970 back to filetime */ +static time_t +convert_1970_to_filetime(uint32 high, uint32 low) +{ + unsigned long long ticks; + time_t val; + + ticks = low + (((unsigned long long) high) << 32); + ticks /= 10000000; + ticks -= 11644473600LL; + + val = (time_t) ticks; + return (val); + +} + +/* A wrapper for ftruncate which supports growing files, even if the + native ftruncate doesn't. This is needed on Linux FAT filesystems, + for example. */ +static int +ftruncate_growable(int fd, off_t length) +{ + int ret; + off_t pos; + static const char zero = 0; + + /* Try the simple method first */ + if ((ret = ftruncate(fd, length)) != -1) + { + return ret; + } + + /* + * Some kind of error. Perhaps we were trying to grow. Retry + * in a safe way. + */ + + /* Get current position */ + if ((pos = lseek(fd, 0, SEEK_CUR)) == -1) + { + perror("lseek"); + return -1; + } + + /* Seek to new size */ + if (lseek(fd, length, SEEK_SET) == -1) + { + perror("lseek"); + return -1; + } + + /* Write a zero */ + if (write(fd, &zero, 1) == -1) + { + perror("write"); + return -1; + } + + /* Truncate. This shouldn't fail. */ + if (ftruncate(fd, length) == -1) + { + perror("ftruncate"); + return -1; + } + + /* Restore position */ + if (lseek(fd, pos, SEEK_SET) == -1) + { + perror("lseek"); + return -1; + } + + return 0; +} + +/* Just like open(2), but if a open with O_EXCL fails, retry with + GUARDED semantics. This might be necessary because some filesystems + (such as NFS filesystems mounted from a unfsd server) doesn't + support O_EXCL. GUARDED semantics are subject to race conditions, + but we can live with that. +*/ +static int +open_weak_exclusive(const char *pathname, int flags, mode_t mode) +{ + int ret; + struct stat statbuf; + + ret = open(pathname, flags, mode); + if (ret != -1 || !(flags & O_EXCL)) + { + /* Success, or not using O_EXCL */ + return ret; + } + + /* An error occured, and we are using O_EXCL. In case the FS + doesn't support O_EXCL, some kind of error will be + returned. Unfortunately, we don't know which one. Linux + 2.6.8 seems to return 524, but I cannot find a documented + #define for this case. So, we'll return only on errors that + we know aren't related to O_EXCL. */ + switch (errno) + { + case EACCES: + case EEXIST: + case EINTR: + case EISDIR: + case ELOOP: + case ENAMETOOLONG: + case ENOENT: + case ENOTDIR: + return ret; + } + + /* Retry with GUARDED semantics */ + if (stat(pathname, &statbuf) != -1) + { + /* File exists */ + errno = EEXIST; + return -1; + } + else + { + return open(pathname, flags & ~O_EXCL, mode); + } +} + +/* Enumeration of devices from rdesktop.c */ +/* returns numer of units found and initialized. */ +/* optarg looks like ':h=/mnt/floppy,b=/mnt/usbdevice1' */ +/* when it arrives to this function. */ +int +disk_enum_devices(RDPCLIENT * This, uint32 * id, char *optarg) +{ + char *pos = optarg; + char *pos2; + int count = 0; + + /* skip the first colon */ + optarg++; + while ((pos = next_arg(optarg, ',')) && *id < RDPDR_MAX_DEVICES) + { + pos2 = next_arg(optarg, '='); + + strncpy(This->rdpdr_device[*id].name, optarg, sizeof(This->rdpdr_device[*id].name) - 1); + if (strlen(optarg) > (sizeof(This->rdpdr_device[*id].name) - 1)) + fprintf(stderr, "share name %s truncated to %s\n", optarg, + This->rdpdr_device[*id].name); + + This->rdpdr_device[*id].local_path = (char *) xmalloc(strlen(pos2) + 1); + strcpy(This->rdpdr_device[*id].local_path, pos2); + This->rdpdr_device[*id].device_type = DEVICE_TYPE_DISK; + count++; + (*id)++; + + optarg = pos; + } + return count; +} + +/* Opens or creates a file or directory */ +static NTSTATUS +disk_create(RDPCLIENT * This, uint32 device_id, uint32 accessmask, uint32 sharemode, uint32 create_disposition, + uint32 flags_and_attributes, char *filename, NTHANDLE * phandle) +{ + NTHANDLE handle; + DIR *dirp; + int flags, mode; + char path[PATH_MAX]; + struct stat filestat; + + handle = 0; + dirp = NULL; + flags = 0; + mode = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH; + + if (*filename && filename[strlen(filename) - 1] == '/') + filename[strlen(filename) - 1] = 0; + sprintf(path, "%s%s", This->rdpdr_device[device_id].local_path, filename); + + switch (create_disposition) + { + case CREATE_ALWAYS: + + /* Delete existing file/link. */ + unlink(path); + flags |= O_CREAT; + break; + + case CREATE_NEW: + + /* If the file already exists, then fail. */ + flags |= O_CREAT | O_EXCL; + break; + + case OPEN_ALWAYS: + + /* Create if not already exists. */ + flags |= O_CREAT; + break; + + case OPEN_EXISTING: + + /* Default behaviour */ + break; + + case TRUNCATE_EXISTING: + + /* If the file does not exist, then fail. */ + flags |= O_TRUNC; + break; + } + + /*printf("Open: \"%s\" flags: %X, accessmask: %X sharemode: %X create disp: %X\n", path, flags_and_attributes, accessmask, sharemode, create_disposition); */ + + /* Get information about file and set that flag ourselfs */ + if ((stat(path, &filestat) == 0) && (S_ISDIR(filestat.st_mode))) + { + if (flags_and_attributes & FILE_NON_DIRECTORY_FILE) + return STATUS_FILE_IS_A_DIRECTORY; + else + flags_and_attributes |= FILE_DIRECTORY_FILE; + } + + if (flags_and_attributes & FILE_DIRECTORY_FILE) + { + if (flags & O_CREAT) + { + mkdir(path, mode); + } + + dirp = opendir(path); + if (!dirp) + { + switch (errno) + { + case EACCES: + + return STATUS_ACCESS_DENIED; + + case ENOENT: + + return STATUS_NO_SUCH_FILE; + + default: + + perror("opendir"); + return STATUS_NO_SUCH_FILE; + } + } + handle = DIRFD(dirp); + } + else + { + + if (accessmask & GENERIC_ALL + || (accessmask & GENERIC_READ && accessmask & GENERIC_WRITE)) + { + flags |= O_RDWR; + } + else if ((accessmask & GENERIC_WRITE) && !(accessmask & GENERIC_READ)) + { + flags |= O_WRONLY; + } + else + { + flags |= O_RDONLY; + } + + handle = open_weak_exclusive(path, flags, mode); + if (handle == -1) + { + switch (errno) + { + case EISDIR: + + return STATUS_FILE_IS_A_DIRECTORY; + + case EACCES: + + return STATUS_ACCESS_DENIED; + + case ENOENT: + + return STATUS_NO_SUCH_FILE; + case EEXIST: + + return STATUS_OBJECT_NAME_COLLISION; + default: + + perror("open"); + return STATUS_NO_SUCH_FILE; + } + } + + /* all read and writes of files should be non blocking */ + if (fcntl(handle, F_SETFL, O_NONBLOCK) == -1) + perror("fcntl"); + } + + if (handle >= MAX_OPEN_FILES) + { + error("Maximum number of open files (%s) reached. Increase MAX_OPEN_FILES!\n", + handle); + exit(1); + } + + if (dirp) + This->fileinfo[handle].pdir = dirp; + else + This->fileinfo[handle].pdir = NULL; + + This->fileinfo[handle].device_id = device_id; + This->fileinfo[handle].flags_and_attributes = flags_and_attributes; + This->fileinfo[handle].accessmask = accessmask; + strncpy(This->fileinfo[handle].path, path, PATH_MAX - 1); + This->fileinfo[handle].delete_on_close = False; + This->notify_stamp = True; + + *phandle = handle; + return STATUS_SUCCESS; +} + +static NTSTATUS +disk_close(RDPCLIENT * This, NTHANDLE handle) +{ + struct fileinfo *pfinfo; + + pfinfo = &(This->fileinfo[handle]); + + This->notify_stamp = True; + + rdpdr_abort_io(This, handle, 0, STATUS_CANCELLED); + + if (pfinfo->pdir) + { + if (closedir(pfinfo->pdir) < 0) + { + perror("closedir"); + return STATUS_INVALID_HANDLE; + } + + if (pfinfo->delete_on_close) + if (rmdir(pfinfo->path) < 0) + { + perror(pfinfo->path); + return STATUS_ACCESS_DENIED; + } + pfinfo->delete_on_close = False; + } + else + { + if (close(handle) < 0) + { + perror("close"); + return STATUS_INVALID_HANDLE; + } + if (pfinfo->delete_on_close) + if (unlink(pfinfo->path) < 0) + { + perror(pfinfo->path); + return STATUS_ACCESS_DENIED; + } + + pfinfo->delete_on_close = False; + } + + return STATUS_SUCCESS; +} + +static NTSTATUS +disk_read(RDPCLIENT * This, NTHANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result) +{ + int n; + +#if 0 + /* browsing dir ???? */ + /* each request is 24 bytes */ + if (This->fileinfo[handle].flags_and_attributes & FILE_DIRECTORY_FILE) + { + *result = 0; + return STATUS_SUCCESS; + } +#endif + + lseek(handle, offset, SEEK_SET); + + n = read(handle, data, length); + + if (n < 0) + { + *result = 0; + switch (errno) + { + case EISDIR: + /* Implement 24 Byte directory read ?? + with STATUS_NOT_IMPLEMENTED server doesn't read again */ + /* return STATUS_FILE_IS_A_DIRECTORY; */ + return STATUS_NOT_IMPLEMENTED; + default: + perror("read"); + return STATUS_INVALID_PARAMETER; + } + } + + *result = n; + + return STATUS_SUCCESS; +} + +static NTSTATUS +disk_write(RDPCLIENT * This, NTHANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result) +{ + int n; + + lseek(handle, offset, SEEK_SET); + + n = write(handle, data, length); + + if (n < 0) + { + perror("write"); + *result = 0; + switch (errno) + { + case ENOSPC: + return STATUS_DISK_FULL; + default: + return STATUS_ACCESS_DENIED; + } + } + + *result = n; + + return STATUS_SUCCESS; +} + +NTSTATUS +disk_query_information(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, STREAM out) +{ + uint32 file_attributes, ft_high, ft_low; + struct stat filestat; + char *path, *filename; + + path = This->fileinfo[handle].path; + + /* Get information about file */ + if (fstat(handle, &filestat) != 0) + { + perror("stat"); + out_uint8(out, 0); + return STATUS_ACCESS_DENIED; + } + + /* Set file attributes */ + file_attributes = 0; + if (S_ISDIR(filestat.st_mode)) + file_attributes |= FILE_ATTRIBUTE_DIRECTORY; + + filename = 1 + strrchr(path, '/'); + if (filename && filename[0] == '.') + file_attributes |= FILE_ATTRIBUTE_HIDDEN; + + if (!file_attributes) + file_attributes |= FILE_ATTRIBUTE_NORMAL; + + if (!(filestat.st_mode & S_IWUSR)) + file_attributes |= FILE_ATTRIBUTE_READONLY; + + /* Return requested data */ + switch (info_class) + { + case FileBasicInformation: + seconds_since_1970_to_filetime(get_create_time(&filestat), &ft_high, + &ft_low); + out_uint32_le(out, ft_low); /* create_access_time */ + out_uint32_le(out, ft_high); + + seconds_since_1970_to_filetime(filestat.st_atime, &ft_high, &ft_low); + out_uint32_le(out, ft_low); /* last_access_time */ + out_uint32_le(out, ft_high); + + seconds_since_1970_to_filetime(filestat.st_mtime, &ft_high, &ft_low); + out_uint32_le(out, ft_low); /* last_write_time */ + out_uint32_le(out, ft_high); + + seconds_since_1970_to_filetime(filestat.st_ctime, &ft_high, &ft_low); + out_uint32_le(out, ft_low); /* last_change_time */ + out_uint32_le(out, ft_high); + + out_uint32_le(out, file_attributes); + break; + + case FileStandardInformation: + + out_uint32_le(out, filestat.st_size); /* Allocation size */ + out_uint32_le(out, 0); + out_uint32_le(out, filestat.st_size); /* End of file */ + out_uint32_le(out, 0); + out_uint32_le(out, filestat.st_nlink); /* Number of links */ + out_uint8(out, 0); /* Delete pending */ + out_uint8(out, S_ISDIR(filestat.st_mode) ? 1 : 0); /* Directory */ + break; + + case FileObjectIdInformation: + + out_uint32_le(out, file_attributes); /* File Attributes */ + out_uint32_le(out, 0); /* Reparse Tag */ + break; + + default: + + unimpl("IRP Query (File) Information class: 0x%x\n", info_class); + return STATUS_INVALID_PARAMETER; + } + return STATUS_SUCCESS; +} + +NTSTATUS +disk_set_information(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, STREAM in, STREAM out) +{ + uint32 length, file_attributes, ft_high, ft_low, delete_on_close; + char newname[PATH_MAX], fullpath[PATH_MAX]; + struct fileinfo *pfinfo; + int mode; + struct stat filestat; + time_t write_time, change_time, access_time, mod_time; + struct utimbuf tvs; + struct STATFS_T stat_fs; + + pfinfo = &(This->fileinfo[handle]); + This->notify_stamp = True; + + switch (info_class) + { + case FileBasicInformation: + write_time = change_time = access_time = 0; + + in_uint8s(in, 4); /* Handle of root dir? */ + in_uint8s(in, 24); /* unknown */ + + /* CreationTime */ + in_uint32_le(in, ft_low); + in_uint32_le(in, ft_high); + + /* AccessTime */ + in_uint32_le(in, ft_low); + in_uint32_le(in, ft_high); + if (ft_low || ft_high) + access_time = convert_1970_to_filetime(ft_high, ft_low); + + /* WriteTime */ + in_uint32_le(in, ft_low); + in_uint32_le(in, ft_high); + if (ft_low || ft_high) + write_time = convert_1970_to_filetime(ft_high, ft_low); + + /* ChangeTime */ + in_uint32_le(in, ft_low); + in_uint32_le(in, ft_high); + if (ft_low || ft_high) + change_time = convert_1970_to_filetime(ft_high, ft_low); + + in_uint32_le(in, file_attributes); + + if (fstat(handle, &filestat)) + return STATUS_ACCESS_DENIED; + + tvs.modtime = filestat.st_mtime; + tvs.actime = filestat.st_atime; + if (access_time) + tvs.actime = access_time; + + + if (write_time || change_time) + mod_time = MIN(write_time, change_time); + else + mod_time = write_time ? write_time : change_time; + + if (mod_time) + tvs.modtime = mod_time; + + + if (access_time || write_time || change_time) + { +#if WITH_DEBUG_RDP5 + printf("FileBasicInformation access time %s", + ctime(&tvs.actime)); + printf("FileBasicInformation modification time %s", + ctime(&tvs.modtime)); +#endif + if (utime(pfinfo->path, &tvs) && errno != EPERM) + return STATUS_ACCESS_DENIED; + } + + if (!file_attributes) + break; /* not valid */ + + mode = filestat.st_mode; + + if (file_attributes & FILE_ATTRIBUTE_READONLY) + mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH); + else + mode |= S_IWUSR; + + mode &= 0777; +#if WITH_DEBUG_RDP5 + printf("FileBasicInformation set access mode 0%o", mode); +#endif + + if (fchmod(handle, mode)) + return STATUS_ACCESS_DENIED; + + break; + + case FileRenameInformation: + + in_uint8s(in, 4); /* Handle of root dir? */ + in_uint8s(in, 0x1a); /* unknown */ + in_uint32_le(in, length); + + if (length && (length / 2) < 256) + { + rdp_in_unistr(This, in, newname, length); + convert_to_unix_filename(newname); + } + else + { + return STATUS_INVALID_PARAMETER; + } + + sprintf(fullpath, "%s%s", This->rdpdr_device[pfinfo->device_id].local_path, + newname); + + if (rename(pfinfo->path, fullpath) != 0) + { + perror("rename"); + return STATUS_ACCESS_DENIED; + } + break; + + case FileDispositionInformation: + /* As far as I understand it, the correct + thing to do here is to *schedule* a delete, + so it will be deleted when the file is + closed. Subsequent + FileDispositionInformation requests with + DeleteFile set to FALSE should unschedule + the delete. See + http://www.osronline.com/article.cfm?article=245. */ + + in_uint32_le(in, delete_on_close); + + if (delete_on_close || + (pfinfo-> + accessmask & (FILE_DELETE_ON_CLOSE | FILE_COMPLETE_IF_OPLOCKED))) + { + pfinfo->delete_on_close = True; + } + + break; + + case FileAllocationInformation: + /* Fall through to FileEndOfFileInformation, + which uses ftrunc. This is like Samba with + "strict allocation = false", and means that + we won't detect out-of-quota errors, for + example. */ + + case FileEndOfFileInformation: + in_uint8s(in, 28); /* unknown */ + in_uint32_le(in, length); /* file size */ + + /* prevents start of writing if not enough space left on device */ + if (STATFS_FN(This->rdpdr_device[pfinfo->device_id].local_path, &stat_fs) == 0) + if (stat_fs.f_bfree * stat_fs.f_bsize < length) + return STATUS_DISK_FULL; + + if (ftruncate_growable(handle, length) != 0) + { + return STATUS_DISK_FULL; + } + + break; + default: + + unimpl("IRP Set File Information class: 0x%x\n", info_class); + return STATUS_INVALID_PARAMETER; + } + return STATUS_SUCCESS; +} + +NTSTATUS +disk_check_notify(RDPCLIENT * This, NTHANDLE handle) +{ + struct fileinfo *pfinfo; + NTSTATUS status = STATUS_PENDING; + + NOTIFY notify; + + pfinfo = &(This->fileinfo[handle]); + if (!pfinfo->pdir) + return STATUS_INVALID_DEVICE_REQUEST; + + + + status = NotifyInfo(This, handle, pfinfo->info_class, ¬ify); + + if (status != STATUS_PENDING) + return status; + + if (memcmp(&pfinfo->notify, ¬ify, sizeof(NOTIFY))) + { + /*printf("disk_check_notify found changed event\n"); */ + memcpy(&pfinfo->notify, ¬ify, sizeof(NOTIFY)); + status = STATUS_NOTIFY_ENUM_DIR; + } + + return status; + + +} + +NTSTATUS +disk_create_notify(RDPCLIENT * This, NTHANDLE handle, uint32 info_class) +{ + + struct fileinfo *pfinfo; + NTSTATUS ret = STATUS_PENDING; + + /* printf("start disk_create_notify info_class %X\n", info_class); */ + + pfinfo = &(This->fileinfo[handle]); + pfinfo->info_class = info_class; + + ret = NotifyInfo(This, handle, info_class, &pfinfo->notify); + + if (info_class & 0x1000) + { /* ???? */ + if (ret == STATUS_PENDING) + return STATUS_SUCCESS; + } + + /* printf("disk_create_notify: num_entries %d\n", pfinfo->notify.num_entries); */ + + + return ret; + +} + +static NTSTATUS +NotifyInfo(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, NOTIFY * p) +{ + struct fileinfo *pfinfo; + struct stat buf; + struct dirent *dp; + char *fullname; + DIR *dpr; + + pfinfo = &(This->fileinfo[handle]); + if (fstat(handle, &buf) < 0) + { + perror("NotifyInfo"); + return STATUS_ACCESS_DENIED; + } + p->modify_time = buf.st_mtime; + p->status_time = buf.st_ctime; + p->num_entries = 0; + p->total_time = 0; + + + dpr = opendir(pfinfo->path); + if (!dpr) + { + perror("NotifyInfo"); + return STATUS_ACCESS_DENIED; + } + + + while ((dp = readdir(dpr))) + { + if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) + continue; + p->num_entries++; + fullname = (char *) xmalloc(strlen(pfinfo->path) + strlen(dp->d_name) + 2); + sprintf(fullname, "%s/%s", pfinfo->path, dp->d_name); + + if (!stat(fullname, &buf)) + { + p->total_time += (buf.st_mtime + buf.st_ctime); + } + + xfree(fullname); + } + closedir(dpr); + + return STATUS_PENDING; +} + +static FsInfoType * +FsVolumeInfo(char *fpath) +{ + + static FsInfoType info; +#ifdef USE_SETMNTENT + FILE *fdfs; + struct mntent *e; +#endif + + /* initialize */ + memset(&info, 0, sizeof(info)); + strcpy(info.label, "RDESKTOP"); + strcpy(info.type, "RDPFS"); + +#ifdef USE_SETMNTENT + fdfs = setmntent(MNTENT_PATH, "r"); + if (!fdfs) + return &info; + + while ((e = getmntent(fdfs))) + { + if (str_startswith(e->mnt_dir, fpath)) + { + strcpy(info.type, e->mnt_type); + strcpy(info.name, e->mnt_fsname); + if (strstr(e->mnt_opts, "vfat") || strstr(e->mnt_opts, "iso9660")) + { + int fd = open(e->mnt_fsname, O_RDONLY); + if (fd >= 0) + { + unsigned char buf[512]; + memset(buf, 0, sizeof(buf)); + if (strstr(e->mnt_opts, "vfat")) + /*FAT*/ + { + strcpy(info.type, "vfat"); + read(fd, buf, sizeof(buf)); + info.serial = + (buf[42] << 24) + (buf[41] << 16) + + (buf[40] << 8) + buf[39]; + strncpy(info.label, buf + 43, 10); + info.label[10] = '\0'; + } + else if (lseek(fd, 32767, SEEK_SET) >= 0) /* ISO9660 */ + { + read(fd, buf, sizeof(buf)); + strncpy(info.label, buf + 41, 32); + info.label[32] = '\0'; + /* info.Serial = (buf[128]<<24)+(buf[127]<<16)+(buf[126]<<8)+buf[125]; */ + } + close(fd); + } + } + } + } + endmntent(fdfs); +#else + /* initialize */ + memset(&info, 0, sizeof(info)); + strcpy(info.label, "RDESKTOP"); + strcpy(info.type, "RDPFS"); + +#endif + return &info; +} + + +NTSTATUS +disk_query_volume_information(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, STREAM out) +{ + struct STATFS_T stat_fs; + struct fileinfo *pfinfo; + FsInfoType *fsinfo; + + pfinfo = &(This->fileinfo[handle]); + + if (STATFS_FN(pfinfo->path, &stat_fs) != 0) + { + perror("statfs"); + return STATUS_ACCESS_DENIED; + } + + fsinfo = FsVolumeInfo(pfinfo->path); + + switch (info_class) + { + case FileFsVolumeInformation: + + out_uint32_le(out, 0); /* volume creation time low */ + out_uint32_le(out, 0); /* volume creation time high */ + out_uint32_le(out, fsinfo->serial); /* serial */ + + out_uint32_le(out, 2 * strlen(fsinfo->label)); /* length of string */ + + out_uint8(out, 0); /* support objects? */ + rdp_out_unistr(This, out, fsinfo->label, 2 * strlen(fsinfo->label) - 2); + break; + + case FileFsSizeInformation: + + out_uint32_le(out, stat_fs.f_blocks); /* Total allocation units low */ + out_uint32_le(out, 0); /* Total allocation high units */ + out_uint32_le(out, stat_fs.f_bfree); /* Available allocation units */ + out_uint32_le(out, 0); /* Available allowcation units */ + out_uint32_le(out, stat_fs.f_bsize / 0x200); /* Sectors per allocation unit */ + out_uint32_le(out, 0x200); /* Bytes per sector */ + break; + + case FileFsAttributeInformation: + + out_uint32_le(out, FS_CASE_SENSITIVE | FS_CASE_IS_PRESERVED); /* fs attributes */ + out_uint32_le(out, F_NAMELEN(stat_fs)); /* max length of filename */ + + out_uint32_le(out, 2 * strlen(fsinfo->type)); /* length of fs_type */ + rdp_out_unistr(This, out, fsinfo->type, 2 * strlen(fsinfo->type) - 2); + break; + + case FileFsLabelInformation: + case FileFsDeviceInformation: + case FileFsControlInformation: + case FileFsFullSizeInformation: + case FileFsObjectIdInformation: + case FileFsMaximumInformation: + + default: + + unimpl("IRP Query Volume Information class: 0x%x\n", info_class); + return STATUS_INVALID_PARAMETER; + } + return STATUS_SUCCESS; +} + +NTSTATUS +disk_query_directory(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, char *pattern, STREAM out) +{ + uint32 file_attributes, ft_low, ft_high; + char *dirname, fullpath[PATH_MAX]; + DIR *pdir; + struct dirent *pdirent; + struct stat fstat; + struct fileinfo *pfinfo; + + pfinfo = &(This->fileinfo[handle]); + pdir = pfinfo->pdir; + dirname = pfinfo->path; + file_attributes = 0; + + switch (info_class) + { + case FileBothDirectoryInformation: + + /* If a search pattern is received, remember this pattern, and restart search */ + if (pattern[0] != 0) + { + strncpy(pfinfo->pattern, 1 + strrchr(pattern, '/'), PATH_MAX - 1); + rewinddir(pdir); + } + + /* find next dirent matching pattern */ + pdirent = readdir(pdir); + while (pdirent && fnmatch(pfinfo->pattern, pdirent->d_name, 0) != 0) + pdirent = readdir(pdir); + + if (pdirent == NULL) + return STATUS_NO_MORE_FILES; + + /* Get information for directory entry */ + sprintf(fullpath, "%s/%s", dirname, pdirent->d_name); + + if (stat(fullpath, &fstat)) + { + switch (errno) + { + case ENOENT: + case ELOOP: + case EACCES: + /* These are non-fatal errors. */ + memset(&fstat, 0, sizeof(fstat)); + break; + default: + /* Fatal error. By returning STATUS_NO_SUCH_FILE, + the directory list operation will be aborted */ + perror(fullpath); + out_uint8(out, 0); + return STATUS_NO_SUCH_FILE; + } + } + + if (S_ISDIR(fstat.st_mode)) + file_attributes |= FILE_ATTRIBUTE_DIRECTORY; + if (pdirent->d_name[0] == '.') + file_attributes |= FILE_ATTRIBUTE_HIDDEN; + if (!file_attributes) + file_attributes |= FILE_ATTRIBUTE_NORMAL; + if (!(fstat.st_mode & S_IWUSR)) + file_attributes |= FILE_ATTRIBUTE_READONLY; + + /* Return requested information */ + out_uint8s(out, 8); /* unknown zero */ + + seconds_since_1970_to_filetime(get_create_time(&fstat), &ft_high, &ft_low); + out_uint32_le(out, ft_low); /* create time */ + out_uint32_le(out, ft_high); + + seconds_since_1970_to_filetime(fstat.st_atime, &ft_high, &ft_low); + out_uint32_le(out, ft_low); /* last_access_time */ + out_uint32_le(out, ft_high); + + seconds_since_1970_to_filetime(fstat.st_mtime, &ft_high, &ft_low); + out_uint32_le(out, ft_low); /* last_write_time */ + out_uint32_le(out, ft_high); + + seconds_since_1970_to_filetime(fstat.st_ctime, &ft_high, &ft_low); + out_uint32_le(out, ft_low); /* change_write_time */ + out_uint32_le(out, ft_high); + + out_uint32_le(out, fstat.st_size); /* filesize low */ + out_uint32_le(out, 0); /* filesize high */ + out_uint32_le(out, fstat.st_size); /* filesize low */ + out_uint32_le(out, 0); /* filesize high */ + out_uint32_le(out, file_attributes); + out_uint8(out, 2 * strlen(pdirent->d_name) + 2); /* unicode length */ + out_uint8s(out, 7); /* pad? */ + out_uint8(out, 0); /* 8.3 file length */ + out_uint8s(out, 2 * 12); /* 8.3 unicode length */ + rdp_out_unistr(This, out, pdirent->d_name, 2 * strlen(pdirent->d_name)); + break; + + default: + /* FIXME: Support FileDirectoryInformation, + FileFullDirectoryInformation, and + FileNamesInformation */ + + unimpl("IRP Query Directory sub: 0x%x\n", info_class); + return STATUS_INVALID_PARAMETER; + } + + return STATUS_SUCCESS; +} + + + +static NTSTATUS +disk_device_control(RDPCLIENT * This, NTHANDLE handle, uint32 request, STREAM in, STREAM out) +{ + if (((request >> 16) != 20) || ((request >> 16) != 9)) + return STATUS_INVALID_PARAMETER; + + /* extract operation */ + request >>= 2; + request &= 0xfff; + + printf("DISK IOCTL %d\n", request); + + switch (request) + { + case 25: /* ? */ + case 42: /* ? */ + default: + unimpl("DISK IOCTL %d\n", request); + return STATUS_INVALID_PARAMETER; + } + + return STATUS_SUCCESS; +} + +DEVICE_FNS disk_fns = { + disk_create, + disk_close, + disk_read, + disk_write, + disk_device_control /* device_control */ +}; diff --git a/rosapps/applications/net/tsclient/rdesktop/disk.h b/rosapps/applications/net/tsclient/rdesktop/disk.h new file mode 100644 index 00000000000..447ebb59798 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/disk.h @@ -0,0 +1,139 @@ +/* + rdesktop: A Remote Desktop Protocol client. + Disk Redirection definitions + Copyright (C) Jeroen Meijer 2003 + Copyright (C) Peter Astrand 2004 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#define FILE_ATTRIBUTE_READONLY 0x00000001 +#define FILE_ATTRIBUTE_HIDDEN 0x00000002 +#define FILE_ATTRIBUTE_SYSTEM 0x00000004 +#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 +#define FILE_ATTRIBUTE_ARCHIVE 0x00000020 +#define FILE_ATTRIBUTE_DEVICE 0x00000040 +#define FILE_ATTRIBUTE_UNKNOWNXXX0 0x00000060 /* ??? ACTION i.e. 0x860 == compress this file ? */ +#define FILE_ATTRIBUTE_NORMAL 0x00000080 +#define FILE_ATTRIBUTE_TEMPORARY 0x00000100 +#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 +#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 +#define FILE_ATTRIBUTE_COMPRESSED 0x00000800 +#define FILE_ATTRIBUTE_OFFLINE 0x00001000 +#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 +#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 + +#define FILE_FLAG_OPEN_NO_RECALL 0x00100000 +#define FILE_FLAG_OPEN_REPARSE_POINT 0x00200000 +#define FILE_FLAG_POSIX_SEMANTICS 0x01000000 +#define FILE_FLAG_BACKUP_SEMANTICS 0x02000000 /* sometimes used to create a directory */ +#define FILE_FLAG_DELETE_ON_CLOSE 0x04000000 +#define FILE_FLAG_SEQUENTIAL_SCAN 0x08000000 +#define FILE_FLAG_RANDOM_ACCESS 0x10000000 +#define FILE_FLAG_NO_BUFFERING 0x20000000 +#define FILE_FLAG_OVERLAPPED 0x40000000 +#define FILE_FLAG_WRITE_THROUGH 0x80000000 + +#define FILE_SHARE_READ 0x01 +#define FILE_SHARE_WRITE 0x02 +#define FILE_SHARE_DELETE 0x04 + +#define FILE_BASIC_INFORMATION 0x04 +#define FILE_STANDARD_INFORMATION 0x05 + +#define FS_CASE_SENSITIVE 0x00000001 +#define FS_CASE_IS_PRESERVED 0x00000002 +#define FS_UNICODE_STORED_ON_DISK 0x00000004 +#define FS_PERSISTENT_ACLS 0x00000008 +#define FS_FILE_COMPRESSION 0x00000010 +#define FS_VOLUME_QUOTAS 0x00000020 +#define FS_SUPPORTS_SPARSE_FILES 0x00000040 +#define FS_SUPPORTS_REPARSE_POINTS 0x00000080 +#define FS_SUPPORTS_REMOTE_STORAGE 0X00000100 +#define FS_VOL_IS_COMPRESSED 0x00008000 +#define FILE_READ_ONLY_VOLUME 0x00080000 + +#define OPEN_EXISTING 1 +#define CREATE_NEW 2 +#define OPEN_ALWAYS 3 +#define TRUNCATE_EXISTING 4 +#define CREATE_ALWAYS 5 + +#define GENERIC_READ 0x80000000 +#define GENERIC_WRITE 0x40000000 +#define GENERIC_EXECUTE 0x20000000 +#define GENERIC_ALL 0x10000000 + +#define ERROR_FILE_NOT_FOUND 2L +#define ERROR_ALREADY_EXISTS 183L + +typedef enum _FILE_INFORMATION_CLASS +{ + FileDirectoryInformation = 1, + FileFullDirectoryInformation, + FileBothDirectoryInformation, + FileBasicInformation, + FileStandardInformation, + FileInternalInformation, + FileEaInformation, + FileAccessInformation, + FileNameInformation, + FileRenameInformation, + FileLinkInformation, + FileNamesInformation, + FileDispositionInformation, + FilePositionInformation, + FileFullEaInformation, + FileModeInformation, + FileAlignmentInformation, + FileAllInformation, + FileAllocationInformation, + FileEndOfFileInformation, + FileAlternateNameInformation, + FileStreamInformation, + FilePipeInformation, + FilePipeLocalInformation, + FilePipeRemoteInformation, + FileMailslotQueryInformation, + FileMailslotSetInformation, + FileCompressionInformation, + FileCopyOnWriteInformation, + FileCompletionInformation, + FileMoveClusterInformation, + FileOleClassIdInformation, + FileOleStateBitsInformation, + FileNetworkOpenInformation, + FileObjectIdInformation, + FileOleAllInformation, + FileOleDirectoryInformation, + FileContentIndexInformation, + FileInheritContentIndexInformation, + FileOleInformation, + FileMaximumInformation +} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; + +typedef enum _FSINFOCLASS +{ + FileFsVolumeInformation = 1, + FileFsLabelInformation, + FileFsSizeInformation, + FileFsDeviceInformation, + FileFsAttributeInformation, + FileFsControlInformation, + FileFsFullSizeInformation, + FileFsObjectIdInformation, + FileFsDriverPathInformation, + FileFsMaximumInformation +} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; diff --git a/rosapps/applications/net/tsclient/rdesktop/doc/AUTHORS b/rosapps/applications/net/tsclient/rdesktop/doc/AUTHORS new file mode 100644 index 00000000000..a0824584e49 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/doc/AUTHORS @@ -0,0 +1,14 @@ +This is an attempt at a list of people who have made significant +contributions to the code. If you have been unintentionally omitted +please let one of the team members know. + +Matt Chapman +Peter Kallden +Hugo Trippaers +Jay Sorg +Peter Åstrand +Michal Mihalik +Norbert Federa +Erik Forsberg +Michael Gernoth +Jeroen Meijer diff --git a/rosapps/applications/net/tsclient/rdesktop/doc/ChangeLog b/rosapps/applications/net/tsclient/rdesktop/doc/ChangeLog new file mode 100644 index 00000000000..4c096a03e43 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/doc/ChangeLog @@ -0,0 +1,86 @@ +rdesktop (1.?.?) + * SeamlessRDP - seamless windows support + * Keymap fixes + * Fix connection issues with Windows XP RTM + * Keyboard handling improvements and fixes + * SGI/Irix sound-driver fixes + * Support for clipboard INCR protocol + * Session Directory support (patch from Brian Chapeau ) + * Support for long filenames on redirected drives + * XOR ellipse drawing fix + * Clipboard unicode support (Ilya Konstantinov) + * Refactoring of color depth code (Ilya Konstantinov) + +rdesktop (1.4.1) + * persistent bitmap cache optimisations + * support for more RDP-orders (ellipse, polygon) + * libao sound-driver (for Mac OSX and others) + * Unicode support for transmitted strings/filenames + * Added korean keymap + * Xembed fixes to work with krdc correctly + * Portability fixes + * Support for RDP-compression (all bpps) + * process RDP recv queue if send queue is full (Debian bug #246461) + * SGI/Irix sound-driver fixes + + -- Michael Gernoth Sun, 8 May 2005 19:55:35 +0200 (CEST) + +rdesktop (1.4.0) + * Basic disk-, parallel-, printer- and serial-redirection + * Fix timezone-redirection + * Backing-store fixes + * Fix client-IP sent to TS + * XEmbed support for embedding rdesktop in other applications (KRDC) + * Support for setting the RDP5 experience + * Keyboard and keymap fixes + * Performance improvements + * Report disconnect-reason + * Support for RDP-compression (currently only for 8bpp) + * Support for persistent bitmap caching + * Sound-driver for SGI/Irix + + -- Michael Gernoth Sun, 6 Mar 2005 22:09:55 +0100 (CET) + +rdesktop (1.3.1) + * Crypto fixes for RDP5 + * Keyboard and keymap fixes + * some endianess fixes for high color + * portability enhancements + + -- Matthew Chapman Tue, 21 Jan 2004 20:34 + +rdesktop (1.3.0) + + * RDP5 + * 15, 16 and 24 bit color depths + * Basic clipboard redirection + * Sound + * IPv6 + * Attaching to console on Windows 2003 + + -- Peter Astrand Wed, 29 Oct 2003 16:40:58 +0100 (CET) + +rdesktop (1.2.0) + + * new - more portable - key mapping code + * support for "high" (128-bit) encryption + * toggling out of full-screen mode with Ctrl-Alt-Enter + * a few extra options including host:port syntax + * many, many bug fixes and optimisations + + -- Matthew Chapman Thu, 30 Jan 2003 04:29 + +rdesktop (1.1.0) + + * solves arith.c licensing issue by taking big number routines from + OpenSSL + * keyboard support not merged from unified patches yet + * still no manpage + + -- Matthew Chapman Mon, 17 Sep 2001 23:14:28 +1000 (AEST) + +rdesktop (1.0.0) + + * initial release + + -- Matthew Chapman diff --git a/rosapps/applications/net/tsclient/rdesktop/doc/HACKING b/rosapps/applications/net/tsclient/rdesktop/doc/HACKING new file mode 100644 index 00000000000..f7689763817 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/doc/HACKING @@ -0,0 +1,28 @@ + +Code style / indentation +------------------------ +The file indent-all.sh contains information about the current code +style. Run this script before commits. + + +Variable argument macros +------------------------ +Variable argument macros are non-portable in general, and should be +avoided. Either use a second set of parentheses like DEBUG, or create +a variable argument function like error. + + +Structure +--------- +The core protocol stack should be system-independent (i.e. ANSI C +only) so that it is easy to port. This currently applies to the +following files: + +bitmap.c licence.c orders.c rdp.c rdp5.c cache.c iso.c mcs.c +secure.c mppc.c channels.c +rdesktop.c + + +RDP resources +------------- +http://dev.remotenetworktechnology.com/refdata.htm diff --git a/rosapps/applications/net/tsclient/rdesktop/doc/TODO b/rosapps/applications/net/tsclient/rdesktop/doc/TODO new file mode 100644 index 00000000000..1aa830a4069 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/doc/TODO @@ -0,0 +1,89 @@ + +* Clipboard: + + * Support other data types than plain text. + + * Conversion between different character sets. + + +* Drive Redirection: + + * Real support for file locking + + * Handle reconnections correctly. + + * Various deficiencies; see FIXMEs in source code. + + +* Serial Port Redirection: + + * More testing needed. + + +* Printer Redirection: + + * More testing needed. + + +* Keymapping: + + +* Sound redirection + + * Use timestamps in audio packets. + + * Add resampling to supported samplerates of audio-hardware. + + * Lower CPU-usage with an audio thread. + + +* Smartcard redirection + + * Merge patches currently implementing sc-redirection. + + +* Miscellaneous + + * Clean up header files. The current "proto.h" and "xproto.h" is far + from optimal. + + * Go through the many trackers (bugs/patches/RFEs) at SourceForge. + + * More fancy homepage. + + * Enhance documentation. Write a FAQ. + + +* SeamlessRDP mode + + * Add a client to server message for starting additional + applications. + + * Support cmd.exe. + + * Support for Input Contexts. + + * Enhanced support for WM_DELETE_WINDOW: Instead of terminating + rdesktop, close the window on the server side. + + * Systray support. + + * Support for transferring the application taskbar icon. + + * Better support for non-EWMH window managers. + + * Support for non-rectangular windows. + + * The focus handling of menus is a bit crude. + + * Support for sending focus information from client to server. + + * Implement something similiar to explhook.dll - support for running + explorer.exe in non-shell mode. + + * Better compatibility with Task Manager. + + * XINERAMA support. + + * When enumerating windows, make sure to send info about windows + that are transient for other windows after the referred window. diff --git a/rosapps/applications/net/tsclient/rdesktop/doc/ipv6.txt b/rosapps/applications/net/tsclient/rdesktop/doc/ipv6.txt new file mode 100644 index 00000000000..1d3ef2341c2 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/doc/ipv6.txt @@ -0,0 +1,29 @@ + +IPv6 support in rdesktop +======================== +The IPv6 support was developed by Mike Dawson : + + Attached is a patch to tcp.c to enable IPv6 support. Build with + 'IPv6' defined to enable it. It's so far only been tested on + Linux 2.4.21 connecting to Windows XP SP1. + + Since terminal services doesn't seem to bind to the ipv6 interface + on XP I had to run 'netsh interface portproxy add v6tov4 + listenport=3389 connectport=3389' from the windows command prompt + to get it to work. + + +rdesktop now supports numeric IPv6 addresses: + + It checks for two or more colons in an address to decide what it's + dealing with so you can now do: + + rdesktop 2001:1:2:3::4 + + without it getting confused with an ipv4:port specification. I've + also followed the square bracket convention used by browsers + (http://www.ietf.org/rfc/rfc2732.txt) so if you want to specify a + non-standard port with an ipv6 address you can use the format: + + rdesktop [2001:1:2:3::4]:3390 + diff --git a/rosapps/applications/net/tsclient/rdesktop/doc/keymap-names.txt b/rosapps/applications/net/tsclient/rdesktop/doc/keymap-names.txt new file mode 100644 index 00000000000..3da698b2935 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/doc/keymap-names.txt @@ -0,0 +1,124 @@ + +0x0436 af Afrikaans +0x041C sq Albanian +0x0001 ar Arabic +0x0401 ar-sa Arabic (Saudi Arabia) +0x0801 ar-iq Arabic (Iraq) +0x0C01 ar-eg Arabic (Egypt) +0x1001 ar-ly Arabic (Libya) +0x1401 ar-dz Arabic (Algeria) +0x1801 ar-ma Arabic (Morocco) +0x1C01 ar-tn Arabic (Tunisia) +0x2001 ar-om Arabic (Oman) +0x2401 ar-ye Arabic (Yemen) +0x2801 ar-sy Arabic (Syria) +0x2C01 ar-jo Arabic (Jordan) +0x3001 ar-lb Arabic (Lebanon) +0x3401 ar-kw Arabic (Kuwait) +0x3801 ar-ae Arabic (U.A.E.) +0x3C01 ar-bh Arabic (Bahrain) +0x4001 ar-qa Arabic (Qatar) +0x042D eu Basque +0x0402 bg Bulgarian +0x0423 be Belarusian +0x0403 ca Catalan +0x0004 zh Chinese +0x0404 zh-tw Chinese (Taiwan) +0x0804 zh-cn Chinese (China) +0x0C04 zh-hk Chinese (Hong Kong SAR) +0x1004 zh-sg Chinese (Singapore) +0x041A hr Croatian +0x0405 cs Czech +0x0406 da Danish +0x0413 nl Dutch (Netherlands) +0x0813 nl-be Dutch (Belgium) +0x0009 en English +0x0409 en-us English (United States) +0x0809 en-gb English (United Kingdom) +0x0C09 en-au English (Australia) +0x1009 en-ca English (Canada) +0x1409 en-nz English (New Zealand) +0x1809 en-ie English (Ireland) +0x1C09 en-za English (South Africa) +0x2009 en-jm English (Jamaica) +0x2809 en-bz English (Belize) +0x2C09 en-tt English (Trinidad) +0x0425 et Estonian +0x0438 fo Faeroese +0x0429 fa Farsi +0x040B fi Finnish +0x040C fr French (France) +0x080C fr-be French (Belgium) +0x0C0C fr-ca French (Canada) +0x100C fr-ch French (Switzerland) +0x140C fr-lu French (Luxembourg) +0x043C gd Gaelic +0x0407 de German (Germany) +0x0807 de-ch German (Switzerland) +0x0C07 de-at German (Austria) +0x1007 de-lu German (Luxembourg) +0x1407 de-li German (Liechtenstein) +0x0408 el Greek +0x040D he Hebrew +0x0439 hi Hindi +0x040E hu Hungarian +0x040F is Icelandic +0x0421 in Indonesian +0x0410 it Italian (Italy) +0x0810 it-ch Italian (Switzerland) +0x0411 ja Japanese +0x0412 ko Korean +0x0426 lv Latvian +0x0427 lt Lithuanian +0x042F mk FYRO Macedonian +0x043E ms Malay (Malaysia) +0x043A mt Maltese +0x0414 no Norwegian (Bokmal) +0x0814 no Norwegian (Nynorsk) +0x0415 pl Polish +0x0416 pt-br Portuguese (Brazil) +0x0816 pt Portuguese (Portugal) +0x0417 rm Rhaeto-Romanic +0x0418 ro Romanian +0x0818 ro-mo Romanian (Moldova) +0x0419 ru Russian +0x0819 ru-mo Russian (Moldova) +0x0C1A sr Serbian (Cyrillic) +0x081A sr Serbian (Latin) +0x041B sk Slovak +0x0424 sl Slovenian +0x042E sb Sorbian +0x040A es Spanish (Traditional Sort) +0x080A es-mx Spanish (Mexico) +0x0C0A es Spanish (International Sort) +0x100A es-gt Spanish (Guatemala) +0x140A es-cr Spanish (Costa Rica) +0x180A es-pa Spanish (Panama) +0x1C0A es-do Spanish (Dominican Republic) +0x200A es-ve Spanish (Venezuela) +0x240A es-co Spanish (Colombia) +0x280A es-pe Spanish (Peru) +0x2C0A es-ar Spanish (Argentina) +0x300A es-ec Spanish (Ecuador) +0x340A es-cl Spanish (Chile) +0x380A es-uy Spanish (Uruguay) +0x3C0A es-py Spanish (Paraguay) +0x400A es-bo Spanish (Bolivia) +0x440A es-sv Spanish (El Salvador) +0x480A es-hn Spanish (Honduras) +0x4C0A es-ni Spanish (Nicaragua) +0x500A es-pr Spanish (Puerto Rico) +0x0430 sx Sutu +0x041D sv Swedish +0x081D sv-fi Swedish (Finland) +0x041E th Thai +0x0431 ts Tsonga +0x0432 tn Tswana +0x041F tr Turkish +0x0422 uk Ukrainian +0x0420 ur Urdu +0x042A vi Vietnamese +0x0434 xh Xhosa +0x043D ji Yiddish +0x0435 zu Zulu + diff --git a/rosapps/applications/net/tsclient/rdesktop/doc/keymapping.txt b/rosapps/applications/net/tsclient/rdesktop/doc/keymapping.txt new file mode 100644 index 00000000000..6d10eae5b87 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/doc/keymapping.txt @@ -0,0 +1,243 @@ +Keyboard mapping +================ +This release of rdesktop uses a new, portable keyboard mapping +implementation. It should hopefully work on all X11 systems. This new +implementation only looks at X11 keysyms: Not on (nonportable) +keycodes or modifier status. This means that rdesktop will obey your +local keyboard configuration. For example, if you have swapped +CapsLock and Control, rdesktop will use this mapping. + +XKB is currently not used. It seems like a good idea to me, but since +some X servers (like Xvnc) does not support XKB, we still need to use +the plain old interface as well, at least. + +There are still some small problems. + +* CapsLock: CapsLock changes are never sent to the RDP + server. rdesktop does not know which keys that are modified by + CapsLock and which are not. So, the CapsLock indicator in Wordpad + etc will always be off. + +Composing/Multi_key is supported. For more information, see: + + MIT: $SRC/xc/nls/X11/locale/Compose/iso8859-1 + XFree86: /usr/X11R6/lib/X11/locale/*/Compose + Solaris' Openwin: /usr/openwin/include/X11/Suncompose.h + /usr/openwin/lib/locale/*/Compose + Irix6: compose(5) + + +Keymap files +============ +The names of the keymaps follows RFC1766. + +(You can find a translation from Windows keyboard layout numbers to +keymap names by looking at +HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\RFC1766 in the +registry.) + + +Contents of keymap files +======================== +The keymaps are line based. There are four different types of lines: + +1) include lines +Syntax: +include + +Example: +include common + + +2) map lines +Syntax: +map + +Example: +map 0x41d + +Map-lines specifies how the remote RDP server should interpret the +sent scancodes. + + +3) Translation lines +Syntax: + [flags..] + +Example: +onehalf 0x29 shift + +The scancode can be found in scancodes.h. Note: The scancode value for +extended keys can be calculated by OR:ing with 0x80. Example: The +Delete key have the scancode sequence 0xe0, 0x52. You can get the +scancode value to put into the map file by running: + +python -c "print hex(0x80 | 0x52)" + +If flags are "altgr", "shift", the scancode sent for this keysym will +be prefixed with AltGr, or Shift. + +If flags includes "addupper", a translation for this keysyms uppercase +name will be added as well, in addition to the non-uppercase +name. Example: + +x 2d addupper + +...will add an translation for "X" automatically, just like if you +would specify: + +X 2d shift + +If flags include "localstate", the modifier to send will be determined +by the local modifier state. + +If flags is "inhibit", nothing will be sent to the server. + +If flags is "numlock", rdesktop will make sure that the remote NumLock +state is on before generating the key event. Otherwise, it will make +sure NumLock is off. + + +4) enable_compose + +If any line starts with the keyword "enable_compose", rdesktop will +enable local Compose/Multi_key handling. Enabling this will often make +it impossible to compose characters with dead keys (on the remote +side). This is because when local compose support is enabled, dead +keys will not be sent to the remote side. + + +5) sequence lines +Syntax: +sequence ... + +Examples: +sequence eacute dead_acute e +sequence F12 f o o at e x a m p l e period c o m + +Sequence lines allows you to specify that multiple scancodes should be +sent to the RDP server, in response to one X11 keyboard event. Note: +The sequence is sent at the X11 KeyPress event. Nothing is sent at +KeyRelease. + + +6) keyboard_type lines +Syntax: +keyboard_type + +keyboard_type lines specifies the keyboard type. Default value is 0x4 +(en-us 101/104 keys keyboard). + + +7) keyboard_subtype lines +Syntax: +keyboard_subtype + +keyboard_subtype lines specifies the keyboard subtype. Default value +is 0x0 (en-us 101/104 keys keyboard). + + +8) keyboard_functionkeys lines +Syntax: +keyboard_functionkeys + +keyboard_functionkeys specifies the number of keyboard function +keys. Default value is 0xc (12, for standard 101/104 keys keyboard). + + + + +Suggested X11 keysym mapping on PCs +=================================== +Unfortunately, there is no standard for which keysyms a given key +should generate. If you have a PC-keyboard with Windows keys, I suggest this mapping: + +Keyboard keys: +CtrlLeft WinLeft AltLeft Space AltGr WinRight Menu CtrlRight + +...should generate keysyms: +Control_L Super_L Alt_L space Mode_switch Super_R Menu Control_R + +Additionally: +Shift-Alt should produce Meta_L +Shift-AltGr should produce Multi_Key. + +Use a modifier-map like this: + +shift Shift_L (0x32), Shift_R (0x3e) +lock Caps_Lock (0x25) +control Control_L (0x42), Control_R (0x6d) +mod1 Alt_L (0x40) +mod2 Num_Lock (0x4d) +mod3 Mode_switch (0x71) +mod4 Super_L (0x73), Super_R (0x74) +mod5 Scroll_Lock (0x4e) + + +Updating / writing keymap files +=============================== +When writing new or updating keymap files, please use comments and +blanks, to increase readability. The "sv" keymap is a good template. + +When you need to add a translation to a keymap file, do: + + 1. Get the "key number" for this key, by looking at keynums.png. + + 2. Take a look at scancodes.h, and look for + SCANCODE_KEY_. The scancode value is at the end of + the line. If the line contains (SCANCODE_EXTENDED | 0xsomething), + then you should OR 0x80 to this value. For example, you can do: + + python -c "print hex(0x80 | 0xsomething)" + + 3. Put the scancode (from step 2) and keysym name (found in the + error message) into the keymap file. + + +Special keys +============ + +* The combination Ctrl-Alt-Enter toggles between fullscreen and + non-fullscreen mode. + +* Meta, Hyper and Super are treated as windows keys. RDP4 does not + support the windows keys though, so if you are running RDP4, these + keys will translate to Ctrl-Esc. + + +Links +===== +http://www.win.tue.nl/~aeb/linux/kbd/scancodes.html + + +Test cases +========== +When changing the keyboard code, make sure all these tests in Notepad +works: + +1. Ctrl+f should bring up Find dialog, with CapsLock both on and off. + +2. Ctrl+Shift+arrows should mark text, with CapsLock both on and off. + +3. Test a sequence, like egrave. + +4. Test a char generated with AltGr, such as @ on a swedish keyboard. + +5. Test Ctrl-Alt-Delete. + +6. Ctrl-Alt-Enter should toggle fullscreen. + +7. Test NumLock synchronization using the -N option. Excel is able to + indicate the current NumLock state. Verify that the status is + updated correctly on reconnects. + +8. Test the Windows keys, standalone as well as in combination with, + say, E. + +9. Make sure the system menu (via Alt-space) cannot be accessed in + single app mode. + +10. Make sure keymaps can be loaded from ~/.rdesktop/keymaps, + KEYMAP_PATH, $CWD/keymaps, and from an absolute path. + + diff --git a/rosapps/applications/net/tsclient/rdesktop/doc/keynums.png b/rosapps/applications/net/tsclient/rdesktop/doc/keynums.png new file mode 100644 index 00000000000..401601b9e06 Binary files /dev/null and b/rosapps/applications/net/tsclient/rdesktop/doc/keynums.png differ diff --git a/rosapps/applications/net/tsclient/rdesktop/doc/licensing.txt b/rosapps/applications/net/tsclient/rdesktop/doc/licensing.txt new file mode 100644 index 00000000000..d8006d2eb72 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/doc/licensing.txt @@ -0,0 +1,56 @@ + +To be able to connect to Microsoft Windows 2000 Terminal Services (and +probably later versions), you'll need to deal with licensing. This is +complicated. This file is supposed to contain some information about +how rdesktop works with Microsofts license systems. + +There's a lot of information on the MS web site, for example, +http://support.microsoft.com/default.aspx?scid=kb;EN-US;287687. + +From the rdesktop mailing list: + +Peter Åstrand , 2003-02-06 + +> We are running rdesktop 1.2 on machine A and connects to a Windows 2000 +> Server (machine B). The W2K machine has 5 real licenses installed ("Windows +> 2000 Terminal Services Client Access License", "Open" type). This can be +> verifier by using "Terminal Services Licensing". The problem is that all +> issued licenses have an expire-date. The expire date for the license issued +> to A was reached today, and no more connections could be made until we +> changed the client name (by using -n). +> +> We also have another similiar systems, with Linux machine C and W2K server +> D. This server has 200 licenses installed of the type "Select". On this +> server, the issued licenses seems to be permanent: The expire date is set +> to "-", and we have no problem with this system. +> +> The question of course is why the first system issues license with +> expiration date, while the second system issues permanent licenses. + + +Darryn Capes-Davis, 2003-02-07 + +> I have been through the problems and can tell you what is going +> on. The main difference of Machine B (Server 1) and Machine D (Server +> 2) is that from what I see Machine B has Service Pack 3 installed and +> Machine D does not. You see in Service Pack 3 there was a change made +> to TS Licencing in that Microsoft introduced a licence recovery +> mechanism. To cut to the point (I don't know the details) rdesktop 1.2 +> with SAVE_LICENCE defined works fine. In the new lic method the +> terminal server expects a valid licence to be presented to renew +> it. Otherwise it just expires it - and a day later you will see it +> actually gone (it does housekeeping once a day)! So if SAVE_LICENCE +> code is not enabled then it just expires and you can't use the licence +> until it cleans it away - and this is where a little gotcha is - if +> you move from using an rdesktop without SAVE_LICENCE to one with +> SAVE_LICENCE then it still won't recover an 'expired' licence. You +> have to wait for the daily housekeeping to clean it up - this really +> had me going for half a day or so! This is exactly what happened to +> you. +> +> The Server pre Spk 3 has the old model where licences never expire. To +> recover a licence that you never wanted to use again you have to call +> the Microsoft Clearing House. That's why they introduced the new +> method. And if you upgrade a Pre Spk3 server to Spk3 then the licences +> granted still stay with the old method - only new licences granted +> will use the new expiry method. diff --git a/rosapps/applications/net/tsclient/rdesktop/doc/lspci-channel.txt b/rosapps/applications/net/tsclient/rdesktop/doc/lspci-channel.txt new file mode 100644 index 00000000000..78645171e2a --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/doc/lspci-channel.txt @@ -0,0 +1,39 @@ + +Protocol overview +================= + +The lspci virtual channel makes it possible for the remote RDP server +to enumerate the local PCI devices. The protocol on this channel is +text based and line oriented: One single line per request or +response. UNIX-style LF line breaks are used. The maximum line length +is 1023, newline included. + +rdesktop acts as a server, with only one request: + + LSPCI + +The response is several lines with this syntax: + +,,,,,, + +After the last line, a line with a single dot is sent. + +Example: + +0300,102b,0525,102b,0338,04,00 +0401,8086,24d5,1028,0174,02,8f +. + + +Usage +===== + +To enable to lspci virtual channel, run rdesktop with "-r lspci". + + +References +========== + +http://www.microsoft.com/msj/1099/terminal/terminal.aspx +http://msdn.microsoft.com/library/default.asp?url=/library/en-us/termserv/termserv/terminal_services_virtual_channels.asp + diff --git a/rosapps/applications/net/tsclient/rdesktop/doc/patches.txt b/rosapps/applications/net/tsclient/rdesktop/doc/patches.txt new file mode 100644 index 00000000000..08ffe59f7a8 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/doc/patches.txt @@ -0,0 +1,340 @@ +This file documents some of all patches for rdesktop, floating around +the net, and how they are related to the current (CVS) version of +rdesktop. Things left to do are marked with TBD (To Be Done). + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/Makefile.diff +Description: +Makefile changes which makes it possible to compile rdesktop on SunOS +and OSF1. +Status: +Applied (slightly modified) + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/assar_19-7-2.hostlen.patch +Description: +Fix for hostnames longer than 30 chars. +Status: +Applied (revision 1.11 of secure.c) + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/backingstore+privatecolormap-for-19-3-9.patch +Description: +This adds support for 1) Private color maps (useful for 8 bpp mode) +and 2) backingstore selection. +Status: +1) is not needed anymore; rdesktop automatically uses Private color +map in 8 bpp mode. 2) is, as far as I understand, also not +need. rdesktop automatically uses a software backing store if the +Xserver does not provide one. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/ben_xwin.c.diff +Description: +Fixes for CapsLock and NumLock. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/ctrl1nohang.diff +Description: +Fixes problem with ctrl1 hangs. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/downkeypatch.diff +Description: +Seems to keep track of the remote modifier status. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/fasttext2+nobackpixmap.patch +Description: +(From http://mail.rdesktop.org/archive/2001/msg00218.html): + +1) Added --no-backpixmap option to disable the ugly double drawing in +xwin.c (I have a very robust backing storage in my X, so I don't need +it ;) + +2) More optimizations to text draw (previous fast-text patch was +included in 192-3-6-2). In text drawing with solid background the +glyphs are drawn with stippled fill instead of XCopyPlane (runs faster +on my S3Trio64 with XFree 3.3.6, please test it on other +configurations to validate this). The WinTach not show any improvement +with this change, it seems to use all transparent background text +draws, but with a old PC Magazine Winbench (3.1) doing the scroll text +test the speed gain is significative. + +3) My Previous patch to disable backing storage in fullscreen + +Status: +1) is not relevant any more, since rdesktop only uses backing store if +the Xserver does not provide backing store. +Need to examine if 2) and 3) are still useful. TBD. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/francisco_fix_patblt.html +Description: +The colors in patterns drawn with "pattern blt" order was inverted (fg +& bg). (See the background of the yellow help banners) +Status: +Applied (in revision 1.29, 2002/07/14) + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/frank_1linerfix.html +Description: +ui_create_glyph was not called with ipattern. +Status: +Applied (in revision 1.29, 2002/07/14). + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/frank_fasttext.patch.txt +Description: +Some kind of performence improvements. +Status: +From what I can tell, this patch is no longer necessary. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/hostname-patch +Description: +(From http://mail.rdesktop.org/archive/2001/msg00163.html): + +rdesktop uses gethostname to figure out the hostname, but gethostname +under linux returns an error when the hostname is longer than the +buffer. This hack gives gethostname a 64 char buffer and then strips +the first 16 chars or upto the first '.' and puts the result in +hostname[16]. + +Status: +Applied in version 1.10 of rdesktop.c. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/hove-19-7-2endian.diff +Description: +Includes a program for testing endianness. +Status: +rdesktop determines endianness at runtime. This patch is not needed +anymore. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/mmihalik_19-7-3-keyfix-4.patch +Description: +Some kind of new alternative keyboard mapping imlementation. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/norbert_fullscreen.patch +Description: +Fullscreen mode. +Status: +Applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/norbert_percent.txt +Description: +Makes is possible to specify RDP geometry based a percent value of the +current desktop size. +Status: +Not applied. I don't think many people will need this. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/norbert_rdp_tcp_port.diff +Description: +Command line tcp port argument. +Status: +Applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/patch19-7-2.xyPos.emptyPassword.patch +Description: +This patch adds: +1) Support for empty passwords +2) Support for asking for password interactively +3) Support for ++ geometry. + +Status: +1) and 2) can be solved by the -P parameter; patch not needed. +Functionality for 3) is currently missing. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop-1.0.0-19-7-1-mmihalik-3.diff +Description: +Defines DO_GLYPH() etc. +Status: +As far as I understand, this patch is applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop-1.0.0-mmihalik-1.diff +Description: +Misc drawing changes. +Status: +As far as I understand, this patch is applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop-1.0.0-pl19-7-2-mmihalik-1.diff +Description: +Some kind of new alternative keyboard mapping implementation. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop-gmp.patch +Description: +Use GMP for RSA crypto. +Status: +Not needed since rdesktop now use OpenSSL for all of the crypto. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop-new_kb.patch +Description: +Modifies one of the old keyboard mapping implementations in some way. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop-openssl.patch +Description: +Support for linking rdesktop with OpenSSL. +Status: +Not needed anymore, rdesktop can optionally use system +OpenSSL. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop.vncviewer_patch +Description: +Hack for making the old (broken) keyboard mapping implementation work +with the VNC Xserver. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop_keymap.patch +Description: +Some kind of new alternative keyboard mapping implementation. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdp-srvr-19-6-6.diff +Description: +Basic RDP server. +Status: +Not applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/scroll-to-death-patch.txt +Description: +Fixes scroll-to-death problem in Excel and other applications. +Status: +Not needed; fixed in another way in recent versions of rdesktop. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/spark-manpage-patch-19.4 +Description: +Adds a manual page. +Status: +Not needed; rdesktop contains a manual page now. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/spark-manpage-patch-19.4-1 +Description: +Adds a manual page. +Status: +Not needed; rdesktop contains a manual page now. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/spark_xinerama-patch2 +Description: +Adds XINERAMA support to rdesktop. +Status: +Not applied yet. TBD. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/svenni_dis_wmkeybnds.patch +Description: +Commandline flag to disable keyboard grabbing. +Status: +Applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/svenni_disable_bs_in_x-tiny-patch +Description: +Disables backing store for TinyX. +Status: +As far as I understand, this patch is not need any longer. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/vincent_19-7-2.license.patch +Description: +TBD +Status: +Not yet examined. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/vincent_19-7-2.secure.patch +Description: +Fixes a problem during the connection to a French NT4 TSE (a French +NT4 TSE doesn't use encryptation). +Status: +Applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/vincent_19-7-3_excel.patch +Description: +Makes matrixes appear better, such as those found in Excel/toad etc. +Status: +Applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/vincent_8bpp.patch +Description: +Support a 8bpp display (256 colours). +Status: +An enhanced version is included in rdesktop; this patch is not needed any more. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/vpypatch.txt +Description: +Various changes for one of the old keyboard stuff. +Status: +Not needed anymore, with the new keyboard mapping implementation. diff --git a/rosapps/applications/net/tsclient/rdesktop/doc/rdesktop.1 b/rosapps/applications/net/tsclient/rdesktop/doc/rdesktop.1 new file mode 100644 index 00000000000..585cf8ec376 --- /dev/null +++ b/rosapps/applications/net/tsclient/rdesktop/doc/rdesktop.1 @@ -0,0 +1,217 @@ +.TH rdesktop 1 "November 2005" +.SH NAME +.I rdesktop +\- Remote Desktop Protocol client +.SH SYNOPSIS +.B rdesktop [options] server[:port] +.br +.SH DESCRIPTION +.I rdesktop +is a client for Remote Desktop Protocol (RDP), used in a number of Microsoft +products including Windows NT Terminal Server, Windows 2000 Server, Windows XP +and Windows 2003 Server. + +.SH OPTIONS +.TP +.BR "-u " +Username for authentication on the server. +.TP +.BR "-d " +Domain for authentication. +.TP +.BR "-s " +Startup shell for the user - starts a specific application instead of Explorer. +.TP +.BR "-c " +The initial working directory for the user. Often used in combination with -s +to set up a fixed login environment. +.TP +.BR "-p " +The password to authenticate with. Note that this may have no effect if +"Always prompt for password" is enabled on the server. WARNING: if you specify +a password on the command line it may be visible to other users when they use +tools like ps. Use -p - to make rdesktop request a password at startup (from +standard input). +.TP +.BR "-n " +Client hostname. Normally rdesktop automatically obtains the hostname of the +client. +.TP +.BR "-k " +Keyboard layout to emulate. This requires a corresponding keymap file to be +installed. The standard keymaps provided with rdesktop follow the RFC1766 +naming scheme: a language code followed by a country code if necessary - e.g. +en-us, en-gb, de, fr, sv, etc. + +The default keyboard map depends on the current locale (LC_* and LANG +environment variables). If the current locale is unknown, the default +keyboard map is en-us (a US English keyboard). + +The keyboard maps are file names, which means that they are case +sensitive. The standard keymaps are all in lowercase. + +The keyboard maps are searched relative to the directories +$HOME/.rdesktop/keymaps, KEYMAP_PATH (specified at build time), and +$CWD/keymaps, in this order. The keyboard-map argument can also be an +absolute filename. + +The special value `none' can be used instead of a keyboard map. +In this case, rdesktop will guess the scancodes from the X11 event key +codes using an internal mapping method. This method only supports the +basic alphanumeric keys and may not work properly on all platforms +so its use is discouraged. +.TP +.BR "-g " +Desktop geometry (WxH). If geometry is the special word "workarea", the geometry +will be fetched from the extended window manager hints property _NET_WORKAREA, from +the root window. The geometry can also be specified as a percentage of the whole +screen, e.g. "-g 80%". +.TP +.BR "-f" +Enable fullscreen mode. This overrides the window manager and causes the +rdesktop window to fully cover the current screen. Fullscreen mode can be +toggled at any time using Ctrl-Alt-Enter. +.TP +.BR "-b" +Force the server to send screen updates as bitmaps rather than using +higher-level drawing operations. +.TP +.BR "-A" +Enable SeamlessRDP. In this mode, rdesktop creates a X11 window for +each window on the server side. This mode requires the SeamlessRDP +server side component. When using this option, you should specify a +startup shell which launches the desired application through +SeamlessRDP. Example: rdesktop -A -s 'seamlessrdpshell notepad'. +.TP +.BR "-B" +Use the BackingStore of the Xserver instead of the integrated one in +rdesktop. +.TP +.BR "-e" +Disable encryption. This option is only needed (and will only work) if you +have a French version of NT TSE. +.TP +.BR "-E" +Disable encryption from client to server. This sends an encrypted login packet, +but everything after this is unencrypted (including interactive logins). +.TP +.BR "-m" +Do not send mouse motion events. This saves bandwidth, although some Windows +applications may rely on receiving mouse motion. +.TP +.BR "-C" +Use private colourmap. This will improve colour accuracy on an 8-bit display, +but rdesktop will appear in false colour when not focused. +.TP +.BR "-D" +Hide window manager decorations, by using MWM hints. +.TP +.BR "-K" +Do not override window manager key bindings. By default rdesktop attempts +to grab all keyboard input when it is in focus. +.TP +.BR "-S