Author: mc Date: Sun Aug 20 01:44:41 2006 New Revision: 23613
URL: http://svn.reactos.org/svn/reactos?rev=23613&view=rev Log: modified porting-tools/rdesktop-core-tester/activex.cpp modified porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj modified porting-tools/rdesktop-core-tester/stdafx.h Support acting as both the stand-alone DLL (mstscax.dll) and the redistributable (msrdp.ocx) Wrap the non-standard "sealed" keyword in a macro Almost all state now correctly passed between rdesktop-core and the ActiveX Some debugging aids Prepared a functional DllMain Pulled in Common Controls, needed for the full-screen titlebar
modified rdesktop/rdesktop.h modified rdesktop/rdp.c modified rdesktop/secure.c Minor clean-up
Modified: trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/activex.cpp trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.h trunk/reactos/base/applications/tsclient/rdesktop/rdesktop.h trunk/reactos/base/applications/tsclient/rdesktop/rdp.c trunk/reactos/base/applications/tsclient/rdesktop/secure.c
Modified: trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/activex.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient/... ============================================================================== --- trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/activex.cpp (original) +++ trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/activex.cpp Sun Aug 20 01:44:41 2006 @@ -3,6 +3,12 @@ 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" @@ -43,10 +49,70 @@
}
+namespace +{ + +LPSTR BstrToLpsz(BSTR bstr) +{ + int cch = WideCharToMultiByte(CP_ACP, 0, bstr, -1, NULL, 0, NULL, NULL); + + if(cch <= 0) + return NULL; + + LPSTR lpsz = new char[cch]; + + if(lpsz == NULL) + return NULL; + + cch = WideCharToMultiByte(CP_ACP, 0, bstr, -1, lpsz, cch, NULL, NULL); + + if(cch <= 0) + { + delete[] lpsz; + return NULL; + } + + return lpsz; +} + +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; +} + +} +/* + "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 + #pragma warning(push) #pragma warning(disable: 4584)
-class RdpClient sealed: // FIXME: wrap "sealed" in a macro +class RdpClient SEALED_: /* COM basics */ public IUnknown, public IDispatch, @@ -70,7 +136,7 @@ public IViewObject, public IViewObject2,
- // NOTE: the original has a vestigial implementation of this, which we omit + // NOTE: the original has a vestigial, non-functional implementation of this, which we omit // public ISpecifyPropertyPages,
// Hidden interfaces, not available through QueryInterface @@ -85,6 +151,15 @@ // Reference counting LONG m_refCount;
+#ifdef _DEBUG + DWORD m_apartmentThreadId; + + bool InsideApartment() const + { + return GetCurrentThreadId() == m_apartmentThreadId; + } +#endif + // Aggregation support IUnknown * m_punkOuter;
@@ -119,6 +194,7 @@ CLSID m_classId;
// Late binding support + unsigned m_typeLibIndex; ITypeLib * m_typeLib; ITypeInfo * m_dispTypeInfo;
@@ -154,7 +230,6 @@ /* Properties */ // Storage fields // NOTE: keep sorted by alignment (pointers and handles, integers, enumerations, booleans) - BSTR m_Server; BSTR m_Domain; BSTR m_UserName; BSTR m_DisconnectedText; @@ -162,13 +237,14 @@ BSTR m_FullScreenTitle; BSTR m_StartProgram; BSTR m_WorkDir; - BSTR m_LoadBalanceInfo; BSTR m_ConnectedStatusText; BSTR m_ClearTextPassword; // FIXME! dangerous, shouldn't store in cleartext! BSTR m_RdpdrLocalPrintingDocName; BSTR m_RdpdrClipCleanTempDirString; BSTR m_RdpdrClipPasteInfoString; - // TODO: keyboard layout + BSTR m_KeyboardLayoutString; + LPSTR m_Server; + LPSTR m_LoadBalanceInfo; // TODO: plugin DLLs HWND m_UIParentWindowHandle; long m_DesktopWidth; @@ -246,6 +322,8 @@ // Generic getters/setters HRESULT GetProperty(BSTR& prop, BSTR * retVal) const { + assert(InsideApartment()); + if(retVal == NULL) return E_POINTER;
@@ -257,8 +335,25 @@ 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;
@@ -283,17 +378,43 @@ return S_OK; }
- template<class Type> HRESULT SetProperty(bool& prop, const Type& newValue) - { + 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; + } + + template<class Type> HRESULT SetProperty(bool& prop, const Type& newValue) + { + assert(InsideApartment()); + + if(m_Connected) + return E_FAIL; + prop = !!newValue; return S_OK; }
template<class Type> HRESULT SetProperty(Type& prop, const Type& newValue) { + assert(InsideApartment()); + if(m_Connected) return E_FAIL;
@@ -303,6 +424,8 @@
template<class Type> HRESULT GetProperty(const bool& prop, Type * retVal) const { + assert(InsideApartment()); + if(retVal == NULL) return E_POINTER;
@@ -312,6 +435,8 @@
template<class Type> HRESULT GetProperty(const Type& prop, Type * retVal) const { + assert(InsideApartment()); + if(retVal == NULL) return E_POINTER;
@@ -337,6 +462,8 @@ // Generic event riser & helpers void InvokeSinks(DISPID eventId, VARIANTARG rgvarg[], unsigned int cArgs, VARIANTARG * retval) { + assert(InsideApartment()); + DISPPARAMS params;
params.rgvarg = rgvarg; @@ -385,6 +512,8 @@ AsyncEventCallback callback = NULL ) { + assert(InsideApartment()); + if(retval == NULL && callback) { VARIANTARG localRetval = { }; @@ -406,8 +535,13 @@ AsyncEventCallback callback; };
- static const UINT RDPC_WM_SYNC_EVENT = WM_USER + 1; - static const UINT RDPC_WM_ASYNC_EVENT = WM_USER + 2; + enum + { + RDPC_WM_ = WM_USER, + RDPC_WM_SYNC_EVENT, + RDPC_WM_ASYNC_EVENT, + RDPC_WM_DISCONNECT, + };
bool HandleEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT& result) { @@ -415,19 +549,52 @@ { case RDPC_WM_SYNC_EVENT: case RDPC_WM_ASYNC_EVENT: + { + const EventArguments * eventArgs = reinterpret_cast<EventArguments *>(lParam); + assert(eventArgs); + + FireEventInsideApartment + ( + eventArgs->eventId, + eventArgs->rgvarg, + eventArgs->cArgs, + eventArgs->retval, + eventArgs->callback + ); + + if(uMsg == RDPC_WM_ASYNC_EVENT) + delete eventArgs; + } + + break; + + case RDPC_WM_DISCONNECT: + { + assert(m_Connected); + + VARIANTARG arg = { }; + + arg.vt = VT_I4; + arg.lVal = static_cast<long>(wParam); + + FireEventInsideApartment(4, &arg, 1); + + if(m_protocolThread) + { + WaitForSingleObject(m_protocolThread, INFINITE); + CloseHandle(m_protocolThread); + } + + // TODO: do other disconnection work here... + + m_Connected = false; + } + break;
default: return false; } - - const EventArguments * eventArgs = reinterpret_cast<EventArguments *>(lParam); - assert(eventArgs); - - FireEventInsideApartment(eventArgs->eventId, eventArgs->rgvarg, eventArgs->cArgs, eventArgs->retval, eventArgs->callback); - - if(uMsg == RDPC_WM_ASYNC_EVENT) - delete eventArgs;
return true; } @@ -442,6 +609,7 @@ AsyncEventCallback callback = NULL ) { + assert(!InsideApartment()); EventArguments syncEvent = { eventId, rgvarg, cArgs, retval, callback }; SendMessage(m_controlWindow, RDPC_WM_SYNC_EVENT, 0, reinterpret_cast<LPARAM>(&syncEvent)); } @@ -456,6 +624,8 @@ AsyncEventCallback callback = NULL ) { + assert(!InsideApartment()); + EventArguments * asyncEvent = new EventArguments();
if(asyncEvent == NULL) @@ -496,13 +666,8 @@
void FireDisconnected(long reason) { - VARIANTARG arg = { }; - - arg.vt = VT_I4; - arg.lVal = reason; - - // Source: protocol - FireEventOutsideApartment(4, &arg, 1); + // Source: control or protocol. Special handling + SendNotifyMessage(m_controlWindow, RDPC_WM_DISCONNECT, reason, 0); }
void FireEnterFullScreenMode() @@ -519,7 +684,7 @@
HRESULT FireChannelReceivedData(char (& chanName)[CHANNEL_NAME_LEN + 1], void * chanData, unsigned int chanDataSize) { - // BUGBUG: what to do when we run outside of memory? + // BUGBUG: what to do when we run out of memory?
OLECHAR wchanName[ARRAYSIZE(chanName)]; std::copy(chanName + 0, chanName + ARRAYSIZE(chanName), wchanName); @@ -727,7 +892,7 @@ pvObject = static_cast<IViewObject *>(this); else if(riid == IID_IViewObject2) pvObject = static_cast<IViewObject2 *>(this); - else if(riid == IID_IMsTscAx) + else if(riid == IID_IMsTscAx || riid == MSTSCLib_Redist::IID_IMsTscAx) pvObject = static_cast<IMsTscAx *>(this); else if(riid == IID_IMsRdpClient) pvObject = static_cast<IMsRdpClient *>(this); @@ -771,11 +936,12 @@ }
/* Constructor */ - RdpClient(REFCLSID classId, IUnknown * punkOuter): + 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), @@ -785,6 +951,10 @@ m_freezeEvents(0), m_uiActive(false), m_SafetyOptions(), + +#ifdef _DEBUG + m_apartmentThreadId(GetCurrentThreadId()), +#endif
// rdesktop-core interface m_protocolState(), @@ -814,8 +984,8 @@ m_ColorDepth(16), m_KeyboardHookMode(2), m_AudioRedirectionMode(0), - m_TransportType(1), // BUGBUG: ??? - m_SasSequence(0xAA03), // BUGBUG: ??? + 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), @@ -877,8 +1047,6 @@ { if(m_punkOuter == NULL) m_punkOuter = &m_inner; - - // TODO: initialize RDPCLIENT fields }
/* Destructor */ @@ -913,7 +1081,6 @@ if(m_adviseHolder) m_adviseHolder->Release();
- SysFreeString(m_Server); SysFreeString(m_Domain); SysFreeString(m_UserName); SysFreeString(m_DisconnectedText); @@ -921,20 +1088,25 @@ SysFreeString(m_FullScreenTitle); SysFreeString(m_StartProgram); SysFreeString(m_WorkDir); - SysFreeString(m_LoadBalanceInfo); SysFreeString(m_ConnectedStatusText); SysFreeString(m_ClearTextPassword); SysFreeString(m_RdpdrLocalPrintingDocName); SysFreeString(m_RdpdrClipCleanTempDirString); SysFreeString(m_RdpdrClipPasteInfoString);
- // TODO: decrease module reference count + if(m_LoadBalanceInfo) + delete[] m_LoadBalanceInfo; + + if(m_Server) + delete[] m_Server; + + unlockServer(); }
/* Advanced settings wrapper */ friend class AdvancedSettings;
- class AdvancedSettings sealed: public MSTSCLib::IMsRdpClientAdvancedSettings4 + class AdvancedSettings SEALED_: public MSTSCLib::IMsRdpClientAdvancedSettings4 { private: RdpClient * Outer() @@ -959,6 +1131,8 @@
if(FAILED(hr)) return hr; + + assert(MSTSCLib::IID_IMsRdpClientAdvancedSettings4 == MSTSCLib_Redist::IID_IMsRdpClientAdvancedSettings4);
hr = Outer()->m_typeLib->GetTypeInfoOfGuid(MSTSCLib::IID_IMsRdpClientAdvancedSettings4, &m_dispTypeInfo);
@@ -1070,7 +1244,7 @@ return Outer()->SetProperty(Outer()->m_Compress, pcompress); }
- virtual STDMETHODIMP IMsTscAdvancedSettings::get_Compress(long * pcompress) + virtual STDMETHODIMP IMsTscAdvancedSettings::get_Compress(long * pcompress) const { return Outer()->GetProperty(Outer()->m_Compress, pcompress); } @@ -1080,7 +1254,7 @@ return Outer()->SetProperty(Outer()->m_BitmapPersistence, pbitmapPeristence); }
- virtual STDMETHODIMP IMsTscAdvancedSettings::get_BitmapPeristence(long * pbitmapPeristence) + virtual STDMETHODIMP IMsTscAdvancedSettings::get_BitmapPeristence(long * pbitmapPeristence) const { return Outer()->GetProperty(Outer()->m_BitmapPersistence, pbitmapPeristence); } @@ -1093,14 +1267,14 @@ return Outer()->SetProperty(Outer()->m_allowBackgroundInput, pallowBackgroundInput); }
- virtual STDMETHODIMP IMsTscAdvancedSettings::get_allowBackgroundInput(long * pallowBackgroundInput) + virtual STDMETHODIMP IMsTscAdvancedSettings::get_allowBackgroundInput(long * pallowBackgroundInput) const { return Outer()->GetProperty(Outer()->m_allowBackgroundInput, pallowBackgroundInput); }
virtual STDMETHODIMP IMsTscAdvancedSettings::put_KeyBoardLayoutStr(BSTR rhs) { - return E_NOTIMPL; // TODO + return Outer()->SetProperty(Outer()->m_KeyboardLayoutString, rhs); }
virtual STDMETHODIMP IMsTscAdvancedSettings::put_PluginDlls(BSTR rhs) @@ -1135,7 +1309,7 @@ return Outer()->SetProperty(Outer()->m_ContainerHandledFullScreen, pContainerHandledFullScreen); }
- virtual STDMETHODIMP IMsTscAdvancedSettings::get_ContainerHandledFullScreen(long * pContainerHandledFullScreen) + virtual STDMETHODIMP IMsTscAdvancedSettings::get_ContainerHandledFullScreen(long * pContainerHandledFullScreen) const { return Outer()->GetProperty(Outer()->m_ContainerHandledFullScreen, pContainerHandledFullScreen); } @@ -1145,7 +1319,7 @@ return Outer()->SetProperty(Outer()->m_DisableRdpdr, pDisableRdpdr); }
- virtual STDMETHODIMP IMsTscAdvancedSettings::get_DisableRdpdr(long * pDisableRdpdr) + virtual STDMETHODIMP IMsTscAdvancedSettings::get_DisableRdpdr(long * pDisableRdpdr) const { return Outer()->GetProperty(Outer()->m_DisableRdpdr, pDisableRdpdr); } @@ -1156,7 +1330,7 @@ return S_FALSE; }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SmoothScroll(long * psmoothScroll) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SmoothScroll(long * psmoothScroll) const { return S_FALSE; } @@ -1166,7 +1340,7 @@ return Outer()->SetProperty(Outer()->m_AcceleratorPassthrough, pacceleratorPassthrough); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_AcceleratorPassthrough(long * pacceleratorPassthrough) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_AcceleratorPassthrough(long * pacceleratorPassthrough) const { return Outer()->GetProperty(Outer()->m_AcceleratorPassthrough, pacceleratorPassthrough); } @@ -1176,7 +1350,7 @@ return Outer()->SetProperty(Outer()->m_ShadowBitmap, pshadowBitmap); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ShadowBitmap(long * pshadowBitmap) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ShadowBitmap(long * pshadowBitmap) const { return Outer()->GetProperty(Outer()->m_ShadowBitmap, pshadowBitmap); } @@ -1187,7 +1361,7 @@ return Outer()->SetProperty(Outer()->m_TransportType, ptransportType); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_TransportType(long * ptransportType) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_TransportType(long * ptransportType) const { // Reserved return Outer()->GetProperty(Outer()->m_TransportType, ptransportType); @@ -1199,7 +1373,7 @@ return Outer()->SetProperty(Outer()->m_SasSequence, psasSequence); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SasSequence(long * psasSequence) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SasSequence(long * psasSequence) const { // Reserved return Outer()->GetProperty(Outer()->m_SasSequence, psasSequence); @@ -1210,7 +1384,7 @@ return Outer()->SetProperty(Outer()->m_EncryptionEnabled, pencryptionEnabled); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EncryptionEnabled(long * pencryptionEnabled) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EncryptionEnabled(long * pencryptionEnabled) const { return Outer()->GetProperty(Outer()->m_EncryptionEnabled, pencryptionEnabled); } @@ -1220,7 +1394,7 @@ return Outer()->SetProperty(Outer()->m_DedicatedTerminal, pdedicatedTerminal); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DedicatedTerminal(long * pdedicatedTerminal) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DedicatedTerminal(long * pdedicatedTerminal) const { return Outer()->GetProperty(Outer()->m_DedicatedTerminal, pdedicatedTerminal); } @@ -1233,7 +1407,7 @@ return Outer()->SetProperty(Outer()->m_RDPPort, prdpPort); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RDPPort(long * prdpPort) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RDPPort(long * prdpPort) const { return Outer()->GetProperty(Outer()->m_RDPPort, prdpPort); } @@ -1243,7 +1417,7 @@ return S_FALSE; // TBD? implement? }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EnableMouse(long * penableMouse) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EnableMouse(long * penableMouse) const { return S_FALSE; // TBD? implement? } @@ -1253,7 +1427,7 @@ return Outer()->SetProperty(Outer()->m_DisableCtrlAltDel, pdisableCtrlAltDel); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DisableCtrlAltDel(long * pdisableCtrlAltDel) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DisableCtrlAltDel(long * pdisableCtrlAltDel) const { return Outer()->GetProperty(Outer()->m_DisableCtrlAltDel, pdisableCtrlAltDel); } @@ -1263,7 +1437,7 @@ return Outer()->SetProperty(Outer()->m_EnableWindowsKey, penableWindowsKey); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EnableWindowsKey(long * penableWindowsKey) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EnableWindowsKey(long * penableWindowsKey) const { return Outer()->GetProperty(Outer()->m_EnableWindowsKey, penableWindowsKey); } @@ -1273,7 +1447,7 @@ return Outer()->SetProperty(Outer()->m_DoubleClickDetect, pdoubleClickDetect); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DoubleClickDetect(long * pdoubleClickDetect) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DoubleClickDetect(long * pdoubleClickDetect) const { return Outer()->GetProperty(Outer()->m_DoubleClickDetect, pdoubleClickDetect); } @@ -1283,7 +1457,7 @@ return Outer()->SetProperty(Outer()->m_MaximizeShell, pmaximizeShell); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_MaximizeShell(long * pmaximizeShell) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_MaximizeShell(long * pmaximizeShell) const { return Outer()->GetProperty(Outer()->m_MaximizeShell, pmaximizeShell); } @@ -1293,7 +1467,7 @@ return Outer()->SetProperty(Outer()->m_HotKeyFullScreen, photKeyFullScreen); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyFullScreen(long * photKeyFullScreen) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyFullScreen(long * photKeyFullScreen) const { return Outer()->GetProperty(Outer()->m_HotKeyFullScreen, photKeyFullScreen); } @@ -1303,7 +1477,7 @@ return Outer()->SetProperty(Outer()->m_HotKeyCtrlEsc, photKeyCtrlEsc); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyCtrlEsc(long * photKeyCtrlEsc) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyCtrlEsc(long * photKeyCtrlEsc) const { return Outer()->GetProperty(Outer()->m_HotKeyCtrlEsc, photKeyCtrlEsc); } @@ -1313,7 +1487,7 @@ return Outer()->SetProperty(Outer()->m_HotKeyAltEsc, photKeyAltEsc); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltEsc(long * photKeyAltEsc) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltEsc(long * photKeyAltEsc) const { return Outer()->GetProperty(Outer()->m_HotKeyAltEsc, photKeyAltEsc); } @@ -1323,7 +1497,7 @@ return Outer()->SetProperty(Outer()->m_HotKeyAltTab, photKeyAltTab); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltTab(long * photKeyAltTab) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltTab(long * photKeyAltTab) const { return Outer()->GetProperty(Outer()->m_HotKeyAltTab, photKeyAltTab); } @@ -1333,7 +1507,7 @@ return Outer()->SetProperty(Outer()->m_HotKeyAltShiftTab, photKeyAltShiftTab); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltShiftTab(long * photKeyAltShiftTab) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltShiftTab(long * photKeyAltShiftTab) const { return Outer()->GetProperty(Outer()->m_HotKeyAltShiftTab, photKeyAltShiftTab); } @@ -1343,7 +1517,7 @@ return Outer()->SetProperty(Outer()->m_HotKeyAltSpace, photKeyAltSpace); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltSpace(long * photKeyAltSpace) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltSpace(long * photKeyAltSpace) const { return Outer()->GetProperty(Outer()->m_HotKeyAltSpace, photKeyAltSpace); } @@ -1353,7 +1527,7 @@ return Outer()->SetProperty(Outer()->m_HotKeyCtrlAltDel, photKeyCtrlAltDel); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyCtrlAltDel(long * photKeyCtrlAltDel) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyCtrlAltDel(long * photKeyCtrlAltDel) const { return Outer()->GetProperty(Outer()->m_HotKeyCtrlAltDel, photKeyCtrlAltDel); } @@ -1363,7 +1537,7 @@ return S_FALSE; }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_orderDrawThreshold(long * porderDrawThreshold) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_orderDrawThreshold(long * porderDrawThreshold) const { return S_FALSE; } @@ -1377,7 +1551,7 @@ return Outer()->SetProperty(Outer()->m_BitmapCacheSize, pbitmapCacheSize); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapCacheSize(long * pbitmapCacheSize) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapCacheSize(long * pbitmapCacheSize) const { return Outer()->GetProperty(Outer()->m_BitmapCacheSize, pbitmapCacheSize); } @@ -1390,7 +1564,7 @@ return Outer()->SetProperty(Outer()->m_BitmapVirtualCacheSize, pbitmapVirtualCacheSize); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCacheSize(long * pbitmapVirtualCacheSize) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCacheSize(long * pbitmapVirtualCacheSize) const { return Outer()->GetProperty(Outer()->m_BitmapVirtualCacheSize, pbitmapVirtualCacheSize); } @@ -1400,7 +1574,7 @@ return S_FALSE; }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ScaleBitmapCachesByBPP(long * pbScale) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ScaleBitmapCachesByBPP(long * pbScale) const { return S_FALSE; } @@ -1410,7 +1584,7 @@ return Outer()->SetProperty(Outer()->m_NumBitmapCaches, pnumBitmapCaches); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_NumBitmapCaches(long * pnumBitmapCaches) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_NumBitmapCaches(long * pnumBitmapCaches) const { return Outer()->GetProperty(Outer()->m_NumBitmapCaches, pnumBitmapCaches); } @@ -1420,7 +1594,7 @@ return Outer()->SetProperty(Outer()->m_CachePersistenceActive, pcachePersistenceActive); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_CachePersistenceActive(long * pcachePersistenceActive) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_CachePersistenceActive(long * pcachePersistenceActive) const { return Outer()->GetProperty(Outer()->m_CachePersistenceActive, pcachePersistenceActive); } @@ -1435,7 +1609,7 @@ return Outer()->SetProperty(Outer()->m_brushSupportLevel, pbrushSupportLevel); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_brushSupportLevel(long * pbrushSupportLevel) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_brushSupportLevel(long * pbrushSupportLevel) const { return Outer()->GetProperty(Outer()->m_brushSupportLevel, pbrushSupportLevel); } @@ -1446,7 +1620,7 @@ return S_FALSE; }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_minInputSendInterval(long * pminInputSendInterval) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_minInputSendInterval(long * pminInputSendInterval) const { // TODO return S_FALSE; @@ -1458,7 +1632,7 @@ return S_FALSE; }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_InputEventsAtOnce(long * pinputEventsAtOnce) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_InputEventsAtOnce(long * pinputEventsAtOnce) const { // TODO return S_FALSE; @@ -1470,7 +1644,7 @@ return S_FALSE; }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_maxEventCount(long * pmaxEventCount) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_maxEventCount(long * pmaxEventCount) const { // TODO return S_FALSE; @@ -1484,7 +1658,7 @@ return Outer()->SetProperty(Outer()->m_keepAliveInternal, pkeepAliveInterval); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_keepAliveInterval(long * pkeepAliveInterval) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_keepAliveInterval(long * pkeepAliveInterval) const { return Outer()->GetProperty(Outer()->m_keepAliveInternal, pkeepAliveInterval); } @@ -1497,7 +1671,7 @@ return Outer()->SetProperty(Outer()->m_shutdownTimeout, pshutdownTimeout); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_shutdownTimeout(long * pshutdownTimeout) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_shutdownTimeout(long * pshutdownTimeout) const { return Outer()->GetProperty(Outer()->m_shutdownTimeout, pshutdownTimeout); } @@ -1510,7 +1684,7 @@ return Outer()->SetProperty(Outer()->m_overallConnectionTimeout, poverallConnectionTimeout); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_overallConnectionTimeout(long * poverallConnectionTimeout) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_overallConnectionTimeout(long * poverallConnectionTimeout) const { return Outer()->GetProperty(Outer()->m_overallConnectionTimeout, poverallConnectionTimeout); } @@ -1523,7 +1697,7 @@ return Outer()->SetProperty(Outer()->m_singleConnectionTimeout, psingleConnectionTimeout); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_singleConnectionTimeout(long * psingleConnectionTimeout) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_singleConnectionTimeout(long * psingleConnectionTimeout) const { return Outer()->GetProperty(Outer()->m_singleConnectionTimeout, psingleConnectionTimeout); } @@ -1533,7 +1707,7 @@ return E_NOTIMPL; }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardType(long * pkeyboardType) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardType(long * pkeyboardType) const { return E_NOTIMPL; } @@ -1543,7 +1717,7 @@ return E_NOTIMPL; }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardSubType(long * pkeyboardSubType) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardSubType(long * pkeyboardSubType) const { return E_NOTIMPL; } @@ -1553,7 +1727,7 @@ return E_NOTIMPL; }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardFunctionKey(long * pkeyboardFunctionKey) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardFunctionKey(long * pkeyboardFunctionKey) const { return E_NOTIMPL; } @@ -1563,7 +1737,7 @@ return E_NOTIMPL; }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_WinceFixedPalette(long * pwinceFixedPalette) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_WinceFixedPalette(long * pwinceFixedPalette) const { return E_NOTIMPL; } @@ -1573,7 +1747,7 @@ return Outer()->SetProperty(Outer()->m_ConnectToServerConsole, pConnectToConsole); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ConnectToServerConsole(VARIANT_BOOL * pConnectToConsole) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ConnectToServerConsole(VARIANT_BOOL * pConnectToConsole) const { return Outer()->GetProperty(Outer()->m_ConnectToServerConsole, pConnectToConsole); } @@ -1583,7 +1757,7 @@ return put_BitmapPeristence(pbitmapPersistence); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapPersistence(long * pbitmapPersistence) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapPersistence(long * pbitmapPersistence) const { return get_BitmapPeristence(pbitmapPersistence); } @@ -1596,7 +1770,7 @@ return Outer()->SetProperty(Outer()->m_MinutesToIdleTimeout, pminutesToIdleTimeout); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_MinutesToIdleTimeout(long * pminutesToIdleTimeout) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_MinutesToIdleTimeout(long * pminutesToIdleTimeout) const { return Outer()->GetProperty(Outer()->m_MinutesToIdleTimeout, pminutesToIdleTimeout); } @@ -1606,7 +1780,7 @@ return Outer()->SetProperty(Outer()->m_SmartSizing, pfSmartSizing); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SmartSizing(VARIANT_BOOL * pfSmartSizing) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SmartSizing(VARIANT_BOOL * pfSmartSizing) const { return Outer()->GetProperty(Outer()->m_SmartSizing, pfSmartSizing); } @@ -1616,7 +1790,7 @@ return Outer()->SetProperty(Outer()->m_RdpdrLocalPrintingDocName, pLocalPrintingDocName); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrLocalPrintingDocName(BSTR * pLocalPrintingDocName) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrLocalPrintingDocName(BSTR * pLocalPrintingDocName) const { return Outer()->GetProperty(Outer()->m_RdpdrLocalPrintingDocName, pLocalPrintingDocName); } @@ -1626,7 +1800,7 @@ return Outer()->SetProperty(Outer()->m_RdpdrClipCleanTempDirString, clipCleanTempDirString); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrClipCleanTempDirString(BSTR * clipCleanTempDirString) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrClipCleanTempDirString(BSTR * clipCleanTempDirString) const { return Outer()->GetProperty(Outer()->m_RdpdrClipCleanTempDirString, clipCleanTempDirString); } @@ -1636,7 +1810,7 @@ return Outer()->SetProperty(Outer()->m_RdpdrClipPasteInfoString, clipPasteInfoString); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrClipPasteInfoString(BSTR * clipPasteInfoString) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrClipPasteInfoString(BSTR * clipPasteInfoString) const { return Outer()->GetProperty(Outer()->m_RdpdrClipPasteInfoString, clipPasteInfoString); } @@ -1654,7 +1828,7 @@ return Outer()->SetProperty(Outer()->m_DisplayConnectionBar, pDisplayConnectionBar); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DisplayConnectionBar(VARIANT_BOOL * pDisplayConnectionBar) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DisplayConnectionBar(VARIANT_BOOL * pDisplayConnectionBar) const { return Outer()->GetProperty(Outer()->m_DisplayConnectionBar, pDisplayConnectionBar); } @@ -1667,7 +1841,7 @@ return Outer()->SetProperty(Outer()->m_PinConnectionBar, pPinConnectionBar); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_PinConnectionBar(VARIANT_BOOL * pPinConnectionBar) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_PinConnectionBar(VARIANT_BOOL * pPinConnectionBar) const { return Outer()->GetProperty(Outer()->m_PinConnectionBar, pPinConnectionBar); } @@ -1677,7 +1851,7 @@ return Outer()->SetProperty(Outer()->m_GrabFocusOnConnect, pfGrabFocusOnConnect); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_GrabFocusOnConnect(VARIANT_BOOL * pfGrabFocusOnConnect) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_GrabFocusOnConnect(VARIANT_BOOL * pfGrabFocusOnConnect) const { return Outer()->GetProperty(Outer()->m_GrabFocusOnConnect, pfGrabFocusOnConnect); } @@ -1687,7 +1861,7 @@ return Outer()->SetProperty(Outer()->m_LoadBalanceInfo, pLBInfo); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_LoadBalanceInfo(BSTR * pLBInfo) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_LoadBalanceInfo(BSTR * pLBInfo) const { return Outer()->GetProperty(Outer()->m_LoadBalanceInfo, pLBInfo); } @@ -1697,7 +1871,7 @@ return Outer()->SetProperty(Outer()->m_RedirectDrives, pRedirectDrives); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectDrives(VARIANT_BOOL * pRedirectDrives) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectDrives(VARIANT_BOOL * pRedirectDrives) const { return Outer()->GetProperty(Outer()->m_RedirectDrives, pRedirectDrives); } @@ -1707,7 +1881,7 @@ return Outer()->SetProperty(Outer()->m_RedirectPrinters, pRedirectPrinters); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectPrinters(VARIANT_BOOL * pRedirectPrinters) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectPrinters(VARIANT_BOOL * pRedirectPrinters) const { return Outer()->GetProperty(Outer()->m_RedirectPrinters, pRedirectPrinters); } @@ -1717,7 +1891,7 @@ return Outer()->SetProperty(Outer()->m_RedirectPorts, pRedirectPorts); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectPorts(VARIANT_BOOL * pRedirectPorts) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectPorts(VARIANT_BOOL * pRedirectPorts) const { return Outer()->GetProperty(Outer()->m_RedirectPorts, pRedirectPorts); } @@ -1727,7 +1901,7 @@ return Outer()->SetProperty(Outer()->m_RedirectSmartCards, pRedirectSmartCards); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectSmartCards(VARIANT_BOOL * pRedirectSmartCards) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectSmartCards(VARIANT_BOOL * pRedirectSmartCards) const { return Outer()->GetProperty(Outer()->m_RedirectSmartCards, pRedirectSmartCards); } @@ -1740,7 +1914,7 @@ return Outer()->SetProperty(Outer()->m_BitmapVirtualCache16BppSize, pBitmapVirtualCache16BppSize); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCache16BppSize(long * pBitmapVirtualCache16BppSize) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCache16BppSize(long * pBitmapVirtualCache16BppSize) const { return Outer()->GetProperty(Outer()->m_BitmapVirtualCache16BppSize, pBitmapVirtualCache16BppSize); } @@ -1753,7 +1927,7 @@ return Outer()->SetProperty(Outer()->m_BitmapVirtualCache24BppSize, pBitmapVirtualCache24BppSize); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCache24BppSize(long * pBitmapVirtualCache24BppSize) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCache24BppSize(long * pBitmapVirtualCache24BppSize) const { return Outer()->GetProperty(Outer()->m_BitmapVirtualCache24BppSize, pBitmapVirtualCache24BppSize); } @@ -1763,7 +1937,7 @@ return Outer()->SetProperty(Outer()->m_PerformanceFlags, pDisableList); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_PerformanceFlags(long * pDisableList) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_PerformanceFlags(long * pDisableList) const { return Outer()->GetProperty(Outer()->m_PerformanceFlags, pDisableList); } @@ -1779,13 +1953,13 @@ return Outer()->SetProperty(Outer()->m_NotifyTSPublicKey, pfNotify); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_NotifyTSPublicKey(VARIANT_BOOL * 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) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_CanAutoReconnect(VARIANT_BOOL * pfCanAutoReconnect) const { return E_NOTIMPL; // TODO } @@ -1795,7 +1969,7 @@ return Outer()->SetProperty(Outer()->m_EnableAutoReconnect, pfEnableAutoReconnect); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_EnableAutoReconnect(VARIANT_BOOL * pfEnableAutoReconnect) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_EnableAutoReconnect(VARIANT_BOOL * pfEnableAutoReconnect) const { return Outer()->GetProperty(Outer()->m_EnableAutoReconnect, pfEnableAutoReconnect); } @@ -1808,7 +1982,7 @@ return Outer()->SetProperty(Outer()->m_MaxReconnectAttempts, pMaxReconnectAttempts); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_MaxReconnectAttempts(long * pMaxReconnectAttempts) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_MaxReconnectAttempts(long * pMaxReconnectAttempts) const { return Outer()->GetProperty(Outer()->m_MaxReconnectAttempts, pMaxReconnectAttempts); } @@ -1819,7 +1993,7 @@ return Outer()->SetProperty(Outer()->m_ConnectionBarShowMinimizeButton, pfShowMinimize); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::get_ConnectionBarShowMinimizeButton(VARIANT_BOOL * pfShowMinimize) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::get_ConnectionBarShowMinimizeButton(VARIANT_BOOL * pfShowMinimize) const { return Outer()->GetProperty(Outer()->m_ConnectionBarShowMinimizeButton, pfShowMinimize); } @@ -1829,7 +2003,7 @@ return Outer()->SetProperty(Outer()->m_ConnectionBarShowRestoreButton, pfShowRestore); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::get_ConnectionBarShowRestoreButton(VARIANT_BOOL * pfShowRestore) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::get_ConnectionBarShowRestoreButton(VARIANT_BOOL * pfShowRestore) const { return Outer()->GetProperty(Outer()->m_ConnectionBarShowRestoreButton, pfShowRestore); } @@ -1841,7 +2015,7 @@ return Outer()->SetProperty(Outer()->m_AuthenticationLevel, puiAuthLevel); }
- virtual STDMETHODIMP IMsRdpClientAdvancedSettings4::get_AuthenticationLevel(unsigned int * puiAuthLevel) + virtual STDMETHODIMP IMsRdpClientAdvancedSettings4::get_AuthenticationLevel(unsigned int * puiAuthLevel) const { return Outer()->GetProperty(Outer()->m_AuthenticationLevel, puiAuthLevel); } @@ -1858,7 +2032,7 @@ /* Secured settings wrapper */ friend class SecuredSettings;
- class SecuredSettings sealed: public MSTSCLib::IMsRdpClientSecuredSettings + class SecuredSettings SEALED_: public MSTSCLib::IMsRdpClientSecuredSettings { private: RdpClient * Outer() @@ -1883,6 +2057,8 @@
if(FAILED(hr)) return hr; + + assert(MSTSCLib::IID_IMsRdpClientSecuredSettings == MSTSCLib_Redist::IID_IMsRdpClientSecuredSettings);
hr = Outer()->m_typeLib->GetTypeInfoOfGuid(MSTSCLib::IID_IMsRdpClientSecuredSettings, &m_dispTypeInfo);
@@ -1991,7 +2167,7 @@ return Outer()->SetProperty(Outer()->m_StartProgram, pStartProgram); }
- virtual STDMETHODIMP IMsTscSecuredSettings::get_StartProgram(BSTR * pStartProgram) + virtual STDMETHODIMP IMsTscSecuredSettings::get_StartProgram(BSTR * pStartProgram) const { return Outer()->GetProperty(Outer()->m_StartProgram, pStartProgram); } @@ -2001,7 +2177,7 @@ return Outer()->SetProperty(Outer()->m_WorkDir, pWorkDir); }
- virtual STDMETHODIMP IMsTscSecuredSettings::get_WorkDir(BSTR * pWorkDir) + virtual STDMETHODIMP IMsTscSecuredSettings::get_WorkDir(BSTR * pWorkDir) const { return Outer()->GetProperty(Outer()->m_WorkDir, pWorkDir); } @@ -2011,7 +2187,7 @@ return Outer()->put_FullScreen(!!pfFullScreen); }
- virtual STDMETHODIMP IMsTscSecuredSettings::get_FullScreen(long * pfFullScreen) + virtual STDMETHODIMP IMsTscSecuredSettings::get_FullScreen(long * pfFullScreen) const { return Outer()->GetProperty(Outer()->m_FullScreen, pfFullScreen); } @@ -2025,7 +2201,7 @@ return Outer()->SetProperty(Outer()->m_KeyboardHookMode, pkeyboardHookMode); }
- virtual STDMETHODIMP IMsRdpClientSecuredSettings::get_KeyboardHookMode(long * pkeyboardHookMode) + virtual STDMETHODIMP IMsRdpClientSecuredSettings::get_KeyboardHookMode(long * pkeyboardHookMode) const { return Outer()->GetProperty(Outer()->m_KeyboardHookMode, pkeyboardHookMode); } @@ -2038,7 +2214,7 @@ return Outer()->SetProperty(Outer()->m_AudioRedirectionMode, pAudioRedirectionMode); }
- virtual STDMETHODIMP IMsRdpClientSecuredSettings::get_AudioRedirectionMode(long * pAudioRedirectionMode) + virtual STDMETHODIMP IMsRdpClientSecuredSettings::get_AudioRedirectionMode(long * pAudioRedirectionMode) const { return Outer()->GetProperty(Outer()->m_AudioRedirectionMode, pAudioRedirectionMode); } @@ -2061,11 +2237,24 @@ if(m_typeLib) return S_OK;
+ // Get the DLL name of the ActiveX control WCHAR szPath[MAX_PATH + 1]; - - if(GetModuleFileNameW(GetCurrentModule(), szPath, ARRAYSIZE(szPath) - 1) == 0) + 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<WCHAR>(L'0' + m_typeLibIndex); + szPath[cchPathLen + 2] = 0; + + // Load the type library HRESULT hr = LoadTypeLibEx(szPath, REGKIND_NONE, &m_typeLib);
if(FAILED(hr)) @@ -2085,6 +2274,8 @@
if(FAILED(hr)) return hr; + + assert(MSTSCLib::IID_IMsRdpClient4 == MSTSCLib_Redist::IID_IMsRdpClient4);
hr = m_typeLib->GetTypeInfoOfGuid(MSTSCLib::IID_IMsRdpClient4, &m_dispTypeInfo);
@@ -2149,28 +2340,41 @@
void ProtocolLoop() { + WCHAR hostname[MAX_COMPUTERNAME_LENGTH + 1]; + DWORD hostnameLen = ARRAYSIZE(hostname); + + if(!GetComputerNameW(hostname, &hostnameLen)) + hostname[0] = 0; + FireConnecting();
- uint32 flags = 0; // TODO + 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;
// Initial connection - rdp_connect + BOOL disconnected = rdp_connect ( &m_protocolState, - NULL, // TODO server + m_Server, flags, m_UserName, m_Domain, m_ClearTextPassword, m_StartProgram, m_WorkDir, - NULL, // TODO hostname - NULL // TODO cookie + hostname, + m_LoadBalanceInfo );
- BOOL disconnected = False; - - do + while(!disconnected) { BOOL deactivated = False; uint32 extendedDisconnectReason = 0; @@ -2206,6 +2410,7 @@ long totalReconnections = 0;
// Reconnection + // BUGBUG: reconnection semantics may not be entirely accurate do { ++ totalReconnections; @@ -2243,20 +2448,19 @@ success = rdp_reconnect ( &m_protocolState, - NULL, // TODO + m_Server, flags, m_UserName, m_Domain, m_ClearTextPassword, m_StartProgram, m_WorkDir, - NULL, // TODO - NULL // TODO + hostname, + m_LoadBalanceInfo ); } while(!success); } - while(!disconnected);
// Disconnected // TODO: clean up protocol state, clear "connected" flag @@ -2264,10 +2468,22 @@ }
public: + /* Startup initialization */ + static BOOL Startup() + { + // TODO: register control window class here + return TRUE; + } + + static void Shutdown() + { + // TODO + } + /* Class factory */ - static HRESULT CreateInstance(REFCLSID rclsid, IUnknown * punkOuter, REFIID riid, void ** ppObj) - { - RdpClient * obj = new RdpClient(rclsid, punkOuter); + 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; @@ -3207,10 +3423,11 @@ /* 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) + virtual STDMETHODIMP IMsTscAx::get_Server(BSTR * pServer) const { return GetProperty(m_Server, pServer); } @@ -3220,7 +3437,7 @@ return SetProperty(m_Domain, pDomain); }
- virtual STDMETHODIMP IMsTscAx::get_Domain(BSTR * pDomain) + virtual STDMETHODIMP IMsTscAx::get_Domain(BSTR * pDomain) const { return GetProperty(m_Domain, pDomain); } @@ -3230,7 +3447,7 @@ return SetProperty(m_UserName, pUserName); }
- virtual STDMETHODIMP IMsTscAx::get_UserName(BSTR * pUserName) + virtual STDMETHODIMP IMsTscAx::get_UserName(BSTR * pUserName) const { return GetProperty(m_UserName, pUserName); } @@ -3240,7 +3457,7 @@ return SetProperty(m_DisconnectedText, pDisconnectedText); }
- virtual STDMETHODIMP IMsTscAx::get_DisconnectedText(BSTR * pDisconnectedText) + virtual STDMETHODIMP IMsTscAx::get_DisconnectedText(BSTR * pDisconnectedText) const { return GetProperty(m_DisconnectedText, pDisconnectedText); } @@ -3250,12 +3467,12 @@ return SetProperty(m_ConnectingText, pConnectingText); }
- virtual STDMETHODIMP IMsTscAx::get_ConnectingText(BSTR * pConnectingText) + virtual STDMETHODIMP IMsTscAx::get_ConnectingText(BSTR * pConnectingText) const { return GetProperty(m_ConnectingText, pConnectingText); }
- virtual STDMETHODIMP IMsTscAx::get_Connected(short * pIsConnected) + virtual STDMETHODIMP IMsTscAx::get_Connected(short * pIsConnected) const { return GetProperty(m_Connected, pIsConnected); } @@ -3268,7 +3485,7 @@ return SetProperty(m_DesktopWidth, pVal); }
- virtual STDMETHODIMP IMsTscAx::get_DesktopWidth(long * pVal) + virtual STDMETHODIMP IMsTscAx::get_DesktopWidth(long * pVal) const { return GetProperty(m_DesktopWidth, pVal); } @@ -3281,7 +3498,7 @@ return SetProperty(m_DesktopHeight, pVal); }
- virtual STDMETHODIMP IMsTscAx::get_DesktopHeight(long * pVal) + virtual STDMETHODIMP IMsTscAx::get_DesktopHeight(long * pVal) const { return GetProperty(m_DesktopHeight, pVal); } @@ -3291,28 +3508,28 @@ return SetProperty(m_StartConnected, pfStartConnected); }
- virtual STDMETHODIMP IMsTscAx::get_StartConnected(long * pfStartConnected) + virtual STDMETHODIMP IMsTscAx::get_StartConnected(long * pfStartConnected) const { return GetProperty(m_StartConnected, pfStartConnected); }
- virtual STDMETHODIMP IMsTscAx::get_HorizontalScrollBarVisible(long * pfHScrollVisible) + virtual STDMETHODIMP IMsTscAx::get_HorizontalScrollBarVisible(long * pfHScrollVisible) const { return GetProperty(m_HorizontalScrollBarVisible, pfHScrollVisible); }
- virtual STDMETHODIMP IMsTscAx::get_VerticalScrollBarVisible(long * pfVScrollVisible) + virtual STDMETHODIMP IMsTscAx::get_VerticalScrollBarVisible(long * pfVScrollVisible) const { return GetProperty(m_VerticalScrollBarVisible, pfVScrollVisible); }
virtual STDMETHODIMP IMsTscAx::put_FullScreenTitle(BSTR rhs) { - // TODO: limit length - return SetProperty(m_FullScreenTitle, rhs); - } - - virtual STDMETHODIMP IMsTscAx::get_CipherStrength(long * pCipherStrength) + // TODO + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscAx::get_CipherStrength(long * pCipherStrength) const { if(pCipherStrength == NULL) return E_INVALIDARG; @@ -3321,7 +3538,7 @@ return S_OK; }
- virtual STDMETHODIMP IMsTscAx::get_Version(BSTR * pVersion) + virtual STDMETHODIMP IMsTscAx::get_Version(BSTR * pVersion) const { if(pVersion == NULL) return E_INVALIDARG; @@ -3335,23 +3552,23 @@ return S_OK; }
- virtual STDMETHODIMP IMsTscAx::get_SecuredSettingsEnabled(long * pSecuredSettingsEnabled) + 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) + virtual STDMETHODIMP IMsTscAx::get_SecuredSettings(MSTSCLib::IMsTscSecuredSettings ** ppSecuredSettings) const { return GetSecuredSettings(ppSecuredSettings); }
- virtual STDMETHODIMP IMsTscAx::get_AdvancedSettings(MSTSCLib::IMsTscAdvancedSettings ** ppAdvSettings) + virtual STDMETHODIMP IMsTscAx::get_AdvancedSettings(MSTSCLib::IMsTscAdvancedSettings ** ppAdvSettings) const { return GetAdvancedSettings(ppAdvSettings); }
- virtual STDMETHODIMP IMsTscAx::get_Debugger(MSTSCLib::IMsTscDebug ** ppDebugger) + virtual STDMETHODIMP IMsTscAx::get_Debugger(MSTSCLib::IMsTscDebug ** ppDebugger) const { return E_NOTIMPL; } @@ -3365,8 +3582,6 @@
// TODO: if the protocol thread is waiting to reconnect, wake it up
- // TODO: initialize plugin DLLs/channels - HRESULT hr;
if(m_controlWindow == NULL) @@ -3379,7 +3594,81 @@
for(;;) { - // TODO: initialize m_protocolState + // TODO: initialize plugin DLLs/channels + + 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); @@ -3438,22 +3727,22 @@ return SetProperty(m_ColorDepth, pcolorDepth); }
- virtual STDMETHODIMP IMsRdpClient::get_ColorDepth(long * pcolorDepth) + virtual STDMETHODIMP IMsRdpClient::get_ColorDepth(long * pcolorDepth) const { return GetProperty(m_ColorDepth, pcolorDepth); }
- virtual STDMETHODIMP IMsRdpClient::get_AdvancedSettings2(MSTSCLib::IMsRdpClientAdvancedSettings ** ppAdvSettings) + virtual STDMETHODIMP IMsRdpClient::get_AdvancedSettings2(MSTSCLib::IMsRdpClientAdvancedSettings ** ppAdvSettings) const { return GetAdvancedSettings(ppAdvSettings); }
- virtual STDMETHODIMP IMsRdpClient::get_SecuredSettings2(MSTSCLib::IMsRdpClientSecuredSettings ** ppSecuredSettings) + virtual STDMETHODIMP IMsRdpClient::get_SecuredSettings2(MSTSCLib::IMsRdpClientSecuredSettings ** ppSecuredSettings) const { return GetSecuredSettings(ppSecuredSettings); }
- virtual STDMETHODIMP IMsRdpClient::get_ExtendedDisconnectReason(MSTSCLib::ExtendedDisconnectReasonCode * pExtendedDisconnectReason) + virtual STDMETHODIMP IMsRdpClient::get_ExtendedDisconnectReason(MSTSCLib::ExtendedDisconnectReasonCode * pExtendedDisconnectReason) const { return GetProperty(m_ExtendedDisconnectReason, pExtendedDisconnectReason); } @@ -3470,7 +3759,7 @@ return E_NOTIMPL; }
- virtual STDMETHODIMP IMsRdpClient::get_FullScreen(VARIANT_BOOL * pfFullScreen) + virtual STDMETHODIMP IMsRdpClient::get_FullScreen(VARIANT_BOOL * pfFullScreen) const { return GetProperty(m_FullScreen, pfFullScreen); } @@ -3491,7 +3780,7 @@ }
/* IMsRdpClient2 */ - virtual STDMETHODIMP IMsRdpClient2::get_AdvancedSettings3(MSTSCLib::IMsRdpClientAdvancedSettings2 ** ppAdvSettings) + virtual STDMETHODIMP IMsRdpClient2::get_AdvancedSettings3(MSTSCLib::IMsRdpClientAdvancedSettings2 ** ppAdvSettings) const { return GetAdvancedSettings(ppAdvSettings); } @@ -3501,19 +3790,19 @@ return SetProperty(m_ConnectedStatusText, pConnectedStatusText); }
- virtual STDMETHODIMP IMsRdpClient2::get_ConnectedStatusText(BSTR * pConnectedStatusText) + virtual STDMETHODIMP IMsRdpClient2::get_ConnectedStatusText(BSTR * pConnectedStatusText) const { return GetProperty(m_ConnectedStatusText, pConnectedStatusText); }
/* IMsRdpClient3 */ - virtual STDMETHODIMP IMsRdpClient3::get_AdvancedSettings4(MSTSCLib::IMsRdpClientAdvancedSettings3 ** ppAdvSettings) + virtual STDMETHODIMP IMsRdpClient3::get_AdvancedSettings4(MSTSCLib::IMsRdpClientAdvancedSettings3 ** ppAdvSettings) const { return GetAdvancedSettings(ppAdvSettings); }
/* IMsRdpClient4 */ - virtual STDMETHODIMP IMsRdpClient4::get_AdvancedSettings5(MSTSCLib::IMsRdpClientAdvancedSettings4 ** ppAdvSettings5) + virtual STDMETHODIMP IMsRdpClient4::get_AdvancedSettings5(MSTSCLib::IMsRdpClientAdvancedSettings4 ** ppAdvSettings5) const { return GetAdvancedSettings(ppAdvSettings5); } @@ -3529,7 +3818,7 @@ return E_NOTIMPL; }
- virtual STDMETHODIMP IMsTscNonScriptable::get_PortablePassword(BSTR * pPortablePass) + virtual STDMETHODIMP IMsTscNonScriptable::get_PortablePassword(BSTR * pPortablePass) const { return E_NOTIMPL; } @@ -3539,7 +3828,7 @@ return E_NOTIMPL; }
- virtual STDMETHODIMP IMsTscNonScriptable::get_PortableSalt(BSTR * pPortableSalt) + virtual STDMETHODIMP IMsTscNonScriptable::get_PortableSalt(BSTR * pPortableSalt) const { return E_NOTIMPL; } @@ -3549,7 +3838,7 @@ return E_NOTIMPL; }
- virtual STDMETHODIMP IMsTscNonScriptable::get_BinaryPassword(BSTR * pBinaryPassword) + virtual STDMETHODIMP IMsTscNonScriptable::get_BinaryPassword(BSTR * pBinaryPassword) const { return E_NOTIMPL; } @@ -3559,7 +3848,7 @@ return E_NOTIMPL; }
- virtual STDMETHODIMP IMsTscNonScriptable::get_BinarySalt(BSTR * pSalt) + virtual STDMETHODIMP IMsTscNonScriptable::get_BinarySalt(BSTR * pSalt) const { return E_NOTIMPL; } @@ -3588,7 +3877,7 @@ return SetProperty(m_UIParentWindowHandle, phwndUIParentWindowHandle); }
- virtual STDMETHODIMP IMsRdpClientNonScriptable2::get_UIParentWindowHandle(HWND * phwndUIParentWindowHandle) + virtual STDMETHODIMP IMsRdpClientNonScriptable2::get_UIParentWindowHandle(HWND * phwndUIParentWindowHandle) const { return GetProperty(m_UIParentWindowHandle, phwndUIParentWindowHandle); } @@ -3601,9 +3890,10 @@ private: LONG m_refCount; CLSID m_classId; + unsigned m_libIndex;
public: - ClassFactory(REFCLSID rclsid): + ClassFactory(REFCLSID rclsid, unsigned libIndex): m_refCount(1), m_classId(rclsid) { @@ -3649,7 +3939,7 @@ if(pUnkOuter && riid != IID_IUnknown) return CLASS_E_NOAGGREGATION;
- return RdpClient::CreateInstance(m_classId, pUnkOuter, riid, ppvObject); + return RdpClient::CreateInstance(m_classId, m_libIndex, pUnkOuter, riid, ppvObject); }
virtual STDMETHODIMP LockServer(BOOL fLock) @@ -3668,17 +3958,30 @@
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 + 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); + ClassFactory * p = new ClassFactory(rclsid, libindex);
if(p == NULL) return E_OUTOFMEMORY; @@ -3704,6 +4007,39 @@ 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); + + InitCommonControls(); + + 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
Modified: trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient/... ============================================================================== --- trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj (original) +++ trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj Sun Aug 20 01:44:41 2006 @@ -62,7 +62,7 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="kernel32.lib user32.lib gdi32.lib ws2_32.lib libeay32.lib advapi32.lib msimg32.lib ole32.lib oleaut32.lib $(NoInherit)" + AdditionalDependencies="kernel32.lib user32.lib gdi32.lib ws2_32.lib libeay32.lib advapi32.lib msimg32.lib ole32.lib oleaut32.lib comctl32.lib $(NoInherit)" LinkIncremental="2" AdditionalLibraryDirectories=""C:\Documents and Settings\All Users\Documenti\openssl-0.9.8b\out32"" GenerateDebugInformation="true" @@ -139,7 +139,7 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="kernel32.lib user32.lib gdi32.lib ws2_32.lib libeay32.lib advapi32.lib msimg32.lib ole32.lib oleaut32.lib $(NoInherit)" + AdditionalDependencies="kernel32.lib user32.lib gdi32.lib ws2_32.lib libeay32.lib advapi32.lib msimg32.lib ole32.lib oleaut32.lib comctl32.lib $(NoInherit)" LinkIncremental="1" AdditionalLibraryDirectories=""C:\Documents and Settings\All Users\Documenti\openssl-0.9.8b\out32"" GenerateDebugInformation="true"
Modified: trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient/... ============================================================================== --- trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.h (original) +++ trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.h Sun Aug 20 01:44:41 2006 @@ -27,4 +27,6 @@ #include <ocidl.h> #include <objsafe.h>
+#include <commctrl.h> + // EOF
Modified: trunk/reactos/base/applications/tsclient/rdesktop/rdesktop.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient/... ============================================================================== --- trunk/reactos/base/applications/tsclient/rdesktop/rdesktop.h (original) +++ trunk/reactos/base/applications/tsclient/rdesktop/rdesktop.h Sun Aug 20 01:44:41 2006 @@ -163,34 +163,6 @@ sint16 previous; sint16 next; }; - -#if 0 -typedef struct _seamless_group -{ - Window wnd; - unsigned long id; - unsigned int refcnt; -} seamless_group; -typedef struct _seamless_window -{ - Window wnd; - unsigned long id; - unsigned long behind; - seamless_group *group; - int xoffset, yoffset; - int width, height; - int state; /* normal/minimized/maximized. */ - unsigned int desktop; - struct timeval *position_timer; - - BOOL outstanding_position; - unsigned int outpos_serial; - int outpos_xoffset, outpos_yoffset; - int outpos_width, outpos_height; - - struct _seamless_window *next; -} seamless_window; -#endif
/* holds the whole state of the RDP client */ struct rdpclient
Modified: trunk/reactos/base/applications/tsclient/rdesktop/rdp.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient/... ============================================================================== --- trunk/reactos/base/applications/tsclient/rdesktop/rdp.c (original) +++ trunk/reactos/base/applications/tsclient/rdesktop/rdp.c Sun Aug 20 01:44:41 2006 @@ -35,7 +35,7 @@
/* Receive an RDP packet */ static STREAM -rdp_recv(RDPCLIENT * This, uint8 * type) // EXITS +rdp_recv(RDPCLIENT * This, uint8 * type) { static STREAM rdp_s; // FIXME HORROR uint16 length, pdu_type; @@ -948,7 +948,7 @@
/* Respond to a demand active PDU */ static BOOL -process_demand_active(RDPCLIENT * This, STREAM s) // EXITS +process_demand_active(RDPCLIENT * This, STREAM s) { uint8 type; uint16 len_src_descriptor, len_combined_caps; @@ -1081,7 +1081,7 @@
/* Process bitmap updates */ void -process_bitmap_updates(RDPCLIENT * This, STREAM s) // EXITS +process_bitmap_updates(RDPCLIENT * This, STREAM s) { uint16 num_updates; uint16 left, top, right, bottom, width, height; @@ -1161,7 +1161,7 @@
/* Process a palette update */ void -process_palette(RDPCLIENT * This, STREAM s) // EXITS +process_palette(RDPCLIENT * This, STREAM s) { COLOURENTRY *entry; COLOURMAP map; @@ -1242,7 +1242,7 @@
/* Process data PDU */ static BOOL -process_data_pdu(RDPCLIENT * This, STREAM s, uint32 * ext_disc_reason) // EXITS +process_data_pdu(RDPCLIENT * This, STREAM s, uint32 * ext_disc_reason) { uint8 data_pdu_type; uint8 ctype; @@ -1397,7 +1397,7 @@
/* used in uiports and rdp_main_loop, processes the rdp packets waiting */ BOOL -rdp_loop(RDPCLIENT * This, BOOL * deactivated, uint32 * ext_disc_reason) // EXITS +rdp_loop(RDPCLIENT * This, BOOL * deactivated, uint32 * ext_disc_reason) { uint8 type; BOOL disc = False; /* True when a disconnect PDU was received */ @@ -1441,7 +1441,7 @@ /* Establish a connection up to the RDP layer */ BOOL rdp_connect(RDPCLIENT * This, char *server, uint32 flags, wchar_t *username, wchar_t *domain, wchar_t *password, - wchar_t *command, wchar_t *directory, wchar_t *hostname, char *cookie) // EXITS + wchar_t *command, wchar_t *directory, wchar_t *hostname, char *cookie) { if (!sec_connect(This, server, hostname, cookie)) return False; @@ -1453,7 +1453,7 @@ /* Establish a reconnection up to the RDP layer */ BOOL rdp_reconnect(RDPCLIENT * This, char *server, uint32 flags, wchar_t *username, wchar_t *domain, wchar_t *password, - wchar_t *command, wchar_t *directory, wchar_t *hostname, char *cookie) // EXITS + wchar_t *command, wchar_t *directory, wchar_t *hostname, char *cookie) { if (!sec_reconnect(This, server, hostname, cookie)) return False;
Modified: trunk/reactos/base/applications/tsclient/rdesktop/secure.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient/... ============================================================================== --- trunk/reactos/base/applications/tsclient/rdesktop/secure.c (original) +++ trunk/reactos/base/applications/tsclient/rdesktop/secure.c Sun Aug 20 01:44:41 2006 @@ -902,7 +902,7 @@
/* Establish a secure connection */ BOOL -sec_connect(RDPCLIENT * This, char *server, wchar_t *hostname, char *cookie) // EXITS +sec_connect(RDPCLIENT * This, char *server, wchar_t *hostname, char *cookie) { struct stream mcs_data; void * p = malloc(512); @@ -930,7 +930,7 @@
/* Establish a secure connection */ BOOL -sec_reconnect(RDPCLIENT * This, char *server, wchar_t *hostname, char *cookie) // EXITS +sec_reconnect(RDPCLIENT * This, char *server, wchar_t *hostname, char *cookie) { struct stream mcs_data; void * p = malloc(512);