ReactOS 0.4.15-dev-7842-g558ab78
SEALED_ Class Reference
Inheritance diagram for SEALED_:
Collaboration diagram for SEALED_:

Classes

class  CEnumConnectionPoints
 
struct  EventArguments
 
class  RdpClientInner
 
struct  RedirectArguments
 
class  SEALED_
 

Public Member Functions

RdpClientUIGetUI () const
 
virtual STDMETHODIMP IUnknown::QueryInterface (REFIID riid, void **ppvObject)
 
virtual STDMETHODIMP_ (ULONG) IUnknown
 
virtual STDMETHODIMP_ (ULONG) IUnknown
 
virtual STDMETHODIMP IDispatch::GetTypeInfoCount (UINT *pctinfo)
 
virtual STDMETHODIMP IDispatch::GetTypeInfo (UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
 
virtual STDMETHODIMP IDispatch::GetIDsOfNames (REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
 
virtual STDMETHODIMP IDispatch::Invoke (DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
 
virtual STDMETHODIMP GetConnectionInterface (IID *pIID)
 
virtual STDMETHODIMP GetConnectionPointContainer (IConnectionPointContainer **ppCPC)
 
virtual STDMETHODIMP Advise (IUnknown *pUnkSink, DWORD *pdwCookie)
 
virtual STDMETHODIMP Unadvise (DWORD dwCookie)
 
virtual STDMETHODIMP EnumConnections (IEnumConnections **ppEnum)
 
virtual STDMETHODIMP IConnectionPointContainer::EnumConnectionPoints (IEnumConnectionPoints **ppEnum)
 
virtual STDMETHODIMP IConnectionPointContainer::FindConnectionPoint (REFIID riid, IConnectionPoint **ppCP)
 
virtual STDMETHODIMP IDataObject::GetData (FORMATETC *pformatetcIn, STGMEDIUM *pmedium)
 
virtual STDMETHODIMP IDataObject::GetDataHere (FORMATETC *pformatetc, STGMEDIUM *pmedium)
 
virtual STDMETHODIMP IDataObject::QueryGetData (FORMATETC *pformatetc)
 
virtual STDMETHODIMP IDataObject::GetCanonicalFormatEtc (FORMATETC *pformatectIn, FORMATETC *pformatetcOut)
 
virtual STDMETHODIMP IDataObject::SetData (FORMATETC *pformatetc, STGMEDIUM *pmedium, BOOL fRelease)
 
virtual STDMETHODIMP IDataObject::EnumFormatEtc (DWORD dwDirection, IEnumFORMATETC **ppenumFormatEtc)
 
virtual STDMETHODIMP IDataObject::DAdvise (FORMATETC *pformatetc, DWORD advf, IAdviseSink *pAdvSink, DWORD *pdwConnection)
 
virtual STDMETHODIMP IDataObject::DUnadvise (DWORD dwConnection)
 
virtual STDMETHODIMP IDataObject::EnumDAdvise (IEnumSTATDATA **ppenumAdvise)
 
virtual STDMETHODIMP IObjectSafety::GetInterfaceSafetyOptions (REFIID riid, DWORD *pdwSupportedOptions, DWORD *pdwEnabledOptions)
 
virtual STDMETHODIMP IObjectSafety::SetInterfaceSafetyOptions (REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions)
 
virtual STDMETHODIMP IOleControl::GetControlInfo (CONTROLINFO *pCI)
 
virtual STDMETHODIMP IOleControl::OnMnemonic (MSG *pMsg)
 
virtual STDMETHODIMP IOleControl::OnAmbientPropertyChange (DISPID dispID)
 
virtual STDMETHODIMP IOleControl::FreezeEvents (BOOL bFreeze)
 
virtual STDMETHODIMP IOleInPlaceActiveObject::TranslateAccelerator (LPMSG lpmsg)
 
virtual STDMETHODIMP IOleInPlaceActiveObject::OnFrameWindowActivate (BOOL fActivate)
 
virtual STDMETHODIMP IOleInPlaceActiveObject::OnDocWindowActivate (BOOL fActivate)
 
virtual STDMETHODIMP IOleInPlaceActiveObject::ResizeBorder (LPCRECT prcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fFrameWindow)
 
virtual STDMETHODIMP IOleInPlaceActiveObject::EnableModeless (BOOL fEnable)
 
virtual STDMETHODIMP IOleInPlaceObject::InPlaceDeactivate ()
 
virtual STDMETHODIMP IOleInPlaceObject::UIDeactivate ()
 
virtual STDMETHODIMP IOleInPlaceObject::SetObjectRects (LPCRECT lprcPosRect, LPCRECT lprcClipRect)
 
virtual STDMETHODIMP IOleInPlaceObject::ReactivateAndUndo ()
 
virtual STDMETHODIMP IOleObject::SetClientSite (IOleClientSite *pClientSite)
 
virtual STDMETHODIMP IOleObject::GetClientSite (IOleClientSite **ppClientSite)
 
virtual STDMETHODIMP IOleObject::SetHostNames (LPCOLESTR szContainerApp, LPCOLESTR szContainerObj)
 
virtual STDMETHODIMP IOleObject::Close (DWORD dwSaveOption)
 
virtual STDMETHODIMP IOleObject::SetMoniker (DWORD dwWhichMoniker, IMoniker *pmk)
 
virtual STDMETHODIMP IOleObject::GetMoniker (DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk)
 
virtual STDMETHODIMP IOleObject::InitFromData (IDataObject *pDataObject, BOOL fCreation, DWORD dwReserved)
 
virtual STDMETHODIMP IOleObject::GetClipboardData (DWORD dwReserved, IDataObject **ppDataObject)
 
virtual STDMETHODIMP IOleObject::DoVerb (LONG iVerb, LPMSG lpmsg, IOleClientSite *pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect)
 
virtual STDMETHODIMP IOleObject::EnumVerbs (IEnumOLEVERB **ppEnumOleVerb)
 
virtual STDMETHODIMP IOleObject::Update ()
 
virtual STDMETHODIMP IOleObject::IsUpToDate ()
 
virtual STDMETHODIMP IOleObject::GetUserClassID (CLSID *pClsid)
 
virtual STDMETHODIMP IOleObject::GetUserType (DWORD dwFormOfType, LPOLESTR *pszUserType)
 
virtual STDMETHODIMP IOleObject::SetExtent (DWORD dwDrawAspect, SIZEL *psizel)
 
virtual STDMETHODIMP IOleObject::GetExtent (DWORD dwDrawAspect, SIZEL *psizel)
 
HRESULT NeedAdviseHolder ()
 
virtual STDMETHODIMP IOleObject::Advise (IAdviseSink *pAdvSink, DWORD *pdwConnection)
 
virtual STDMETHODIMP IOleObject::Unadvise (DWORD dwConnection)
 
virtual STDMETHODIMP IOleObject::EnumAdvise (IEnumSTATDATA **ppenumAdvise)
 
virtual STDMETHODIMP IOleObject::GetMiscStatus (DWORD dwAspect, DWORD *pdwStatus)
 
virtual STDMETHODIMP IOleObject::SetColorScheme (LOGPALETTE *pLogpal)
 
virtual STDMETHODIMP IOleWindow::GetWindow (HWND *phwnd)
 
virtual STDMETHODIMP IOleWindow::ContextSensitiveHelp (BOOL fEnterMode)
 
virtual STDMETHODIMP IPersist::GetClassID (CLSID *pClassID)
 
virtual STDMETHODIMP IPersistPropertyBag::InitNew ()
 
virtual STDMETHODIMP IPersistPropertyBag::Load (IPropertyBag *pPropBag, IErrorLog *pErrorLog)
 
virtual STDMETHODIMP IPersistPropertyBag::Save (IPropertyBag *pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties)
 
virtual STDMETHODIMP IPersistStorage::IsDirty ()
 
virtual STDMETHODIMP IPersistStorage::InitNew (IStorage *pStg)
 
virtual STDMETHODIMP IPersistStorage::Load (IStorage *pStg)
 
virtual STDMETHODIMP IPersistStorage::Save (IStorage *pStgSave, BOOL fSameAsLoad)
 
virtual STDMETHODIMP IPersistStorage::SaveCompleted (IStorage *pStgNew)
 
virtual STDMETHODIMP IPersistStorage::HandsOffStorage ()
 
virtual STDMETHODIMP IPersistStreamInit::IsDirty ()
 
virtual STDMETHODIMP IPersistStreamInit::Load (LPSTREAM pStm)
 
virtual STDMETHODIMP IPersistStreamInit::Save (LPSTREAM pStm, BOOL fClearDirty)
 
virtual STDMETHODIMP IPersistStreamInit::GetSizeMax (ULARGE_INTEGER *pCbSize)
 
virtual STDMETHODIMP IPersistStreamInit::InitNew ()
 
virtual STDMETHODIMP IProvideClassInfo::GetClassInfo (ITypeInfo **ppTI)
 
virtual STDMETHODIMP IProvideClassInfo2::GetGUID (DWORD dwGuidKind, GUID *pGUID)
 
virtual STDMETHODIMP IQuickActivate::QuickActivate (QACONTAINER *pQaContainer, QACONTROL *pQaControl)
 
virtual STDMETHODIMP IQuickActivate::SetContentExtent (LPSIZEL pSizel)
 
virtual STDMETHODIMP IQuickActivate::GetContentExtent (LPSIZEL pSizel)
 
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)
 
virtual STDMETHODIMP IViewObject::GetColorSet (DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hicTargetDev, LOGPALETTE **ppColorSet)
 
virtual STDMETHODIMP IViewObject::Freeze (DWORD dwDrawAspect, LONG lindex, void *pvAspect, DWORD *pdwFreeze)
 
virtual STDMETHODIMP IViewObject::Unfreeze (DWORD dwFreeze)
 
virtual STDMETHODIMP IViewObject::SetAdvise (DWORD aspects, DWORD advf, IAdviseSink *pAdvSink)
 
virtual STDMETHODIMP IViewObject::GetAdvise (DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink)
 
virtual STDMETHODIMP IViewObject2::GetExtent (DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE *ptd, LPSIZEL lpsizel)
 
virtual STDMETHODIMP IMsTscAx::put_Server (BSTR pServer)
 
virtual STDMETHODIMP IMsTscAx::get_Server (BSTR *pServer) const
 
virtual STDMETHODIMP IMsTscAx::put_Domain (BSTR pDomain)
 
virtual STDMETHODIMP IMsTscAx::get_Domain (BSTR *pDomain) const
 
virtual STDMETHODIMP IMsTscAx::put_UserName (BSTR pUserName)
 
virtual STDMETHODIMP IMsTscAx::get_UserName (BSTR *pUserName) const
 
virtual STDMETHODIMP IMsTscAx::put_DisconnectedText (BSTR pDisconnectedText)
 
virtual STDMETHODIMP IMsTscAx::get_DisconnectedText (BSTR *pDisconnectedText) const
 
virtual STDMETHODIMP IMsTscAx::put_ConnectingText (BSTR pConnectingText)
 
virtual STDMETHODIMP IMsTscAx::get_ConnectingText (BSTR *pConnectingText) const
 
virtual STDMETHODIMP IMsTscAx::get_Connected (short *pIsConnected) const
 
virtual STDMETHODIMP IMsTscAx::put_DesktopWidth (long pVal)
 
virtual STDMETHODIMP IMsTscAx::get_DesktopWidth (long *pVal) const
 
virtual STDMETHODIMP IMsTscAx::put_DesktopHeight (long pVal)
 
virtual STDMETHODIMP IMsTscAx::get_DesktopHeight (long *pVal) const
 
virtual STDMETHODIMP IMsTscAx::put_StartConnected (long pfStartConnected)
 
virtual STDMETHODIMP IMsTscAx::get_StartConnected (long *pfStartConnected) const
 
virtual STDMETHODIMP IMsTscAx::get_HorizontalScrollBarVisible (long *pfHScrollVisible) const
 
virtual STDMETHODIMP IMsTscAx::get_VerticalScrollBarVisible (long *pfVScrollVisible) const
 
virtual STDMETHODIMP IMsTscAx::put_FullScreenTitle (BSTR rhs)
 
virtual STDMETHODIMP IMsTscAx::get_CipherStrength (long *pCipherStrength) const
 
virtual STDMETHODIMP IMsTscAx::get_Version (BSTR *pVersion) const
 
virtual STDMETHODIMP IMsTscAx::get_SecuredSettingsEnabled (long *pSecuredSettingsEnabled) const
 
virtual STDMETHODIMP IMsTscAx::get_SecuredSettings (MSTSCLib::IMsTscSecuredSettings **ppSecuredSettings) const
 
virtual STDMETHODIMP IMsTscAx::get_AdvancedSettings (MSTSCLib::IMsTscAdvancedSettings **ppAdvSettings) const
 
virtual STDMETHODIMP IMsTscAx::get_Debugger (MSTSCLib::IMsTscDebug **ppDebugger) const
 
virtual STDMETHODIMP IMsTscAx::Connect ()
 
virtual STDMETHODIMP IMsTscAx::Disconnect ()
 
virtual STDMETHODIMP IMsTscAx::CreateVirtualChannels (BSTR newVal)
 
virtual STDMETHODIMP IMsTscAx::SendOnVirtualChannel (BSTR chanName, BSTR ChanData)
 
virtual STDMETHODIMP IMsRdpClient::put_ColorDepth (long pcolorDepth)
 
virtual STDMETHODIMP IMsRdpClient::get_ColorDepth (long *pcolorDepth) const
 
virtual STDMETHODIMP IMsRdpClient::get_AdvancedSettings2 (MSTSCLib::IMsRdpClientAdvancedSettings **ppAdvSettings) const
 
virtual STDMETHODIMP IMsRdpClient::get_SecuredSettings2 (MSTSCLib::IMsRdpClientSecuredSettings **ppSecuredSettings) const
 
virtual STDMETHODIMP IMsRdpClient::get_ExtendedDisconnectReason (MSTSCLib::ExtendedDisconnectReasonCode *pExtendedDisconnectReason) const
 
virtual STDMETHODIMP IMsRdpClient::put_FullScreen (VARIANT_BOOL pfFullScreen)
 
virtual STDMETHODIMP IMsRdpClient::get_FullScreen (VARIANT_BOOL *pfFullScreen) const
 
virtual STDMETHODIMP IMsRdpClient::SetVirtualChannelOptions (BSTR chanName, long chanOptions)
 
virtual STDMETHODIMP IMsRdpClient::GetVirtualChannelOptions (BSTR chanName, long *pChanOptions)
 
virtual STDMETHODIMP IMsRdpClient::RequestClose (MSTSCLib::ControlCloseStatus *pCloseStatus)
 
virtual STDMETHODIMP IMsRdpClient2::get_AdvancedSettings3 (MSTSCLib::IMsRdpClientAdvancedSettings2 **ppAdvSettings) const
 
virtual STDMETHODIMP IMsRdpClient2::put_ConnectedStatusText (BSTR pConnectedStatusText)
 
virtual STDMETHODIMP IMsRdpClient2::get_ConnectedStatusText (BSTR *pConnectedStatusText) const
 
virtual STDMETHODIMP IMsRdpClient3::get_AdvancedSettings4 (MSTSCLib::IMsRdpClientAdvancedSettings3 **ppAdvSettings) const
 
virtual STDMETHODIMP IMsRdpClient4::get_AdvancedSettings5 (MSTSCLib::IMsRdpClientAdvancedSettings4 **ppAdvSettings5) const
 
virtual STDMETHODIMP IMsTscNonScriptable::put_ClearTextPassword (BSTR rhs)
 
virtual STDMETHODIMP IMsTscNonScriptable::put_PortablePassword (BSTR pPortablePass)
 
virtual STDMETHODIMP IMsTscNonScriptable::get_PortablePassword (BSTR *pPortablePass) const
 
virtual STDMETHODIMP IMsTscNonScriptable::put_PortableSalt (BSTR pPortableSalt)
 
virtual STDMETHODIMP IMsTscNonScriptable::get_PortableSalt (BSTR *pPortableSalt) const
 
virtual STDMETHODIMP IMsTscNonScriptable::put_BinaryPassword (BSTR pBinaryPassword)
 
virtual STDMETHODIMP IMsTscNonScriptable::get_BinaryPassword (BSTR *pBinaryPassword) const
 
virtual STDMETHODIMP IMsTscNonScriptable::put_BinarySalt (BSTR pSalt)
 
virtual STDMETHODIMP IMsTscNonScriptable::get_BinarySalt (BSTR *pSalt) const
 
virtual STDMETHODIMP IMsTscNonScriptable::ResetPassword ()
 
virtual STDMETHODIMP IMsRdpClientNonScriptable::NotifyRedirectDeviceChange (MSTSCLib::UINT_PTR wParam, MSTSCLib::LONG_PTR lParam)
 
virtual STDMETHODIMP IMsRdpClientNonScriptable::SendKeys (long numKeys, VARIANT_BOOL *pbArrayKeyUp, long *plKeyData)
 
virtual STDMETHODIMP IMsRdpClientNonScriptable2::put_UIParentWindowHandle (HWND phwndUIParentWindowHandle)
 
virtual STDMETHODIMP IMsRdpClientNonScriptable2::get_UIParentWindowHandle (HWND *phwndUIParentWindowHandle) const
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 
- Public Member Functions inherited from IDispatch
HRESULT GetTypeInfoCount ([out] UINT *pctinfo)
 
HRESULT GetTypeInfo ([in] UINT iTInfo, [in] LCID lcid, [out] ITypeInfo **ppTInfo)
 
HRESULT GetIDsOfNames ([in] REFIID riid, [in, size_is(cNames)] LPOLESTR *rgszNames, [in] UINT cNames, [in] LCID lcid, [out, size_is(cNames)] DISPID *rgDispId)
 
HRESULT Invoke ([in] DISPID dispIdMember, [in] REFIID riid, [in] LCID lcid, [in] WORD wFlags, [in, out] DISPPARAMS *pDispParams, [out] VARIANT *pVarResult, [out] EXCEPINFO *pExcepInfo, [out] UINT *puArgErr)
 
HRESULT RemoteInvoke ([in] DISPID dispIdMember, [in] REFIID riid, [in] LCID lcid, [in] DWORD dwFlags, [in] DISPPARAMS *pDispParams, [out] VARIANT *pVarResult, [out] EXCEPINFO *pExcepInfo, [out] UINT *pArgErr, [in] UINT cVarRef, [in, size_is(cVarRef)] UINT *rgVarRefIdx, [in, out, size_is(cVarRef)] VARIANTARG *rgVarRef)
 
- Public Member Functions inherited from IConnectionPointContainer
HRESULT EnumConnectionPoints ([out] IEnumConnectionPoints **ppEnum)
 
HRESULT FindConnectionPoint ([in] REFIID riid, [out] IConnectionPoint **ppCP)
 
- Public Member Functions inherited from IDataObject
HRESULT GetData ([in, unique] FORMATETC *pformatetcIn, [out] STGMEDIUM *pmedium)
 
HRESULT RemoteGetData ([in, unique] FORMATETC *pformatetcIn, [out] STGMEDIUM *pRemoteMedium)
 
HRESULT GetDataHere ([in, unique] FORMATETC *pformatetc, [in, out] STGMEDIUM *pmedium)
 
HRESULT RemoteGetDataHere ([in, unique] FORMATETC *pformatetc, [in, out] STGMEDIUM *pRemoteMedium)
 
HRESULT QueryGetData ([in, unique] FORMATETC *pformatetc)
 
HRESULT GetCanonicalFormatEtc ([in, unique] FORMATETC *pformatectIn, [out] FORMATETC *pformatetcOut)
 
HRESULT SetData ([in, unique] FORMATETC *pformatetc, [in, unique] STGMEDIUM *pmedium, [in] BOOL fRelease)
 
HRESULT RemoteSetData ([in, unique] FORMATETC *pformatetc, [in, unique] FLAG_STGMEDIUM *pmedium, [in] BOOL fRelease)
 
HRESULT EnumFormatEtc ([in] DWORD dwDirection, [out] IEnumFORMATETC **ppenumFormatEtc)
 
HRESULT DAdvise ([in] FORMATETC *pformatetc, [in] DWORD advf, [in, unique] IAdviseSink *pAdvSink, [out] DWORD *pdwConnection)
 
HRESULT DUnadvise ([in] DWORD dwConnection)
 
HRESULT EnumDAdvise ([out] IEnumSTATDATA **ppenumAdvise)
 
- Public Member Functions inherited from IObjectSafety
HRESULT GetInterfaceSafetyOptions ([in] REFIID riid, [out] DWORD *pdwSupportedOptions, [out] DWORD *pdwEnabledOptions)
 
HRESULT SetInterfaceSafetyOptions ([in] REFIID riid, [in] DWORD dwOptionSetMask, [in] DWORD dwEnabledOptions)
 
- Public Member Functions inherited from IOleControl
HRESULT GetControlInfo ([out] CONTROLINFO *pCI)
 
HRESULT OnMnemonic ([in] MSG *pMsg)
 
HRESULT OnAmbientPropertyChange ([in] DISPID dispID)
 
HRESULT FreezeEvents ([in] BOOL bFreeze)
 
- Public Member Functions inherited from IOleInPlaceActiveObject
HRESULT TranslateAccelerator ([in] LPMSG lpmsg)
 
HRESULT RemoteTranslateAccelerator ()
 
HRESULT OnFrameWindowActivate ([in] BOOL fActivate)
 
HRESULT OnDocWindowActivate ([in] BOOL fActivate)
 
HRESULT ResizeBorder ([in] LPCRECT prcBorder, [in, unique] IOleInPlaceUIWindow *pUIWindow, [in] BOOL fFrameWindow)
 
HRESULT RemoteResizeBorder ([in] LPCRECT prcBorder, [in] REFIID riid, [in, unique, iid_is(riid)] IOleInPlaceUIWindow *pUIWindow, [in] BOOL fFrameWindow)
 
HRESULT EnableModeless ([in] BOOL fEnable)
 
- Public Member Functions inherited from IOleWindow
HRESULT GetWindow ([out] HWND *phwnd)
 
HRESULT ContextSensitiveHelp ([in] BOOL fEnterMode)
 
- Public Member Functions inherited from IOleInPlaceObject
HRESULT InPlaceDeactivate ()
 
HRESULT UIDeactivate ()
 
HRESULT SetObjectRects ([in] LPCRECT lprcPosRect, [in] LPCRECT lprcClipRect)
 
HRESULT ReactivateAndUndo ()
 
- Public Member Functions inherited from IOleObject
HRESULT SetClientSite ([in, unique] IOleClientSite *pClientSite)
 
HRESULT GetClientSite ([out] IOleClientSite **ppClientSite)
 
HRESULT SetHostNames ([in] LPCOLESTR szContainerApp, [in, unique] LPCOLESTR szContainerObj)
 
HRESULT Close ([in] DWORD dwSaveOption)
 
HRESULT SetMoniker ([in] DWORD dwWhichMoniker, [in, unique] IMoniker *pmk)
 
HRESULT GetMoniker ([in] DWORD dwAssign, [in] DWORD dwWhichMoniker, [out] IMoniker **ppmk)
 
HRESULT InitFromData ([in, unique] IDataObject *pDataObject, [in] BOOL fCreation, [in] DWORD dwReserved)
 
HRESULT GetClipboardData ([in] DWORD dwReserved, [out] IDataObject **ppDataObject)
 
HRESULT DoVerb ([in] LONG iVerb, [in, unique] LPMSG lpmsg, [in, unique] IOleClientSite *pActiveSite, [in] LONG lindex, [in] HWND hwndParent, [in, unique] LPCRECT lprcPosRect)
 
HRESULT EnumVerbs ([out] IEnumOLEVERB **ppEnumOleVerb)
 
HRESULT Update ()
 
HRESULT IsUpToDate ()
 
HRESULT GetUserClassID ([out] CLSID *pClsid)
 
HRESULT GetUserType ([in] DWORD dwFormOfType, [out] LPOLESTR *pszUserType)
 
HRESULT SetExtent ([in] DWORD dwDrawAspect, [in] SIZEL *psizel)
 
HRESULT GetExtent ([in] DWORD dwDrawAspect, [out] SIZEL *psizel)
 
HRESULT Advise ([in, unique] IAdviseSink *pAdvSink, [out] DWORD *pdwConnection)
 
HRESULT Unadvise ([in] DWORD dwConnection)
 
HRESULT EnumAdvise ([out] IEnumSTATDATA **ppenumAdvise)
 
HRESULT GetMiscStatus ([in] DWORD dwAspect, [out] DWORD *pdwStatus)
 
HRESULT SetColorScheme ([in] LOGPALETTE *pLogpal)
 
- Public Member Functions inherited from IPersist
HRESULT GetClassID ([out] CLSID *pClassID)
 
- Public Member Functions inherited from IPersistPropertyBag
HRESULT InitNew ()
 
HRESULT Load ([in] IPropertyBag *pPropBag, [in] IErrorLog *pErrorLog)
 
HRESULT Save ([in] IPropertyBag *pPropBag, [in] BOOL fClearDirty, [in] BOOL fSaveAllProperties)
 
- Public Member Functions inherited from IPersistStorage
HRESULT IsDirty ()
 
HRESULT InitNew ([in, unique] IStorage *pStg)
 
HRESULT Load ([in, unique] IStorage *pStg)
 
HRESULT Save ([in, unique] IStorage *pStgSave, [in] BOOL fSameAsLoad)
 
HRESULT SaveCompleted ([in, unique] IStorage *pStgNew)
 
HRESULT HandsOffStorage ()
 
- Public Member Functions inherited from IPersistStreamInit
HRESULT IsDirty ()
 
HRESULT Load ([in] LPSTREAM pStm)
 
HRESULT Save ([in] LPSTREAM pStm, [in] BOOL fClearDirty)
 
HRESULT GetSizeMax ([out] ULARGE_INTEGER *pcbSize)
 
HRESULT InitNew ()
 
- Public Member Functions inherited from IProvideClassInfo
HRESULT GetClassInfo ([out] ITypeInfo **ppTI)
 
- Public Member Functions inherited from IProvideClassInfo2
HRESULT GetGUID ([in] DWORD dwGuidKind, [out] GUID *pGUID)
 
- Public Member Functions inherited from IQuickActivate
HRESULT QuickActivate ([in] QACONTAINER *pQaContainer, [in, out] QACONTROL *pQaControl)
 
HRESULT RemoteQuickActivate ([in] QACONTAINER *pQaContainer, [out] QACONTROL *pQaControl)
 
HRESULT SetContentExtent ([in] LPSIZEL pSizel)
 
HRESULT GetContentExtent ([out] LPSIZEL pSizel)
 
- Public Member Functions inherited from IViewObject
HRESULT Draw ([in] DWORD dwDrawAspect, [in] LONG lindex, [in, unique] void *pvAspect, [in, unique] DVTARGETDEVICE *ptd, [in] HDC hdcTargetDev, [in] HDC hdcDraw, [in] LPCRECTL lprcBounds, [in, unique] LPCRECTL lprcWBounds, [in] BOOL(*pfnContinue)(ULONG_PTR dwContinue), [in] ULONG_PTR dwContinue)
 
HRESULT RemoteDraw ([in] DWORD dwDrawAspect, [in] LONG lindex, [in] ULONG_PTR pvAspect, [in, unique] DVTARGETDEVICE *ptd, [in] ULONG_PTR hdcTargetDev, [in] ULONG_PTR hdcDraw, [in] LPCRECTL lprcBounds, [in, unique] LPCRECTL lprcWBounds, [in] IContinue *pContinue)
 
HRESULT GetColorSet ([in] DWORD dwDrawAspect, [in] LONG lindex, [in, unique] void *pvAspect, [in, unique] DVTARGETDEVICE *ptd, [in] HDC hicTargetDev, [out] LOGPALETTE **ppColorSet)
 
HRESULT RemoteGetColorSet ([in] DWORD dwDrawAspect, [in] LONG lindex, [in] ULONG_PTR pvAspect, [in, unique] DVTARGETDEVICE *ptd, [in] ULONG_PTR hicTargetDev, [out] LOGPALETTE **ppColorSet)
 
HRESULT Freeze ([in] DWORD dwDrawAspect, [in] LONG lindex, [in, unique] void *pvAspect, [out] DWORD *pdwFreeze)
 
HRESULT RemoteFreeze ([in] DWORD dwDrawAspect, [in] LONG lindex, [in] ULONG_PTR pvAspect, [out] DWORD *pdwFreeze)
 
HRESULT Unfreeze ([in] DWORD dwFreeze)
 
HRESULT SetAdvise ([in] DWORD aspects, [in] DWORD advf, [in, unique] IAdviseSink *pAdvSink)
 
HRESULT GetAdvise ([out, unique] DWORD *pAspects, [out, unique] DWORD *pAdvf, [out] IAdviseSink **ppAdvSink)
 
HRESULT RemoteGetAdvise ([out] DWORD *pAspects, [out] DWORD *pAdvf, [out] IAdviseSink **ppAdvSink)
 
- Public Member Functions inherited from IViewObject2
HRESULT GetExtent ([in] DWORD dwDrawAspect, [in] LONG lindex, [in, unique] DVTARGETDEVICE *ptd, [out] LPSIZEL lpsizel)
 
HRESULT GetConnectionInterface ([out] IID *pIID)
 
HRESULT GetConnectionPointContainer ([out] IConnectionPointContainer **ppCPC)
 
HRESULT Advise ([in] IUnknown *pUnkSink, [out] DWORD *pdwCookie)
 
HRESULT Unadvise ([in] DWORD dwCookie)
 
HRESULT EnumConnections ([out] IEnumConnections **ppEnum)
 
- Public Member Functions inherited from MSTSCLib::IMsRdpClient
HRESULT SetVirtualChannelOptions ([in] BSTR chanName, [in] long chanOptions)
 
HRESULT GetVirtualChannelOptions ([in] BSTR chanName, [out, retval] long *pChanOptions)
 
HRESULT RequestClose ([out, retval] ControlCloseStatus *pCloseStatus)
 
- Public Member Functions inherited from MSTSCLib::IMsTscAx
HRESULT Connect ()
 
HRESULT Disconnect ()
 
HRESULT CreateVirtualChannels ([in] BSTR newVal)
 
HRESULT SendOnVirtualChannel ([in] BSTR chanName, [in] BSTR ChanData)
 
- Public Member Functions inherited from MSTSCLib::IMsRdpClientNonScriptable
HRESULT NotifyRedirectDeviceChange ([in] UINT_PTR wParam, [in] LONG_PTR lParam)
 
HRESULT SendKeys ([in] long numKeys, [in] VARIANT_BOOL *pbArrayKeyUp, [in] long *plKeyData)
 
- Public Member Functions inherited from MSTSCLib::IMsTscNonScriptable
HRESULT ResetPassword ()
 

Static Public Member Functions

static RdpClient * InnerToOuter (RdpClientInner *innerThis)
 
static RdpClient * InnerToOuter (AdvancedSettings *innerThis)
 
static RdpClient * InnerToOuter (SecuredSettings *innerThis)
 
static RdpClient * InnerToOuter (RDPCLIENT *innerThis)
 
static const RdpClient * InnerToOuter (const RdpClientInner *innerThis)
 
static const RdpClient * InnerToOuter (const AdvancedSettings *innerThis)
 
static const RdpClient * InnerToOuter (const SecuredSettings *innerThis)
 
static const RdpClient * InnerToOuter (const RDPCLIENT *innerThis)
 
static bool OnPublicKey (RDPCLIENT *This, unsigned char *key, unsigned int key_size)
 
static void OnLogon (RDPCLIENT *This)
 
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)
 
static BOOL Startup ()
 
static void Shutdown ()
 
static HRESULT CreateInstance (REFCLSID rclsid, unsigned libIndex, IUnknown *punkOuter, REFIID riid, void **ppObj)
 

Private Types

enum  {
  RDPC_WM_ = WM_USER , RDPC_WM_SYNC_EVENT , RDPC_WM_ASYNC_EVENT , RDPC_WM_DISCONNECT ,
  RDPC_WM_REQUEST_CLOSE , RDPC_WM_REDIRECT
}
 
typedef void(RdpClient::* AsyncEventCallback) (DISPID eventId, VARIANTARG *rgvarg, unsigned int cArgs, VARIANTARG *retVal)
 

Private Member Functions

bool IsSafeForScripting () const
 
HRESULT GetProperty (BSTR &prop, BSTR *retVal) const
 
HRESULT GetProperty (LPSTR &prop, BSTR *retVal) const
 
HRESULT SetProperty (BSTR &prop, BSTR newValue)
 
HRESULT ReplaceProperty (BSTR &prop, BSTR newValue)
 
HRESULT SetProperty (LPSTR &prop, BSTR newValue)
 
HRESULT ReplaceProperty (LPSTR &prop, LPSTR newValue)
 
template<class Type >
HRESULT SetProperty (bool &prop, const Type &newValue)
 
template<class Type >
HRESULT SetProperty (Type &prop, const Type &newValue)
 
template<class Type >
HRESULT GetProperty (const bool &prop, Type *retVal) const
 
template<class Type >
HRESULT GetProperty (const Type &prop, Type *retVal) const
 
MSTSCLib::IMsTscAxEvents ** GetSinks () const
 
void UnfreezeEvents ()
 
void InvokeSinks (DISPID eventId, VARIANTARG rgvarg[], unsigned int cArgs, VARIANTARG *retval)
 
void CleanupEventArgumentsCallback (DISPID eventId, VARIANTARG *rgvarg, unsigned int cArgs, VARIANTARG *retVal)
 
void FireEventInsideApartment (DISPID eventId, VARIANTARG *rgvarg=NULL, unsigned int cArgs=0, VARIANTARG *retval=NULL, AsyncEventCallback callback=NULL)
 
bool HandleEvent (UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &result)
 
void FireEventOutsideApartment (DISPID eventId, VARIANTARG *rgvarg=NULL, unsigned int cArgs=0, VARIANTARG *retval=NULL, AsyncEventCallback callback=NULL)
 
HRESULT FireEventOutsideApartmentAsync (DISPID eventId, VARIANTARG *rgvarg=NULL, unsigned int cArgs=0, VARIANTARG *retval=NULL, AsyncEventCallback callback=NULL)
 
void FireConnecting ()
 
void FireConnected ()
 
void FireLoginComplete ()
 
void FireDisconnected (long reason)
 
void FireEnterFullScreenMode ()
 
void FireLeaveFullScreenMode ()
 
HRESULT FireChannelReceivedData (char(&chanName)[CHANNEL_NAME_LEN+1], void *chanData, unsigned int chanDataSize)
 
void FireRequestGoFullScreen ()
 
void FireRequestLeaveFullScreen ()
 
void FireFatalError (long errorCode)
 
void FireFatalErrorFromApartment (long errorCode)
 
void FireWarning (long warningCode)
 
void FireRemoteDesktopSizeChange (long width, long height)
 
void FireIdleTimeoutNotification ()
 
void FireRequestContainerMinimize ()
 
bool FireConfirmClose ()
 
HRESULT FireReceivedTSPublicKey (void *publicKey, unsigned int publicKeyLength)
 
LONG FireAutoReconnecting (long disconnectReason, long attemptCount)
 
void FireAuthenticationWarningDisplayed ()
 
void FireAuthenticationWarningDismissed ()
 
HRESULT queryInterface (REFIID riid, void **ppvObject)
 
ULONG addRef ()
 
ULONG release ()
 
 RdpClient (REFCLSID classId, unsigned libIndex, IUnknown *punkOuter)
 
 ~RdpClient ()
 
template<class Interface >
HRESULT GetAdvancedSettings (Interface **ppAdvSettings)
 
template<class Interface >
HRESULT GetSecuredSettings (Interface **ppSecuredSettings)
 
HRESULT LoadTypeLibrary ()
 
HRESULT LoadDispTypeInfo ()
 
HRESULT AcquireDispTypeInfo (ITypeInfo **ppTI)
 
bool OnPublicKey (unsigned char *key, unsigned int key_size)
 
void OnLogon ()
 
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)
 
void ProtocolLoop ()
 
void JoinProtocolThread ()
 
void TerminateProtocolThread ()
 
void PerformDisconnect (long reason)
 
LRESULT ControlWindowProc (UINT uMsg, WPARAM wParam, LPARAM lParam)
 
HRESULT CreateControlWindow (HWND hwndParent)
 
HRESULT DestroyControlWindow ()
 
HRESULT Activate (LONG iVerb, IOleClientSite *pActiveSite, HWND hwndParent, LPCRECT lprcPosRect)
 

Static Private Member Functions

static VOID CALLBACK DisconnectAPC (ULONG_PTR)
 
static DWORD WINAPI ProtocolLoopThreadProc (LPVOID lpParam)
 
static VOID CALLBACK ConnectionTimerAPC (LPVOID, DWORD, DWORD)
 
static LRESULT CALLBACK ControlWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 

Private Attributes

LONG m_refCount
 
IUnknownm_punkOuter
 
SEALED_::RdpClientInner m_inner
 
CLSID m_classId
 
unsigned m_typeLibIndex
 
ITypeLibm_typeLib
 
ITypeInfom_dispTypeInfo
 
size_t m_EventSinksCount
 
union {
   MSTSCLib::IMsTscAxEvents *   m_EventSinksStatic [1]
 
   MSTSCLib::IMsTscAxEvents **   m_EventSinks
 
}; 
 
HWND m_controlWindow
 
IOleClientSitem_clientSite
 
IOleInPlaceSitem_inPlaceSite
 
IOleAdviseHolderm_adviseHolder
 
LONG m_freezeEvents
 
bool m_uiActive
 
DWORD m_SafetyOptions
 
RdpClientUIm_clientUI
 
RDPCLIENT m_protocolState
 
HANDLE m_protocolThread
 
HANDLE m_protocolThreadWaitingReconnection
 
bool m_reconnectAborted
 
bool m_actuallyConnected
 
bool m_loggedIn
 
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
 
BSTR m_RdpdrLocalPrintingDocName
 
BSTR m_RdpdrClipCleanTempDirString
 
BSTR m_RdpdrClipPasteInfoString
 
BSTR m_KeyboardLayoutString
 
LPSTR m_Server
 
LPSTR m_LoadBalanceInfo
 
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
 
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
 
SEALED_::SEALED_ m_advancedSettings
 
SEALED_::SEALED_ m_securedSettings
 

Friends

class AdvancedSettings
 
class SecuredSettings
 

Additional Inherited Members

- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Public Types inherited from IDispatch
typedef IDispatchLPDISPATCH
 
- Public Types inherited from IConnectionPointContainer
typedef IConnectionPointContainerPCONNECTIONPOINTCONTAINER
 
typedef IConnectionPointContainerLPCONNECTIONPOINTCONTAINER
 
- Public Types inherited from IDataObject
enum  tagDATADIR { DATADIR_GET = 1 , DATADIR_SET = 2 }
 
typedef IDataObjectLPDATAOBJECT
 
typedef enum IDataObject::tagDATADIR DATADIR
 
- Public Types inherited from IOleControl
enum  tagCTRLINFO { CTRLINFO_EATS_RETURN = 1 , CTRLINFO_EATS_ESCAPE = 2 }
 
typedef IOleControlLPOLECONTROL
 
typedef struct IOleControl::tagCONTROLINFO CONTROLINFO
 
typedef struct IOleControl::tagCONTROLINFOLPCONTROLINFO
 
typedef enum IOleControl::tagCTRLINFO CTRLINFO
 
- Public Types inherited from IOleInPlaceActiveObject
typedef IOleInPlaceActiveObjectLPOLEINPLACEACTIVEOBJECT
 
- Public Types inherited from IOleWindow
typedef IOleWindowLPOLEWINDOW
 
- Public Types inherited from IOleInPlaceObject
typedef IOleInPlaceObjectLPOLEINPLACEOBJECT
 
- Public Types inherited from IOleObject
enum  tagOLEGETMONIKER { OLEGETMONIKER_ONLYIFTHERE = 1 , OLEGETMONIKER_FORCEASSIGN = 2 , OLEGETMONIKER_UNASSIGN = 3 , OLEGETMONIKER_TEMPFORUSER = 4 }
 
enum  tagOLEWHICHMK { OLEWHICHMK_CONTAINER = 1 , OLEWHICHMK_OBJREL = 2 , OLEWHICHMK_OBJFULL = 3 }
 
enum  tagUSERCLASSTYPE { USERCLASSTYPE_FULL = 1 , USERCLASSTYPE_SHORT = 2 , USERCLASSTYPE_APPNAME = 3 }
 
enum  tagOLEMISC {
  OLEMISC_RECOMPOSEONRESIZE = 0x1 , OLEMISC_ONLYICONIC = 0x2 , OLEMISC_INSERTNOTREPLACE = 0x4 , OLEMISC_STATIC = 0x8 ,
  OLEMISC_CANTLINKINSIDE = 0x10 , OLEMISC_CANLINKBYOLE1 = 0x20 , OLEMISC_ISLINKOBJECT = 0x40 , OLEMISC_INSIDEOUT = 0x80 ,
  OLEMISC_ACTIVATEWHENVISIBLE = 0x100 , OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200 , OLEMISC_INVISIBLEATRUNTIME = 0x400 , OLEMISC_ALWAYSRUN = 0x800 ,
  OLEMISC_ACTSLIKEBUTTON = 0x1000 , OLEMISC_ACTSLIKELABEL = 0x2000 , OLEMISC_NOUIACTIVATE = 0x4000 , OLEMISC_ALIGNABLE = 0x8000 ,
  OLEMISC_SIMPLEFRAME = 0x10000 , OLEMISC_SETCLIENTSITEFIRST = 0x20000 , OLEMISC_IMEMODE = 0x40000 , OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000 ,
  OLEMISC_WANTSTOMENUMERGE = 0x100000 , OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000
}
 
enum  tagOLECLOSE { OLECLOSE_SAVEIFDIRTY = 0 , OLECLOSE_NOSAVE = 1 , OLECLOSE_PROMPTSAVE = 2 }
 
typedef IOleObjectLPOLEOBJECT
 
typedef enum IOleObject::tagOLEGETMONIKER OLEGETMONIKER
 
typedef enum IOleObject::tagOLEWHICHMK OLEWHICHMK
 
typedef enum IOleObject::tagUSERCLASSTYPE USERCLASSTYPE
 
typedef enum IOleObject::tagOLEMISC OLEMISC
 
typedef enum IOleObject::tagOLECLOSE OLECLOSE
 
- Public Types inherited from IPersist
typedef IPersistLPPERSIST
 
- Public Types inherited from IPersistPropertyBag
typedef IPersistPropertyBagLPPERSISTPROPERTYBAG
 
- Public Types inherited from IPersistStorage
typedef IPersistStorageLPPERSISTSTORAGE
 
- Public Types inherited from IPersistStreamInit
typedef IPersistStreamInitLPPERSISTSTREAMINIT
 
- Public Types inherited from IProvideClassInfo
typedef IProvideClassInfoLPPROVIDECLASSINFO
 
- Public Types inherited from IProvideClassInfo2
enum  tagGUIDKIND { GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1 }
 
typedef IProvideClassInfo2LPPROVIDECLASSINFO2
 
typedef enum IProvideClassInfo2::tagGUIDKIND GUIDKIND
 
- Public Types inherited from IQuickActivate
enum  tagQACONTAINERFLAGS {
  QACONTAINER_SHOWHATCHING = 0x1 , QACONTAINER_SHOWGRABHANDLES = 0x2 , QACONTAINER_USERMODE = 0x4 , QACONTAINER_DISPLAYASDEFAULT = 0x8 ,
  QACONTAINER_UIDEAD = 0x10 , QACONTAINER_AUTOCLIP = 0x20 , QACONTAINER_MESSAGEREFLECT = 0x40 , QACONTAINER_SUPPORTSMNEMONICS = 0x80
}
 
typedef IQuickActivateLPQUICKACTIVATE
 
typedef enum IQuickActivate::tagQACONTAINERFLAGS QACONTAINERFLAGS
 
typedef DWORD OLE_COLOR
 
typedef struct IQuickActivate::tagQACONTAINER QACONTAINER
 
typedef struct IQuickActivate::tagQACONTROL QACONTROL
 
- Public Types inherited from IViewObject
typedef IViewObjectLPVIEWOBJECT
 
- Public Types inherited from IViewObject2
typedef IViewObject2LPVIEWOBJECT2
 
- Public Types inherited from IConnectionPoint
typedef IConnectionPointPCONNECTIONPOINT
 
typedef IConnectionPointLPCONNECTIONPOINT
 
- Public Attributes inherited from IDispatch
const DISPID DISPID_UNKNOWN = -1
 
const DISPID DISPID_VALUE = 0
 
const DISPID DISPID_PROPERTYPUT = -3
 
const DISPID DISPID_NEWENUM = -4
 
const DISPID DISPID_EVALUATE = -5
 
const DISPID DISPID_CONSTRUCTOR = -6
 
const DISPID DISPID_DESTRUCTOR = -7
 
const DISPID DISPID_COLLECT = -8
 
- Properties inherited from MSTSCLib::IMsRdpClient4
IMsRdpClientAdvancedSettings4 AdvancedSettings5 [get]
 
- Properties inherited from MSTSCLib::IMsRdpClient3
IMsRdpClientAdvancedSettings3 AdvancedSettings4 [get]
 
- Properties inherited from MSTSCLib::IMsRdpClient2
IMsRdpClientAdvancedSettings2 AdvancedSettings3 [get]
 
BSTR ConnectedStatusText [get, set]
 
- Properties inherited from MSTSCLib::IMsRdpClient
long ColorDepth [get, set]
 
IMsRdpClientAdvancedSettings AdvancedSettings2 [get]
 
IMsRdpClientSecuredSettings SecuredSettings2 [get]
 
ExtendedDisconnectReasonCode ExtendedDisconnectReason [get]
 
VARIANT_BOOL FullScreen [get, set]
 
- Properties inherited from MSTSCLib::IMsTscAx
BSTR Server [get, set]
 
BSTR Domain [get, set]
 
BSTR UserName [get, set]
 
BSTR DisconnectedText [get, set]
 
BSTR ConnectingText [get, set]
 
short Connected [get]
 
long DesktopWidth [get, set]
 
long DesktopHeight [get, set]
 
long StartConnected [get, set]
 
long HorizontalScrollBarVisible [get]
 
long VerticalScrollBarVisible [get]
 
BSTR FullScreenTitle [set]
 
long CipherStrength [get]
 
BSTR Version [get]
 
long SecuredSettingsEnabled [get]
 
IMsTscSecuredSettings SecuredSettings [get]
 
IMsTscAdvancedSettings AdvancedSettings [get]
 
IMsTscDebug Debugger [get]
 
- Properties inherited from MSTSCLib::IMsRdpClientNonScriptable2
HWND UIParentWindowHandle [get, set]
 
- Properties inherited from MSTSCLib::IMsTscNonScriptable
BSTR ClearTextPassword [set]
 
BSTR PortablePassword [get, set]
 
BSTR PortableSalt [get, set]
 
BSTR BinaryPassword [get, set]
 
BSTR BinarySalt [get, set]
 

Detailed Description

Definition at line 1244 of file activex.cpp.

Member Typedef Documentation

◆ AsyncEventCallback

typedef void(RdpClient::* SEALED_::AsyncEventCallback) (DISPID eventId, VARIANTARG *rgvarg, unsigned int cArgs, VARIANTARG *retVal)
private

Definition at line 1638 of file activex.cpp.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
RDPC_WM_ 
RDPC_WM_SYNC_EVENT 
RDPC_WM_ASYNC_EVENT 
RDPC_WM_DISCONNECT 
RDPC_WM_REQUEST_CLOSE 
RDPC_WM_REDIRECT 

Definition at line 1711 of file activex.cpp.

1712 {
1713 RDPC_WM_ = WM_USER,
1719 };
@ RDPC_WM_REQUEST_CLOSE
Definition: activex.cpp:1717
@ RDPC_WM_DISCONNECT
Definition: activex.cpp:1716
@ RDPC_WM_ASYNC_EVENT
Definition: activex.cpp:1715
@ RDPC_WM_
Definition: activex.cpp:1713
@ RDPC_WM_SYNC_EVENT
Definition: activex.cpp:1714
@ RDPC_WM_REDIRECT
Definition: activex.cpp:1718
#define WM_USER
Definition: winuser.h:1895

Constructor & Destructor Documentation

◆ ~RdpClient()

SEALED_::~RdpClient ( )
inlineprivate

Definition at line 2352 of file activex.cpp.

2353 {
2354 assert(m_refCount == 0);
2355
2356 if(m_Connected)
2357 {
2358 // Terminate the protocol thread
2360
2361 // Dispatch the RDPC_WM_DISCONNECT message sent by the dying thread
2362 MSG msg;
2363 PeekMessage(&msg, m_controlWindow, 0, 0, PM_NOREMOVE);
2364
2365 assert(!m_Connected);
2366 }
2367
2369
2370 if(m_typeLib)
2371 m_typeLib->Release();
2372
2373 if(m_dispTypeInfo)
2375
2377
2378 for(size_t i = 0; i < m_EventSinksCount; ++ i)
2379 sinks[i]->Release();
2380
2381 if(m_EventSinksCount > 1)
2382 delete[] m_EventSinks;
2383
2384 if(m_clientSite)
2386
2387 if(m_inPlaceSite)
2389
2390 if(m_adviseHolder)
2392
2393 SysFreeString(m_Domain);
2394 SysFreeString(m_UserName);
2395 SysFreeString(m_DisconnectedText);
2396 SysFreeString(m_DisconnectedText);
2397 SysFreeString(m_FullScreenTitle);
2398 SysFreeString(m_StartProgram);
2399 SysFreeString(m_WorkDir);
2400 SysFreeString(m_ConnectedStatusText);
2401 SysFreeString(m_ClearTextPassword);
2402 SysFreeString(m_RdpdrLocalPrintingDocName);
2403 SysFreeString(m_RdpdrClipCleanTempDirString);
2404 SysFreeString(m_RdpdrClipPasteInfoString);
2405
2406 FreeLpsz(m_LoadBalanceInfo);
2407 FreeLpsz(m_Server);
2408
2409 unlockServer();
2410 }
#define msg(x)
Definition: auth_time.c:54
_In_ BOOLEAN Release
Definition: cdrom.h:920
ITypeInfo * m_dispTypeInfo
Definition: activex.cpp:1332
HRESULT DestroyControlWindow()
Definition: activex.cpp:4293
size_t m_EventSinksCount
Definition: activex.cpp:1335
IOleInPlaceSite * m_inPlaceSite
Definition: activex.cpp:1346
IOleAdviseHolder * m_adviseHolder
Definition: activex.cpp:1347
IOleClientSite * m_clientSite
Definition: activex.cpp:1345
MSTSCLib::IMsTscAxEvents ** GetSinks() const
Definition: activex.cpp:1606
ITypeLib * m_typeLib
Definition: activex.cpp:1331
void TerminateProtocolThread()
Definition: activex.cpp:3973
MSTSCLib::IMsTscAxEvents ** m_EventSinks
Definition: activex.cpp:1340
#define assert(x)
Definition: debug.h:53
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
ULONG Release()
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
#define PeekMessage
Definition: winuser.h:5830
#define PM_NOREMOVE
Definition: winuser.h:1195

Member Function Documentation

◆ AcquireDispTypeInfo()

HRESULT SEALED_::AcquireDispTypeInfo ( ITypeInfo **  ppTI)
inlineprivate

Definition at line 3595 of file activex.cpp.

3596 {
3598
3599 if(FAILED(hr))
3600 return hr;
3601
3603 *ppTI = m_dispTypeInfo;
3604 return S_OK;
3605 }
HRESULT LoadDispTypeInfo()
Definition: activex.cpp:3574
ULONG AddRef()
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
HRESULT hr
Definition: shlfolder.c:183

◆ Activate()

HRESULT SEALED_::Activate ( LONG  iVerb,
IOleClientSite pActiveSite,
HWND  hwndParent,
LPCRECT  lprcPosRect 
)
inlineprivate

Definition at line 4304 of file activex.cpp.

4305 {
4306 if(pActiveSite == NULL)
4307 pActiveSite = m_clientSite;
4308
4309 if(pActiveSite == NULL)
4310 return E_FAIL;
4311
4312 // TODO: store this until we are closed or deactivated
4314
4315 HRESULT hr = pActiveSite->QueryInterface(&site);
4316
4317 if(FAILED(hr))
4318 return hr;
4319
4320 IOleInPlaceFrame * frame = NULL;
4321 IOleInPlaceUIWindow * uiWindow = NULL;
4322
4323 for(;;)
4324 {
4325 hr = site->CanInPlaceActivate();
4326
4327 if(hr == S_FALSE)
4328 hr = E_FAIL;
4329
4330 if(FAILED(hr))
4331 break;
4332
4333 site->OnInPlaceActivate();
4334
4335 if(hwndParent == NULL)
4336 {
4337 hr = site->GetWindow(&hwndParent);
4338
4339 if(FAILED(hr))
4340 break;
4341 }
4342
4343 RECT rcPos;
4344 RECT rcClip;
4345 OLEINPLACEFRAMEINFO frameInfo = { sizeof(frameInfo) };
4346
4347 site->GetWindowContext(&frame, &uiWindow, &rcPos, &rcClip, &frameInfo);
4348
4349 if(lprcPosRect == NULL)
4350 lprcPosRect = &rcPos;
4351
4352 if(m_controlWindow)
4353 ShowWindow(m_controlWindow, SW_SHOW);
4354 else
4355 {
4357
4358 if(FAILED(hr))
4359 break;
4360 }
4361
4362 SetObjectRects(lprcPosRect, &rcClip);
4363
4364 // UI activation
4365 if((iVerb == OLEIVERB_PRIMARY || iVerb == OLEIVERB_UIACTIVATE) && !m_uiActive)
4366 {
4367 m_uiActive = true;
4368
4369 hr = site->OnUIActivate();
4370
4371 if(FAILED(hr))
4372 break;
4373
4375 (
4376 m_controlWindow,
4377 NULL,
4378 lprcPosRect->left,
4379 lprcPosRect->top,
4380 lprcPosRect->right - lprcPosRect->left,
4381 lprcPosRect->bottom - lprcPosRect->top,
4383 );
4384
4385 if(frame)
4386 {
4387 frame->SetActiveObject(this, NULL);
4388 frame->SetBorderSpace(NULL);
4389 }
4390
4391 if(uiWindow)
4392 {
4393 uiWindow->SetActiveObject(this, NULL);
4394 uiWindow->SetBorderSpace(NULL);
4395 }
4396 }
4397
4398 break;
4399 }
4400
4401 if(uiWindow)
4402 uiWindow->Release();
4403
4404 if(frame)
4405 frame->Release();
4406
4407 site->Release();
4408
4409 if(SUCCEEDED(hr))
4410 pActiveSite->ShowObject();
4411
4412 return hr;
4413 }
HRESULT CreateControlWindow(HWND hwndParent)
Definition: activex.cpp:4269
bool m_uiActive
Definition: activex.cpp:1349
static HWND hwndParent
Definition: cryptui.c:300
#define E_FAIL
Definition: ddrawi.h:102
#define NULL
Definition: types.h:112
HRESULT ShowObject()
HRESULT SetObjectRects([in] LPCRECT lprcPosRect, [in] LPCRECT lprcClipRect)
HRESULT SetActiveObject([in, unique] IOleInPlaceActiveObject *pActiveObject, [in, string, unique] LPCOLESTR pszObjName)
HRESULT SetBorderSpace([in, unique] LPCBORDERWIDTHS pborderwidths)
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define SUCCEEDED(hr)
Definition: intsafe.h:50
static IActiveScriptSite * site
Definition: script.c:149
#define OLEIVERB_UIACTIVATE
Definition: ole2.h:42
#define OLEIVERB_PRIMARY
Definition: ole2.h:38
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
#define S_FALSE
Definition: winerror.h:2357
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define SWP_SHOWWINDOW
Definition: winuser.h:1248
#define SW_SHOW
Definition: winuser.h:775

◆ addRef()

ULONG SEALED_::addRef ( )
inlineprivate

Definition at line 2224 of file activex.cpp.

2225 {
2226 return InterlockedIncrement(&m_refCount);
2227 }
#define InterlockedIncrement
Definition: armddk.h:53

◆ Advise()

virtual STDMETHODIMP SEALED_::Advise ( IUnknown pUnkSink,
DWORD pdwCookie 
)
inlinevirtual

Implements IConnectionPoint.

Definition at line 4500 of file activex.cpp.

4501 {
4503
4504 if(FAILED(pUnkSink->QueryInterface(&sink)))
4506
4508 DWORD cookie = 0;
4509
4510 if(m_EventSinksCount)
4511 {
4512 bool found = false;
4513
4514 for(size_t i = 0; i < m_EventSinksCount; ++ i)
4515 {
4516 found = (sinks[i] == NULL);
4517
4518 if(found)
4519 {
4520 cookie = static_cast<DWORD>(i);
4521 break;
4522 }
4523 }
4524
4525 if(!found)
4526 {
4527 MSTSCLib::IMsTscAxEvents ** newSinks = new MSTSCLib::IMsTscAxEvents *[m_EventSinksCount + 1];
4528
4529 if(newSinks == NULL)
4530 {
4531 sink->Release();
4532 return E_OUTOFMEMORY;
4533 }
4534
4535 std::copy(sinks, sinks + m_EventSinksCount, newSinks);
4536
4537 m_EventSinks = newSinks;
4538 sinks = newSinks;
4539
4540 cookie = static_cast<DWORD>(m_EventSinksCount);
4541 }
4542 }
4543
4544 sinks[cookie] = sink;
4545 *pdwCookie = cookie;
4546
4547 return S_OK;
4548 }
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizei GLenum GLboolean sink
Definition: glext.h:5672
#define CONNECT_E_CANNOTCONNECT
Definition: olectl.h:253
Definition: cookie.c:34

◆ CleanupEventArgumentsCallback()

void SEALED_::CleanupEventArgumentsCallback ( DISPID  eventId,
VARIANTARG rgvarg,
unsigned int  cArgs,
VARIANTARG retVal 
)
inlineprivate

Definition at line 1646 of file activex.cpp.

1653 {
1654 assert((rgvarg == NULL) == (cArgs == 0));
1655
1656 for(unsigned int i = 0; i < cArgs; ++ i)
1657 VariantClear(&rgvarg[i]);
1658
1659 if(retVal)
1660 VariantClear(retVal);
1661 }
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:648

◆ ConnectionTimerAPC()

static VOID CALLBACK SEALED_::ConnectionTimerAPC ( LPVOID  ,
DWORD  ,
DWORD   
)
inlinestaticprivate

Definition at line 3763 of file activex.cpp.

3764 {
3765 }

◆ ControlWindowProc() [1/2]

static LRESULT CALLBACK SEALED_::ControlWindowProc ( HWND  hwnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
inlinestaticprivate

Definition at line 4251 of file activex.cpp.

4252 {
4253 if(uMsg == WM_CREATE)
4254 {
4256 (
4257 hwnd,
4259 (LONG_PTR)reinterpret_cast<LPCREATESTRUCT>(lParam)->lpCreateParams
4260 );
4261 }
4262
4263 RdpClient * Self = reinterpret_cast<RdpClient *>(GetWindowLongPtr(hwnd, GWLP_USERDATA));
4264 assert(Self);
4265
4266 return Self->ControlWindowProc(uMsg, wParam, lParam);
4267 }
RdpClient(REFCLSID classId, unsigned libIndex, IUnknown *punkOuter)
Definition: activex.cpp:2240
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define GetWindowLongPtr
Definition: treelist.c:73
#define SetWindowLongPtr
Definition: treelist.c:70
#define GWLP_USERDATA
Definition: treelist.c:63
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
#define WM_CREATE
Definition: winuser.h:1608

◆ ControlWindowProc() [2/2]

LRESULT SEALED_::ControlWindowProc ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
inlineprivate

Definition at line 4169 of file activex.cpp.

4170 {
4171 switch(uMsg)
4172 {
4173 case WM_SIZE:
4174 {
4175 // TODO: resize UI
4176 }
4177
4178 return 0;
4179
4180 case WM_PAINT:
4181 {
4182 LPCWSTR text = NULL;
4183
4184 if(!m_Connected)
4186 else if(m_actuallyConnected)
4188 else
4190
4191 RECT clientRect;
4192 GetClientRect(m_controlWindow, &clientRect);
4193
4194 PAINTSTRUCT ps;
4195 HDC hdc = BeginPaint(m_controlWindow, &ps);
4196
4200
4201 RECT textRect = clientRect;
4202
4203 DrawTextW
4204 (
4205 hdc,
4206 text,
4207 -1,
4208 &textRect,
4210 );
4211
4212 if(textRect.right > clientRect.right)
4213 textRect.right = clientRect.right;
4214
4215 if(textRect.bottom > clientRect.bottom)
4216 textRect.bottom = clientRect.bottom;
4217
4218 textRect.left = (clientRect.right - textRect.right) / 2;
4220 textRect.top = (clientRect.bottom - textRect.bottom) / 2;
4222
4223 DrawTextW
4224 (
4225 hdc,
4226 text,
4227 -1,
4228 &textRect,
4230 );
4231
4232 EndPaint(m_controlWindow, &ps);
4233 }
4234
4235 return 0;
4236
4237 default:
4238 {
4240
4241 if(HandleEvent(uMsg, wParam, lParam, result))
4242 return result;
4243 }
4244
4245 break;
4246 }
4247
4248 return DefWindowProc(m_controlWindow, uMsg, wParam, lParam);
4249 }
BSTR m_DisconnectedText
Definition: activex.cpp:1373
bool HandleEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &result)
Definition: activex.cpp:1726
BSTR m_ConnectedStatusText
Definition: activex.cpp:1378
BSTR m_ConnectingText
Definition: activex.cpp:1374
const WCHAR * text
Definition: package.c:1799
GLuint64EXT * result
Definition: glext.h:11304
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:92
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
Definition: defwnd.c:16
#define DefWindowProc
Definition: ros2win.h:31
RECT textRect
Definition: startmenu.cpp:1392
LONG_PTR LRESULT
Definition: windef.h:209
HGDIOBJ WINAPI GetStockObject(_In_ int)
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
Definition: dc.c:999
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1539
#define SYSTEM_FONT
Definition: wingdi.h:911
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
Definition: text.c:918
#define WM_PAINT
Definition: winuser.h:1620
DWORD WINAPI GetSysColor(_In_ int)
#define DT_NOPREFIX
Definition: winuser.h:537
#define COLOR_WINDOW
Definition: winuser.h:918
#define DT_CENTER
Definition: winuser.h:527
#define DT_END_ELLIPSIS
Definition: winuser.h:529
#define COLOR_WINDOWTEXT
Definition: winuser.h:921
#define WM_SIZE
Definition: winuser.h:1611
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
#define DT_WORDBREAK
Definition: winuser.h:544
#define DT_CALCRECT
Definition: winuser.h:526
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
#define DT_EDITCONTROL
Definition: winuser.h:528
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185

◆ CreateControlWindow()

HRESULT SEALED_::CreateControlWindow ( HWND  hwndParent)
inlineprivate

Definition at line 4269 of file activex.cpp.

4270 {
4272 (
4273 TEXT("MissTosca_Control"),
4274 NULL,
4280 hwndParent,
4281 NULL,
4283 this
4284 );
4285
4286 if(m_controlWindow == NULL)
4288
4290 return S_OK;
4291 }
HWND m_UIParentWindowHandle
Definition: activex.cpp:1387
HWND m_controlWindow
Definition: activex.cpp:1344
#define TEXT(s)
Definition: k32.h:26
#define WS_CHILD
Definition: pedump.c:617
#define WS_CLIPCHILDREN
Definition: pedump.c:619
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
#define CreateWindow
Definition: winuser.h:5754
#define CW_USEDEFAULT
Definition: winuser.h:225

◆ CreateInstance()

static HRESULT SEALED_::CreateInstance ( REFCLSID  rclsid,
unsigned  libIndex,
IUnknown punkOuter,
REFIID  riid,
void **  ppObj 
)
inlinestatic

Definition at line 4041 of file activex.cpp.

4042 {
4043 RdpClient * obj = new RdpClient(rclsid, libIndex, punkOuter);
4044
4045 if(obj == NULL)
4046 return E_OUTOFMEMORY;
4047
4048 HRESULT hr = obj->m_inner.QueryInterface(riid, ppObj);
4049
4050 if(FAILED(hr))
4051 {
4052 delete obj;
4053 return hr;
4054 }
4055
4056 assert(obj->m_refCount == 1);
4057 assert(*ppObj != NULL);
4058
4059 return S_OK;
4060 }
REFIID riid
Definition: atlbase.h:39

◆ DestroyControlWindow()

HRESULT SEALED_::DestroyControlWindow ( )
inlineprivate

Definition at line 4293 of file activex.cpp.

4294 {
4295 if(m_controlWindow == NULL)
4296 return S_FALSE;
4297
4298 HWND controlWindow = NULL;
4299 std::swap(controlWindow, m_controlWindow);
4300 DestroyWindow(controlWindow);
4301 return S_OK;
4302 }
void swap(StackAllocator< _Tp > &__a, StackAllocator< _Tp > &__b)
BOOL WINAPI DestroyWindow(_In_ HWND)

◆ DisconnectAPC()

static VOID CALLBACK SEALED_::DisconnectAPC ( ULONG_PTR  )
inlinestaticprivate

Definition at line 1721 of file activex.cpp.

1722 {
1723 // no need to do anything. The interruption will be enough
1724 }

◆ EnumConnections()

virtual STDMETHODIMP SEALED_::EnumConnections ( IEnumConnections **  ppEnum)
inlinevirtual

Implements IConnectionPoint.

Definition at line 4565 of file activex.cpp.

4566 {
4567 // I see no real value in this
4568 return E_NOTIMPL;
4569 }
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ FireAuthenticationWarningDismissed()

void SEALED_::FireAuthenticationWarningDismissed ( )
inlineprivate

Definition at line 2151 of file activex.cpp.

2152 {
2153 // Source: protocol
2155 }
void FireEventOutsideApartment(DISPID eventId, VARIANTARG *rgvarg=NULL, unsigned int cArgs=0, VARIANTARG *retval=NULL, AsyncEventCallback callback=NULL)
Definition: activex.cpp:1889

◆ FireAuthenticationWarningDisplayed()

void SEALED_::FireAuthenticationWarningDisplayed ( )
inlineprivate

Definition at line 2145 of file activex.cpp.

2146 {
2147 // Source: protocol
2149 }

◆ FireAutoReconnecting()

LONG SEALED_::FireAutoReconnecting ( long  disconnectReason,
long  attemptCount 
)
inlineprivate

Definition at line 2124 of file activex.cpp.

2125 {
2127 VARIANTARG args[2] = { };
2128 VARIANTARG retval = { };
2129
2130 args[1].vt = VT_I4;
2131 args[1].lVal = disconnectReason;
2132
2133 args[0].vt = VT_I4;
2134 args[0].lVal = attemptCount;
2135
2136 retval.vt = VT_BYREF | VT_I4;
2137 retval.plVal = &continueStatus;
2138
2139 // Source: protocol
2141
2142 return continueStatus;
2143 }
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
@ VT_BYREF
Definition: compat.h:2342
@ VT_I4
Definition: compat.h:2298
@ autoReconnectContinueAutomatic
Definition: mstsclib.idl:38
long LONG
Definition: pedump.c:60
Definition: match.c:390
LONG * plVal
Definition: compat.h:2413
VARTYPE vt
Definition: compat.h:2381

◆ FireChannelReceivedData()

HRESULT SEALED_::FireChannelReceivedData ( char(&)  chanName[CHANNEL_NAME_LEN+1],
void chanData,
unsigned int  chanDataSize 
)
inlineprivate

Definition at line 1970 of file activex.cpp.

1971 {
1972 // BUGBUG: what to do when we run out of memory?
1973
1974 OLECHAR wchanName[ARRAYSIZE(chanName)];
1975 std::copy(chanName + 0, chanName + ARRAYSIZE(chanName), wchanName);
1976
1977 BSTR bstrChanName = SysAllocString(wchanName);
1978
1979 if(bstrChanName == NULL)
1980 return E_OUTOFMEMORY;
1981
1982 BSTR bstrChanData = SysAllocStringByteLen(NULL, chanDataSize);
1983
1984 if(bstrChanData == NULL)
1985 {
1986 SysFreeString(bstrChanName);
1987 return E_OUTOFMEMORY;
1988 }
1989
1990 CopyMemory(bstrChanData, chanData, chanDataSize);
1991
1992 VARIANTARG args[2] = { };
1993
1994 args[1].vt = VT_BSTR;
1995 args[1].bstrVal = bstrChanName;
1996
1997 args[0].vt = VT_BSTR;
1998 args[0].bstrVal = bstrChanData;
1999
2000 // Source: protocol
2001 HRESULT hr = FireEventOutsideApartmentAsync(7, args, ARRAYSIZE(args), NULL, &RdpClient::CleanupEventArgumentsCallback);
2002
2003 if(FAILED(hr))
2005
2006 return hr;
2007 }
void CleanupEventArgumentsCallback(DISPID eventId, VARIANTARG *rgvarg, unsigned int cArgs, VARIANTARG *retVal)
Definition: activex.cpp:1647
HRESULT FireEventOutsideApartmentAsync(DISPID eventId, VARIANTARG *rgvarg=NULL, unsigned int cArgs=0, VARIANTARG *retval=NULL, AsyncEventCallback callback=NULL)
Definition: activex.cpp:1904
WCHAR OLECHAR
Definition: compat.h:2292
OLECHAR * BSTR
Definition: compat.h:2293
@ VT_BSTR
Definition: compat.h:2303
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:238
BSTR WINAPI DECLSPEC_HOTPATCH SysAllocStringByteLen(LPCSTR str, UINT len)
Definition: oleaut.c:428
#define CopyMemory
Definition: winbase.h:1710

◆ FireConfirmClose()

bool SEALED_::FireConfirmClose ( )
inlineprivate

Definition at line 2080 of file activex.cpp.

2081 {
2082 VARIANTARG retval = { };
2083 VARIANT_BOOL allowClose = VARIANT_TRUE;
2084
2085 retval.vt = VT_BYREF | VT_BOOL;
2086 retval.pboolVal = &allowClose;
2087
2088 // Source: control
2089 FireEventInsideApartment(15, NULL, 0, &retval);
2090
2091 return allowClose != VARIANT_FALSE;
2092 }
void FireEventInsideApartment(DISPID eventId, VARIANTARG *rgvarg=NULL, unsigned int cArgs=0, VARIANTARG *retval=NULL, AsyncEventCallback callback=NULL)
Definition: activex.cpp:1665
short VARIANT_BOOL
Definition: compat.h:2290
@ VT_BOOL
Definition: compat.h:2306
VARIANT_BOOL * pboolVal
Definition: compat.h:2416

◆ FireConnected()

void SEALED_::FireConnected ( )
inlineprivate

Definition at line 1940 of file activex.cpp.

1941 {
1942 // Source: protocol
1944 }

◆ FireConnecting()

void SEALED_::FireConnecting ( )
inlineprivate

Definition at line 1934 of file activex.cpp.

1935 {
1936 // Source: protocol
1938 }

◆ FireDisconnected()

void SEALED_::FireDisconnected ( long  reason)
inlineprivate

Definition at line 1952 of file activex.cpp.

1953 {
1954 // Source: protocol. Special handling
1955 SendMessage(m_controlWindow, RDPC_WM_DISCONNECT, reason, 0);
1956 }
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
Definition: object.c:1904
#define SendMessage
Definition: winuser.h:5843

◆ FireEnterFullScreenMode()

void SEALED_::FireEnterFullScreenMode ( )
inlineprivate

Definition at line 1958 of file activex.cpp.

1959 {
1960 // Source: UI window
1962 }

◆ FireEventInsideApartment()

void SEALED_::FireEventInsideApartment ( DISPID  eventId,
VARIANTARG rgvarg = NULL,
unsigned int  cArgs = 0,
VARIANTARG retval = NULL,
AsyncEventCallback  callback = NULL 
)
inlineprivate

Definition at line 1664 of file activex.cpp.

1672 {
1673 assert(InsideApartment());
1674
1675 if(retval == NULL && callback)
1676 {
1677 VARIANTARG localRetval = { };
1678 retval = &localRetval;
1679 }
1680
1681 InvokeSinks(eventId, rgvarg, cArgs, retval);
1682
1683 if(callback)
1684 (this->*callback)(eventId, rgvarg, cArgs, retval);
1685 }
void InvokeSinks(DISPID eventId, VARIANTARG rgvarg[], unsigned int cArgs, VARIANTARG *retval)
Definition: activex.cpp:1621
static IPrintDialogCallback callback
Definition: printdlg.c:326

◆ FireEventOutsideApartment()

void SEALED_::FireEventOutsideApartment ( DISPID  eventId,
VARIANTARG rgvarg = NULL,
unsigned int  cArgs = 0,
VARIANTARG retval = NULL,
AsyncEventCallback  callback = NULL 
)
inlineprivate

Definition at line 1888 of file activex.cpp.

1896 {
1897 assert(!InsideApartment());
1898 EventArguments syncEvent = { eventId, rgvarg, cArgs, retval, callback };
1899 SendMessage(m_controlWindow, RDPC_WM_SYNC_EVENT, 0, reinterpret_cast<LPARAM>(&syncEvent));
1900 }
LONG_PTR LPARAM
Definition: windef.h:208

◆ FireEventOutsideApartmentAsync()

HRESULT SEALED_::FireEventOutsideApartmentAsync ( DISPID  eventId,
VARIANTARG rgvarg = NULL,
unsigned int  cArgs = 0,
VARIANTARG retval = NULL,
AsyncEventCallback  callback = NULL 
)
inlineprivate

Definition at line 1903 of file activex.cpp.

1911 {
1912 assert(!InsideApartment());
1913
1914 EventArguments * asyncEvent = new EventArguments();
1915
1916 if(asyncEvent == NULL)
1917 return E_OUTOFMEMORY;
1918
1919 asyncEvent->eventId = eventId;
1920 asyncEvent->rgvarg = rgvarg;
1921 asyncEvent->cArgs = cArgs;
1922 asyncEvent->retval = NULL;
1923
1924 if(!PostMessage(m_controlWindow, RDPC_WM_ASYNC_EVENT, 0, reinterpret_cast<LPARAM>(asyncEvent)))
1925 {
1926 delete asyncEvent;
1928 }
1929
1930 return S_OK;
1931 }
#define PostMessage
Definition: winuser.h:5832

◆ FireFatalError()

void SEALED_::FireFatalError ( long  errorCode)
inlineprivate

Definition at line 2021 of file activex.cpp.

2022 {
2023 VARIANTARG arg = { };
2024
2025 arg.vt = VT_I4;
2026 arg.lVal = errorCode;
2027
2028 // Source: protocol
2030 }

◆ FireFatalErrorFromApartment()

void SEALED_::FireFatalErrorFromApartment ( long  errorCode)
inlineprivate

Definition at line 2032 of file activex.cpp.

2033 {
2034 VARIANTARG arg = { };
2035
2036 arg.vt = VT_I4;
2037 arg.lVal = errorCode;
2038
2039 // Source: control
2041 }

◆ FireIdleTimeoutNotification()

void SEALED_::FireIdleTimeoutNotification ( )
inlineprivate

Definition at line 2068 of file activex.cpp.

2069 {
2070 // Source: input thread
2072 }

◆ FireLeaveFullScreenMode()

void SEALED_::FireLeaveFullScreenMode ( )
inlineprivate

Definition at line 1964 of file activex.cpp.

1965 {
1966 // Source: UI window
1968 }

◆ FireLoginComplete()

void SEALED_::FireLoginComplete ( )
inlineprivate

Definition at line 1946 of file activex.cpp.

1947 {
1948 // Source: protocol
1950 }

◆ FireReceivedTSPublicKey()

HRESULT SEALED_::FireReceivedTSPublicKey ( void publicKey,
unsigned int  publicKeyLength 
)
inlineprivate

Definition at line 2094 of file activex.cpp.

2095 {
2096 assert(m_Connected);
2097
2098 if(!m_NotifyTSPublicKey)
2099 return S_OK;
2100
2101 BSTR bstrPublicKey = SysAllocStringByteLen(NULL, publicKeyLength);
2102
2103 if(bstrPublicKey == NULL)
2104 return E_OUTOFMEMORY;
2105
2106 CopyMemory(bstrPublicKey, publicKey, publicKeyLength);
2107
2108 VARIANT_BOOL continueLogon = VARIANT_TRUE;
2109 VARIANTARG arg = { };
2110 VARIANTARG retval = { };
2111
2112 arg.vt = VT_BSTR;
2113 arg.bstrVal = bstrPublicKey;
2114
2115 retval.vt = VT_BYREF | VT_BOOL;
2116 retval.pboolVal = &continueLogon;
2117
2118 // Source: protocol
2119 FireEventOutsideApartment(16, &arg, 1, &retval);
2120
2121 return continueLogon ? S_OK : S_FALSE;
2122 }

◆ FireRemoteDesktopSizeChange()

void SEALED_::FireRemoteDesktopSizeChange ( long  width,
long  height 
)
inlineprivate

Definition at line 2054 of file activex.cpp.

2055 {
2056 VARIANTARG args[2] = { };
2057
2058 args[1].vt = VT_I4;
2059 args[1].lVal = width;
2060
2061 args[0].vt = VT_I4;
2062 args[0].lVal = height;
2063
2064 // Source: UI window
2066 }
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLint GLsizei width
Definition: gl.h:1546

◆ FireRequestContainerMinimize()

void SEALED_::FireRequestContainerMinimize ( )
inlineprivate

Definition at line 2074 of file activex.cpp.

2075 {
2076 // Source: UI window
2078 }

◆ FireRequestGoFullScreen()

void SEALED_::FireRequestGoFullScreen ( )
inlineprivate

Definition at line 2009 of file activex.cpp.

2010 {
2011 // Source: UI window
2013 }

◆ FireRequestLeaveFullScreen()

void SEALED_::FireRequestLeaveFullScreen ( )
inlineprivate

Definition at line 2015 of file activex.cpp.

2016 {
2017 // Source: UI window
2019 }

◆ FireWarning()

void SEALED_::FireWarning ( long  warningCode)
inlineprivate

Definition at line 2043 of file activex.cpp.

2044 {
2045 VARIANTARG arg = { };
2046
2047 arg.vt = VT_I4;
2048 arg.lVal = warningCode;
2049
2050 // Source: protocol
2052 }

◆ GetAdvancedSettings()

template<class Interface >
HRESULT SEALED_::GetAdvancedSettings ( Interface **  ppAdvSettings)
inlineprivate

Definition at line 3331 of file activex.cpp.

3332 {
3333 addRef();
3334 *ppAdvSettings = &m_advancedSettings;
3335 return S_OK;
3336 }
ULONG addRef()
Definition: activex.cpp:2224
SEALED_::SEALED_ m_advancedSettings

◆ GetConnectionInterface()

virtual STDMETHODIMP SEALED_::GetConnectionInterface ( IID pIID)
inlinevirtual

Implements IConnectionPoint.

Definition at line 4481 of file activex.cpp.

4482 {
4483 if(pIID == NULL)
4484 return E_POINTER;
4485
4486 *pIID = MSTSCLib::DIID_IMsTscAxEvents;
4487 return S_OK;
4488 }
#define E_POINTER
Definition: winerror.h:2365

◆ GetConnectionPointContainer()

virtual STDMETHODIMP SEALED_::GetConnectionPointContainer ( IConnectionPointContainer **  ppCPC)
inlinevirtual

Implements IConnectionPoint.

Definition at line 4490 of file activex.cpp.

4491 {
4492 if(ppCPC == NULL)
4493 return E_POINTER;
4494
4495 addRef();
4496 *ppCPC = this;
4497 return S_OK;
4498 }

◆ GetProperty() [1/4]

HRESULT SEALED_::GetProperty ( BSTR prop,
BSTR retVal 
) const
inlineprivate

Definition at line 1459 of file activex.cpp.

1460 {
1461 assert(InsideApartment());
1462
1463 if(retVal == NULL)
1464 return E_POINTER;
1465
1466 *retVal = SysAllocStringLen(prop, SysStringLen(prop));
1467
1468 if(*retVal == NULL)
1469 return E_OUTOFMEMORY;
1470
1471 return S_OK;
1472 }
UINT WINAPI SysStringLen(BSTR str)
Definition: oleaut.c:196
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:339

◆ GetProperty() [2/4]

template<class Type >
HRESULT SEALED_::GetProperty ( const bool prop,
Type retVal 
) const
inlineprivate

Definition at line 1583 of file activex.cpp.

1584 {
1585 assert(InsideApartment());
1586
1587 if(retVal == NULL)
1588 return E_POINTER;
1589
1590 *retVal = prop ? VARIANT_TRUE : VARIANT_FALSE;
1591 return S_OK;
1592 }

◆ GetProperty() [3/4]

template<class Type >
HRESULT SEALED_::GetProperty ( const Type prop,
Type retVal 
) const
inlineprivate

Definition at line 1594 of file activex.cpp.

1595 {
1596 assert(InsideApartment());
1597
1598 if(retVal == NULL)
1599 return E_POINTER;
1600
1601 *retVal = prop;
1602 return S_OK;
1603 }

◆ GetProperty() [4/4]

HRESULT SEALED_::GetProperty ( LPSTR prop,
BSTR retVal 
) const
inlineprivate

Definition at line 1474 of file activex.cpp.

1475 {
1476 assert(InsideApartment());
1477
1478 if(retVal == NULL)
1479 return E_POINTER;
1480
1481 *retVal = LpszToBstr(prop);
1482
1483 if(*retVal == NULL)
1484 return E_OUTOFMEMORY;
1485
1486 return S_OK;
1487 }

◆ GetSecuredSettings()

template<class Interface >
HRESULT SEALED_::GetSecuredSettings ( Interface **  ppSecuredSettings)
inlineprivate

Definition at line 3530 of file activex.cpp.

3531 {
3532 if(!m_SecuredSettingsEnabled)
3533 return E_FAIL;
3534
3535 addRef();
3536 *ppSecuredSettings = &m_securedSettings;
3537 return S_OK;
3538 }
SEALED_::SEALED_ m_securedSettings

◆ GetSinks()

MSTSCLib::IMsTscAxEvents ** SEALED_::GetSinks ( ) const
inlineprivate

Definition at line 1606 of file activex.cpp.

1607 {
1608 if(m_EventSinksCount > 1)
1609 return m_EventSinks;
1610 else
1611 return const_cast<MSTSCLib::IMsTscAxEvents **>(m_EventSinksStatic);
1612 }
MSTSCLib::IMsTscAxEvents * m_EventSinksStatic[1]
Definition: activex.cpp:1339

◆ GetUI()

RdpClientUI * SEALED_::GetUI ( ) const
inline

Definition at line 3649 of file activex.cpp.

3650 {
3651 assert(m_clientUI);
3652 return m_clientUI;
3653 }
RdpClientUI * m_clientUI
Definition: activex.cpp:1360

◆ HandleEvent()

bool SEALED_::HandleEvent ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
LRESULT result 
)
inlineprivate

Definition at line 1726 of file activex.cpp.

1727 {
1728 result = 0;
1729
1730 switch(uMsg)
1731 {
1732 /* Regular event to be dispatched to the container's sink */
1733 case RDPC_WM_SYNC_EVENT:
1735
1737 {
1738 const EventArguments * eventArgs = reinterpret_cast<EventArguments *>(lParam);
1739 assert(eventArgs);
1740
1742 (
1743 eventArgs->eventId,
1744 eventArgs->rgvarg,
1745 eventArgs->cArgs,
1746 eventArgs->retval,
1747 eventArgs->callback
1748 );
1749
1750 if(uMsg == RDPC_WM_ASYNC_EVENT)
1751 delete eventArgs;
1752 }
1753
1754 break;
1755
1756 /* The protocol thread is about to die: prepare for disconnection */
1757 case RDPC_WM_DISCONNECT:
1758 {
1759 assert(m_Connected);
1760 assert(InsideApartment());
1762
1763 // Unblock the protocol thread and wait for it to terminate
1764 ReplyMessage(0);
1766
1767 // Finish disconnecting
1768 PerformDisconnect(static_cast<long>(wParam));
1769 }
1770
1771 break;
1772
1773 case RDPC_WM_REDIRECT:
1774 {
1776 assert(lParam);
1777 assert(m_Connected);
1779
1780 RedirectArguments * redirectArgs = reinterpret_cast<RedirectArguments *>(lParam);
1781
1782 // BUGBUG: this is extremely messy and more prone to out-of-memory than it should be
1783 LPSTR lpszNewServer = NULL;
1784 LPSTR lpszNewCookie = NULL;
1785 BSTR strNewUsername = NULL;
1786 BSTR strNewDomain = NULL;
1787 BSTR strNewPassword = NULL;
1788 HRESULT hr = S_OK;
1789
1790 for(;;)
1791 {
1792 // Allocate the new properties
1793 hr = E_OUTOFMEMORY;
1794
1795 // FIXME: convert the hostname to Punycode, not the ANSI codepage
1796 lpszNewServer = AllocLpsz(redirectArgs->server, redirectArgs->server_len / sizeof(OLECHAR));
1797
1798 if(lpszNewServer == NULL && redirectArgs->server_len)
1799 break;
1800
1801 lpszNewCookie = AllocLpsz(redirectArgs->cookie, redirectArgs->cookie_len);
1802
1803 if(lpszNewCookie == NULL && redirectArgs->cookie_len)
1804 break;
1805
1806 strNewUsername = SysAllocStringLen(redirectArgs->username, redirectArgs->username_len / sizeof(OLECHAR));
1807
1808 if(strNewUsername == NULL && redirectArgs->username_len)
1809 break;
1810
1811 strNewDomain = SysAllocStringLen(redirectArgs->domain, redirectArgs->domain_len / sizeof(OLECHAR));
1812
1813 if(strNewDomain == NULL && redirectArgs->domain_len)
1814 break;
1815
1816 strNewPassword = SysAllocStringLen(redirectArgs->password, redirectArgs->password_len / sizeof(OLECHAR));
1817
1818 if(strNewPassword == NULL && redirectArgs->password_len)
1819 break;
1820
1821 hr = S_OK;
1822 break;
1823 }
1824
1825 // Success
1826 if(SUCCEEDED(hr))
1827 {
1828 // set the new properties
1829 ReplaceProperty(m_Server, lpszNewServer);
1830 ReplaceProperty(m_LoadBalanceInfo, lpszNewCookie);
1831 ReplaceProperty(m_UserName, strNewUsername);
1832 ReplaceProperty(m_Domain, strNewDomain);
1833 ReplaceProperty(m_ClearTextPassword, strNewPassword);
1834 }
1835 // Failure
1836 else
1837 {
1838 // free the buffers
1839 FreeLpsz(lpszNewServer);
1840 FreeLpsz(lpszNewCookie);
1841 SysFreeString(strNewUsername);
1842 SysFreeString(strNewDomain);
1843 SysFreeString(strNewPassword);
1844
1845 // signal the error
1848 result = -1;
1849 }
1850 }
1851
1852 break;
1853
1854 // BUGBUG: this could potentially disconnect an unrelated connection established later...
1856 {
1858
1859 if(m_Connected)
1860 {
1861 // Ask confirmation to the container in case we are logged in
1862 if(m_loggedIn && !FireConfirmClose())
1863 break;
1864
1865 // For reentrancy (OnConfirmClose could deviously call Disconnect)
1866 if(m_protocolThread == NULL)
1867 break;
1868
1869 // Terminate the protocol thread. It will fire the Disconnected event on exit
1871 }
1872 }
1873
1874 break;
1875
1876 default:
1877 return false;
1878 }
1879
1880 // If the calling thread is blocked, unblock it ASAP
1881 if(InSendMessage())
1883
1884 return true;
1885 }
#define False
Definition: types.h:25
void PerformDisconnect(long reason)
Definition: activex.cpp:3994
void JoinProtocolThread()
Definition: activex.cpp:3965
RDPCLIENT m_protocolState
Definition: activex.cpp:1361
HRESULT ReplaceProperty(BSTR &prop, BSTR newValue)
Definition: activex.cpp:1517
bool FireConfirmClose()
Definition: activex.cpp:2080
LPSTR AllocLpsz(const CHAR *lpsz, size_t cb)
Definition: activex.cpp:61
BOOL redirect
Definition: rdesktop.h:213
int disconnect_reason
Definition: rdesktop.h:191
BOOL WINAPI ReplyMessage(_In_ LRESULT)
BOOL WINAPI InSendMessage(void)
Definition: message.c:1372
char * LPSTR
Definition: xmlstorage.h:182

◆ IConnectionPointContainer::EnumConnectionPoints()

virtual STDMETHODIMP SEALED_::IConnectionPointContainer::EnumConnectionPoints ( IEnumConnectionPoints **  ppEnum)
inlinevirtual

Definition at line 4572 of file activex.cpp.

4573 {
4574 *ppEnum = new CEnumConnectionPoints(this);
4575
4576 if(*ppEnum == NULL)
4577 return E_OUTOFMEMORY;
4578
4579 return S_OK;
4580 }

◆ IConnectionPointContainer::FindConnectionPoint()

virtual STDMETHODIMP SEALED_::IConnectionPointContainer::FindConnectionPoint ( REFIID  riid,
IConnectionPoint **  ppCP 
)
inlinevirtual

Definition at line 4582 of file activex.cpp.

4583 {
4584 if(riid != MSTSCLib::DIID_IMsTscAxEvents)
4586
4587 addRef();
4588 *ppCP = this;
4589
4590 return S_OK;
4591 }
#define CONNECT_E_NOCONNECTION
Definition: olectl.h:251

◆ IDataObject::DAdvise()

virtual STDMETHODIMP SEALED_::IDataObject::DAdvise ( FORMATETC *  pformatetc,
DWORD  advf,
IAdviseSink pAdvSink,
DWORD pdwConnection 
)
inlinevirtual

Definition at line 4624 of file activex.cpp.

4625 {
4626 return E_NOTIMPL;
4627 }

◆ IDataObject::DUnadvise()

virtual STDMETHODIMP SEALED_::IDataObject::DUnadvise ( DWORD  dwConnection)
inlinevirtual

Definition at line 4629 of file activex.cpp.

4630 {
4631 return E_NOTIMPL;
4632 }

◆ IDataObject::EnumDAdvise()

virtual STDMETHODIMP SEALED_::IDataObject::EnumDAdvise ( IEnumSTATDATA **  ppenumAdvise)
inlinevirtual

Definition at line 4634 of file activex.cpp.

4635 {
4636 return E_NOTIMPL;
4637 }

◆ IDataObject::EnumFormatEtc()

virtual STDMETHODIMP SEALED_::IDataObject::EnumFormatEtc ( DWORD  dwDirection,
IEnumFORMATETC **  ppenumFormatEtc 
)
inlinevirtual

Definition at line 4619 of file activex.cpp.

4620 {
4621 return E_NOTIMPL;
4622 }

◆ IDataObject::GetCanonicalFormatEtc()

virtual STDMETHODIMP SEALED_::IDataObject::GetCanonicalFormatEtc ( FORMATETC *  pformatectIn,
FORMATETC *  pformatetcOut 
)
inlinevirtual

Definition at line 4609 of file activex.cpp.

4610 {
4611 return E_NOTIMPL;
4612 }

◆ IDataObject::GetData()

virtual STDMETHODIMP SEALED_::IDataObject::GetData ( FORMATETC *  pformatetcIn,
STGMEDIUM *  pmedium 
)
inlinevirtual

Definition at line 4594 of file activex.cpp.

4595 {
4596 return E_NOTIMPL;
4597 }

◆ IDataObject::GetDataHere()

virtual STDMETHODIMP SEALED_::IDataObject::GetDataHere ( FORMATETC *  pformatetc,
STGMEDIUM *  pmedium 
)
inlinevirtual

Definition at line 4599 of file activex.cpp.

4600 {
4601 return E_NOTIMPL;
4602 }

◆ IDataObject::QueryGetData()

virtual STDMETHODIMP SEALED_::IDataObject::QueryGetData ( FORMATETC *  pformatetc)
inlinevirtual

Definition at line 4604 of file activex.cpp.

4605 {
4606 return E_NOTIMPL;
4607 }

◆ IDataObject::SetData()

virtual STDMETHODIMP SEALED_::IDataObject::SetData ( FORMATETC *  pformatetc,
STGMEDIUM *  pmedium,
BOOL  fRelease 
)
inlinevirtual

Definition at line 4614 of file activex.cpp.

4615 {
4616 return E_NOTIMPL;
4617 }

◆ IDispatch::GetIDsOfNames()

virtual STDMETHODIMP SEALED_::IDispatch::GetIDsOfNames ( REFIID  riid,
LPOLESTR rgszNames,
UINT  cNames,
LCID  lcid,
DISPID rgDispId 
)
inlinevirtual

Definition at line 4451 of file activex.cpp.

4452 {
4454
4455 if(FAILED(hr))
4456 return hr;
4457
4458 return m_dispTypeInfo->GetIDsOfNames(rgszNames, cNames, rgDispId);
4459 }
HRESULT GetIDsOfNames([in, size_is(cNames)] LPOLESTR *rgszNames, [in] UINT cNames, [out, size_is(cNames)] MEMBERID *pMemId)

◆ IDispatch::GetTypeInfo()

virtual STDMETHODIMP SEALED_::IDispatch::GetTypeInfo ( UINT  iTInfo,
LCID  lcid,
ITypeInfo **  ppTInfo 
)
inlinevirtual

Definition at line 4443 of file activex.cpp.

4444 {
4445 if(iTInfo != 0)
4446 return DISP_E_BADINDEX;
4447
4448 return AcquireDispTypeInfo(ppTInfo);
4449 }
HRESULT AcquireDispTypeInfo(ITypeInfo **ppTI)
Definition: activex.cpp:3595
#define DISP_E_BADINDEX
Definition: winerror.h:2520

◆ IDispatch::GetTypeInfoCount()

virtual STDMETHODIMP SEALED_::IDispatch::GetTypeInfoCount ( UINT pctinfo)
inlinevirtual

Definition at line 4437 of file activex.cpp.

4438 {
4439 *pctinfo = 1;
4440 return S_OK;
4441 }

◆ IDispatch::Invoke()

virtual STDMETHODIMP SEALED_::IDispatch::Invoke ( DISPID  dispIdMember,
REFIID  riid,
LCID  lcid,
WORD  wFlags,
DISPPARAMS *  pDispParams,
VARIANT pVarResult,
EXCEPINFO *  pExcepInfo,
UINT puArgErr 
)
inlinevirtual

Definition at line 4461 of file activex.cpp.

4462 {
4464
4465 if(FAILED(hr))
4466 return hr;
4467
4468 return m_dispTypeInfo->Invoke
4469 (
4470 static_cast<MSTSCLib::IMsRdpClient4 *>(this),
4471 dispIdMember,
4472 wFlags,
4473 pDispParams,
4474 pVarResult,
4475 pExcepInfo,
4476 puArgErr
4477 );
4478 }
HRESULT Invoke([in] PVOID pvInstance, [in] MEMBERID memid, [in] WORD wFlags, [in, out] DISPPARAMS *pDispParams, [out] VARIANT *pVarResult, [out] EXCEPINFO *pExcepInfo, [out] UINT *puArgErr)
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:531

◆ IMsRdpClient2::get_AdvancedSettings3()

virtual STDMETHODIMP SEALED_::IMsRdpClient2::get_AdvancedSettings3 ( MSTSCLib::IMsRdpClientAdvancedSettings2 **  ppAdvSettings) const
inlinevirtual

Definition at line 5511 of file activex.cpp.

5512 {
5513 return GetAdvancedSettings(ppAdvSettings);
5514 }
HRESULT GetAdvancedSettings(Interface **ppAdvSettings)
Definition: activex.cpp:3331

◆ IMsRdpClient2::get_ConnectedStatusText()

virtual STDMETHODIMP SEALED_::IMsRdpClient2::get_ConnectedStatusText ( BSTR pConnectedStatusText) const
inlinevirtual

Definition at line 5521 of file activex.cpp.

5522 {
5523 return GetProperty(m_ConnectedStatusText, pConnectedStatusText);
5524 }
HRESULT GetProperty(BSTR &prop, BSTR *retVal) const
Definition: activex.cpp:1459

◆ IMsRdpClient2::put_ConnectedStatusText()

virtual STDMETHODIMP SEALED_::IMsRdpClient2::put_ConnectedStatusText ( BSTR  pConnectedStatusText)
inlinevirtual

Definition at line 5516 of file activex.cpp.

5517 {
5518 return SetProperty(m_ConnectedStatusText, pConnectedStatusText);
5519 }
HRESULT SetProperty(BSTR &prop, BSTR newValue)
Definition: activex.cpp:1489

◆ IMsRdpClient3::get_AdvancedSettings4()

virtual STDMETHODIMP SEALED_::IMsRdpClient3::get_AdvancedSettings4 ( MSTSCLib::IMsRdpClientAdvancedSettings3 **  ppAdvSettings) const
inlinevirtual

Definition at line 5527 of file activex.cpp.

5528 {
5529 return GetAdvancedSettings(ppAdvSettings);
5530 }

◆ IMsRdpClient4::get_AdvancedSettings5()

virtual STDMETHODIMP SEALED_::IMsRdpClient4::get_AdvancedSettings5 ( MSTSCLib::IMsRdpClientAdvancedSettings4 **  ppAdvSettings5) const
inlinevirtual

Definition at line 5533 of file activex.cpp.

5534 {
5535 return GetAdvancedSettings(ppAdvSettings5);
5536 }

◆ IMsRdpClient::get_AdvancedSettings2()

virtual STDMETHODIMP SEALED_::IMsRdpClient::get_AdvancedSettings2 ( MSTSCLib::IMsRdpClientAdvancedSettings **  ppAdvSettings) const
inlinevirtual

Definition at line 5449 of file activex.cpp.

5450 {
5451 return GetAdvancedSettings(ppAdvSettings);
5452 }

◆ IMsRdpClient::get_ColorDepth()

virtual STDMETHODIMP SEALED_::IMsRdpClient::get_ColorDepth ( long pcolorDepth) const
inlinevirtual

Definition at line 5444 of file activex.cpp.

5445 {
5446 return GetProperty(m_ColorDepth, pcolorDepth);
5447 }

◆ IMsRdpClient::get_ExtendedDisconnectReason()

virtual STDMETHODIMP SEALED_::IMsRdpClient::get_ExtendedDisconnectReason ( MSTSCLib::ExtendedDisconnectReasonCode pExtendedDisconnectReason) const
inlinevirtual

Definition at line 5459 of file activex.cpp.

5460 {
5461 return GetProperty(m_ExtendedDisconnectReason, pExtendedDisconnectReason);
5462 }

◆ IMsRdpClient::get_FullScreen()

virtual STDMETHODIMP SEALED_::IMsRdpClient::get_FullScreen ( VARIANT_BOOL pfFullScreen) const
inlinevirtual

Definition at line 5476 of file activex.cpp.

5477 {
5478 return GetProperty(m_FullScreen, pfFullScreen);
5479 }

◆ IMsRdpClient::get_SecuredSettings2()

virtual STDMETHODIMP SEALED_::IMsRdpClient::get_SecuredSettings2 ( MSTSCLib::IMsRdpClientSecuredSettings **  ppSecuredSettings) const
inlinevirtual

Definition at line 5454 of file activex.cpp.

5455 {
5456 return GetSecuredSettings(ppSecuredSettings);
5457 }
HRESULT GetSecuredSettings(Interface **ppSecuredSettings)
Definition: activex.cpp:3530

◆ IMsRdpClient::GetVirtualChannelOptions()

virtual STDMETHODIMP SEALED_::IMsRdpClient::GetVirtualChannelOptions ( BSTR  chanName,
long pChanOptions 
)
inlinevirtual

Definition at line 5486 of file activex.cpp.

5487 {
5488 return E_NOTIMPL; // TODO
5489 }

◆ IMsRdpClient::put_ColorDepth()

virtual STDMETHODIMP SEALED_::IMsRdpClient::put_ColorDepth ( long  pcolorDepth)
inlinevirtual

Definition at line 5426 of file activex.cpp.

5427 {
5428 switch(pcolorDepth)
5429 {
5430 case 8:
5431 case 15:
5432 case 16:
5433 case 24:
5434 case 32:
5435 break;
5436
5437 default:
5438 return E_INVALIDARG;
5439 }
5440
5441 return SetProperty(m_ColorDepth, pcolorDepth);
5442 }
#define E_INVALIDARG
Definition: ddrawi.h:101

◆ IMsRdpClient::put_FullScreen()

virtual STDMETHODIMP SEALED_::IMsRdpClient::put_FullScreen ( VARIANT_BOOL  pfFullScreen)
inlinevirtual

Definition at line 5464 of file activex.cpp.

5465 {
5466 if(!m_Connected)
5467 return E_FAIL;
5468
5469 if(pfFullScreen && !m_SecuredSettingsEnabled)
5470 return E_FAIL;
5471
5472 // TODO
5473 return E_NOTIMPL;
5474 }

◆ IMsRdpClient::RequestClose()

virtual STDMETHODIMP SEALED_::IMsRdpClient::RequestClose ( MSTSCLib::ControlCloseStatus pCloseStatus)
inlinevirtual

Definition at line 5491 of file activex.cpp.

5492 {
5493 if(pCloseStatus == NULL)
5494 return E_POINTER;
5495
5496 if(!m_Connected)
5497 {
5498 *pCloseStatus = MSTSCLib::controlCloseCanProceed;
5499 return S_OK;
5500 }
5501
5503
5504 if(!PostMessage(m_controlWindow, RDPC_WM_REQUEST_CLOSE, 0, 0))
5506
5507 return S_OK;
5508 }
@ controlCloseWaitForEvents
Definition: mstsclib.idl:74
@ controlCloseCanProceed
Definition: mstsclib.idl:73

◆ IMsRdpClient::SetVirtualChannelOptions()

virtual STDMETHODIMP SEALED_::IMsRdpClient::SetVirtualChannelOptions ( BSTR  chanName,
long  chanOptions 
)
inlinevirtual

Definition at line 5481 of file activex.cpp.

5482 {
5483 return E_NOTIMPL; // TODO
5484 }

◆ IMsRdpClientNonScriptable2::get_UIParentWindowHandle()

virtual STDMETHODIMP SEALED_::IMsRdpClientNonScriptable2::get_UIParentWindowHandle ( HWND phwndUIParentWindowHandle) const
inlinevirtual

Definition at line 5608 of file activex.cpp.

5609 {
5610 return GetProperty(m_UIParentWindowHandle, phwndUIParentWindowHandle);
5611 }

◆ IMsRdpClientNonScriptable2::put_UIParentWindowHandle()

virtual STDMETHODIMP SEALED_::IMsRdpClientNonScriptable2::put_UIParentWindowHandle ( HWND  phwndUIParentWindowHandle)
inlinevirtual

Definition at line 5603 of file activex.cpp.

5604 {
5605 return SetProperty(m_UIParentWindowHandle, phwndUIParentWindowHandle);
5606 }

◆ IMsRdpClientNonScriptable::NotifyRedirectDeviceChange()

virtual STDMETHODIMP SEALED_::IMsRdpClientNonScriptable::NotifyRedirectDeviceChange ( MSTSCLib::UINT_PTR  wParam,
MSTSCLib::LONG_PTR  lParam 
)
inlinevirtual

Definition at line 5590 of file activex.cpp.

5591 {
5592 return E_NOTIMPL; // TODO
5593 }

◆ IMsRdpClientNonScriptable::SendKeys()

virtual STDMETHODIMP SEALED_::IMsRdpClientNonScriptable::SendKeys ( long  numKeys,
VARIANT_BOOL pbArrayKeyUp,
long plKeyData 
)
inlinevirtual

Definition at line 5595 of file activex.cpp.

5596 {
5597 // NOTE: the keys must be sent in a single, atomic sequence
5598 // TODO: acquire the write lock
5599 return E_NOTIMPL; // TODO
5600 }

◆ IMsTscAx::Connect()

virtual STDMETHODIMP SEALED_::IMsTscAx::Connect ( )
inlinevirtual

Definition at line 5273 of file activex.cpp.

5274 {
5275 if(m_Connected)
5276 {
5277 // Protocol thread waiting for a manual reconnection: wake it up
5278 if(m_protocolThreadWaitingReconnection)
5279 {
5280 SetEvent(m_protocolThreadWaitingReconnection);
5281 return S_OK;
5282 }
5283
5284 return E_FAIL;
5285 }
5286
5287 m_Connected = true;
5288
5289 HRESULT hr;
5290
5291 if(m_controlWindow == NULL)
5292 {
5294
5295 if(FAILED(hr))
5296 return hr;
5297 }
5298
5299 for(;;)
5300 {
5301 // TODO: initialize plugin DLLs/channels
5302
5303 m_clientUI = new RdpClientUI();
5304
5305 if(m_clientUI == NULL)
5306 {
5307 hr = E_OUTOFMEMORY;
5308 break;
5309 }
5310
5311 m_clientUI->Initialize(m_controlWindow);
5312
5314
5316 {
5317 hr = E_OUTOFMEMORY;
5318 break;
5319 }
5320
5322
5324 {
5326 break;
5327 }
5328
5329 // Keyboard layout
5330 // BUGBUG: not too sure about the semantics
5331 long keyboardLayout = -1;
5332 WCHAR * endPtr = NULL;
5333
5334 if(m_KeyboardLayoutString)
5335 keyboardLayout = wcstol(m_KeyboardLayoutString, &endPtr, 0);
5336
5337 // no keyboard layout specified or invalid keyboard layout: use current keyboard layout
5338 if(endPtr == NULL || *endPtr == 0 || keyboardLayout == -1)
5339 keyboardLayout = PtrToLong(GetKeyboardLayout(0)); // FIXME? use LOWORD()?
5340
5341 m_protocolState.keylayout = keyboardLayout;
5342
5343 // in case of failure, assume English (US)
5344 if(m_protocolState.keylayout == 0)
5346
5347 // Physical keyboard information
5351
5352 // in case of failure, assume an IBM Enhanced keyboard with 12 function keys
5354 {
5358 }
5359
5360 // More initialization
5368 m_protocolState.encryption = m_EncryptionEnabled ? TRUE : FALSE; // TBD: detect automatically
5370 m_protocolState.desktop_save = True; // FIXME? tie to bitmap cache setting?
5372 m_protocolState.use_rdp5 = True; // TBD: detect automatically
5376 m_protocolState.rdp.current_status = 1;
5377
5378 // TODO: cache tuning based on the provided parameters
5379
5380 m_protocolState.cache.bmpcache_lru[0] = -1;
5381 m_protocolState.cache.bmpcache_lru[1] = -1;
5382 m_protocolState.cache.bmpcache_lru[2] = -1;
5383 m_protocolState.cache.bmpcache_mru[0] = -1;
5384 m_protocolState.cache.bmpcache_mru[1] = -1;
5385 m_protocolState.cache.bmpcache_mru[2] = -1;
5386
5387 DWORD dwIgnore;
5388 m_protocolThread = CreateThread(NULL, 0, ProtocolLoopThreadProc, this, 0, &dwIgnore);
5389
5390 hr = S_OK;
5391 break;
5392 }
5393
5394 if(FAILED(hr))
5395 m_Connected = false;
5396
5397 return hr;
5398 }
#define True
Definition: types.h:24
#define PtrToLong(p)
Definition: basetsd.h:84
HRESULT Initialize(HWND hwndParent)
Definition: activex.cpp:304
bool m_ConnectToServerConsole
Definition: activex.cpp:1443
long m_DesktopHeight
Definition: activex.cpp:1389
long m_DesktopWidth
Definition: activex.cpp:1388
long m_ColorDepth
Definition: activex.cpp:1391
bool m_Compress
Definition: activex.cpp:1426
long m_PerformanceFlags
Definition: activex.cpp:1419
long m_RDPPort
Definition: activex.cpp:1396
HANDLE m_protocolThread
Definition: activex.cpp:1362
bool m_Connected
Definition: activex.cpp:1425
bool m_EncryptionEnabled
Definition: activex.cpp:1435
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
Definition: thread.c:137
_Check_return_ long __cdecl wcstol(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
LPSTR BstrToLpsz(BSTR bstr)
Definition: activex.cpp:97
#define MAKELANGID(p, s)
Definition: nls.h:15
#define LANG_ENGLISH
Definition: nls.h:52
#define SUBLANG_ENGLISH_US
Definition: nls.h:222
BOOL WINAPI SHIM_OBJ_NAME() GetComputerNameA(LPSTR lpBuffer, LPDWORD lpnSize)
Definition: shimtest.c:21
BOOL use_rdp5
Definition: rdesktop.h:208
int tcp_port_rdp
Definition: rdesktop.h:229
int keyboard_subtype
Definition: rdesktop.h:194
BOOL bitmap_cache
Definition: rdesktop.h:201
int keyboard_type
Definition: rdesktop.h:193
BOOL bitmap_cache_persist_enable
Definition: rdesktop.h:202
struct rdpclient::rdp_ rdp
int width
Definition: rdesktop.h:197
unsigned int keylayout
Definition: rdesktop.h:192
int keyboard_functionkeys
Definition: rdesktop.h:195
int server_depth
Definition: rdesktop.h:199
BOOL bitmap_cache_precache
Definition: rdesktop.h:203
char * licence_username
Definition: rdesktop.h:175
BOOL encryption
Definition: rdesktop.h:204
BOOL packet_encryption
Definition: rdesktop.h:205
struct rdpclient::cache_ cache
char licence_hostname[MAX_COMPUTERNAME_LENGTH+1]
Definition: rdesktop.h:176
BOOL desktop_save
Definition: rdesktop.h:206
BOOL bitmap_compression
Definition: rdesktop.h:200
uint32 rdp5_performanceflags
Definition: rdesktop.h:210
BOOL polygon_ellipse_orders
Definition: rdesktop.h:207
int height
Definition: rdesktop.h:198
BOOL console_session
Definition: rdesktop.h:209
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:733
HKL WINAPI GetKeyboardLayout(_In_ DWORD)
int WINAPI GetKeyboardType(_In_ int)
__wchar_t WCHAR
Definition: xmlstorage.h:180

◆ IMsTscAx::CreateVirtualChannels()

virtual STDMETHODIMP SEALED_::IMsTscAx::CreateVirtualChannels ( BSTR  newVal)
inlinevirtual

Definition at line 5410 of file activex.cpp.

5411 {
5412 UINT strLength = SysStringLen(newVal);
5413
5414 if(strLength < 1 || strLength > 300)
5415 return E_INVALIDARG;
5416
5417 return E_NOTIMPL; // TODO
5418 }
unsigned int UINT
Definition: ndis.h:50

◆ IMsTscAx::Disconnect()

virtual STDMETHODIMP SEALED_::IMsTscAx::Disconnect ( )
inlinevirtual

Definition at line 5400 of file activex.cpp.

5401 {
5402 if(!m_Connected)
5403 return E_FAIL;
5404
5405 // Terminate the protocol thread. On exit, it will fire the Disconnected event
5407 return S_OK;
5408 }

◆ IMsTscAx::get_AdvancedSettings()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_AdvancedSettings ( MSTSCLib::IMsTscAdvancedSettings **  ppAdvSettings) const
inlinevirtual

Definition at line 5263 of file activex.cpp.

5264 {
5265 return GetAdvancedSettings(ppAdvSettings);
5266 }

◆ IMsTscAx::get_CipherStrength()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_CipherStrength ( long pCipherStrength) const
inlinevirtual

Definition at line 5229 of file activex.cpp.

5230 {
5231 if(pCipherStrength == NULL)
5232 return E_INVALIDARG;
5233
5234 *pCipherStrength = 128; // BUGBUG: a later version may change this. Use a compile-time constant
5235 return S_OK;
5236 }

◆ IMsTscAx::get_Connected()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_Connected ( short pIsConnected) const
inlinevirtual

Definition at line 5172 of file activex.cpp.

5173 {
5174 return GetProperty(m_Connected, pIsConnected);
5175 }

◆ IMsTscAx::get_ConnectingText()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_ConnectingText ( BSTR pConnectingText) const
inlinevirtual

Definition at line 5167 of file activex.cpp.

5168 {
5169 return GetProperty(m_ConnectingText, pConnectingText);
5170 }

◆ IMsTscAx::get_Debugger()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_Debugger ( MSTSCLib::IMsTscDebug **  ppDebugger) const
inlinevirtual

Definition at line 5268 of file activex.cpp.

5269 {
5270 return E_NOTIMPL;
5271 }

◆ IMsTscAx::get_DesktopHeight()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_DesktopHeight ( long pVal) const
inlinevirtual

Definition at line 5198 of file activex.cpp.

5199 {
5200 return GetProperty(m_DesktopHeight, pVal);
5201 }

◆ IMsTscAx::get_DesktopWidth()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_DesktopWidth ( long pVal) const
inlinevirtual

Definition at line 5185 of file activex.cpp.

5186 {
5187 return GetProperty(m_DesktopWidth, pVal);
5188 }

◆ IMsTscAx::get_DisconnectedText()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_DisconnectedText ( BSTR pDisconnectedText) const
inlinevirtual

Definition at line 5157 of file activex.cpp.

5158 {
5159 return GetProperty(m_DisconnectedText, pDisconnectedText);
5160 }

◆ IMsTscAx::get_Domain()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_Domain ( BSTR pDomain) const
inlinevirtual

Definition at line 5137 of file activex.cpp.

5138 {
5139 return GetProperty(m_Domain, pDomain);
5140 }

◆ IMsTscAx::get_HorizontalScrollBarVisible()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_HorizontalScrollBarVisible ( long pfHScrollVisible) const
inlinevirtual

Definition at line 5213 of file activex.cpp.

5214 {
5215 return E_NOTIMPL; // TODO
5216 }

◆ IMsTscAx::get_SecuredSettings()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_SecuredSettings ( MSTSCLib::IMsTscSecuredSettings **  ppSecuredSettings) const
inlinevirtual

Definition at line 5258 of file activex.cpp.

5259 {
5260 return GetSecuredSettings(ppSecuredSettings);
5261 }

◆ IMsTscAx::get_SecuredSettingsEnabled()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_SecuredSettingsEnabled ( long pSecuredSettingsEnabled) const
inlinevirtual

Definition at line 5252 of file activex.cpp.

5253 {
5254 // TODO: initialize m_SecuredSettingsEnabled as soon as we have an OLE client site
5255 return GetProperty(m_SecuredSettingsEnabled, pSecuredSettingsEnabled);
5256 }

◆ IMsTscAx::get_Server()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_Server ( BSTR pServer) const
inlinevirtual

Definition at line 5127 of file activex.cpp.

5128 {
5129 return GetProperty(m_Server, pServer);
5130 }

◆ IMsTscAx::get_StartConnected()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_StartConnected ( long pfStartConnected) const
inlinevirtual

Definition at line 5208 of file activex.cpp.

5209 {
5210 return GetProperty(m_StartConnected, pfStartConnected);
5211 }

◆ IMsTscAx::get_UserName()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_UserName ( BSTR pUserName) const
inlinevirtual

Definition at line 5147 of file activex.cpp.

5148 {
5149 return GetProperty(m_UserName, pUserName);
5150 }
static LPWSTR pUserName

◆ IMsTscAx::get_Version()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_Version ( BSTR pVersion) const
inlinevirtual

Definition at line 5238 of file activex.cpp.

5239 {
5240 if(pVersion == NULL)
5241 return E_INVALIDARG;
5242
5243 BSTR version = SysAllocString(L"5.2.3790.1830"); // BUGBUG: don't use hardcoded string
5244
5245 if(version == NULL)
5246 return E_OUTOFMEMORY;
5247
5248 *pVersion = version;
5249 return S_OK;
5250 }
static const WCHAR version[]
Definition: asmname.c:66
#define L(x)
Definition: ntvdm.h:50

◆ IMsTscAx::get_VerticalScrollBarVisible()

virtual STDMETHODIMP SEALED_::IMsTscAx::get_VerticalScrollBarVisible ( long pfVScrollVisible) const
inlinevirtual

Definition at line 5218 of file activex.cpp.

5219 {
5220 return E_NOTIMPL; // TODO
5221 }

◆ IMsTscAx::put_ConnectingText()

virtual STDMETHODIMP SEALED_::IMsTscAx::put_ConnectingText ( BSTR  pConnectingText)
inlinevirtual

Definition at line 5162 of file activex.cpp.

5163 {
5164 return SetProperty(m_ConnectingText, pConnectingText);
5165 }

◆ IMsTscAx::put_DesktopHeight()

virtual STDMETHODIMP SEALED_::IMsTscAx::put_DesktopHeight ( long  pVal)
inlinevirtual

Definition at line 5190 of file activex.cpp.

5191 {
5192 if(pVal < 200 || pVal > 1200)
5193 return E_INVALIDARG;
5194
5195 return SetProperty(m_DesktopHeight, pVal);
5196 }

◆ IMsTscAx::put_DesktopWidth()

virtual STDMETHODIMP SEALED_::IMsTscAx::put_DesktopWidth ( long  pVal)
inlinevirtual

Definition at line 5177 of file activex.cpp.

5178 {
5179 if(pVal < 200 || pVal > 1600)
5180 return E_INVALIDARG;
5181
5182 return SetProperty(m_DesktopWidth, pVal);
5183 }

◆ IMsTscAx::put_DisconnectedText()

virtual STDMETHODIMP SEALED_::IMsTscAx::put_DisconnectedText ( BSTR  pDisconnectedText)
inlinevirtual

Definition at line 5152 of file activex.cpp.

5153 {
5154 return SetProperty(m_DisconnectedText, pDisconnectedText);
5155 }

◆ IMsTscAx::put_Domain()

virtual STDMETHODIMP SEALED_::IMsTscAx::put_Domain ( BSTR  pDomain)
inlinevirtual

Definition at line 5132 of file activex.cpp.

5133 {
5134 return SetProperty(m_Domain, pDomain);
5135 }

◆ IMsTscAx::put_FullScreenTitle()

virtual STDMETHODIMP SEALED_::IMsTscAx::put_FullScreenTitle ( BSTR  rhs)
inlinevirtual

Definition at line 5223 of file activex.cpp.

5224 {
5225 // TODO
5226 return E_NOTIMPL;
5227 }

◆ IMsTscAx::put_Server()

virtual STDMETHODIMP SEALED_::IMsTscAx::put_Server ( BSTR  pServer)
inlinevirtual

Definition at line 5121 of file activex.cpp.

5122 {
5123 // FIXME: convert the hostname to Punycode, not the ANSI codepage
5124 return SetProperty(m_Server, pServer);
5125 }

◆ IMsTscAx::put_StartConnected()

virtual STDMETHODIMP SEALED_::IMsTscAx::put_StartConnected ( long  pfStartConnected)
inlinevirtual

Definition at line 5203 of file activex.cpp.

5204 {
5205 return SetProperty(m_StartConnected, pfStartConnected);
5206 }

◆ IMsTscAx::put_UserName()

virtual STDMETHODIMP SEALED_::IMsTscAx::put_UserName ( BSTR  pUserName)
inlinevirtual

Definition at line 5142 of file activex.cpp.

5143 {
5144 return SetProperty(m_UserName, pUserName);
5145 }

◆ IMsTscAx::SendOnVirtualChannel()

virtual STDMETHODIMP SEALED_::IMsTscAx::SendOnVirtualChannel ( BSTR  chanName,
BSTR  ChanData 
)
inlinevirtual

Definition at line 5420 of file activex.cpp.

5421 {
5422 return E_NOTIMPL; // TODO
5423 }

◆ IMsTscNonScriptable::get_BinaryPassword()

virtual STDMETHODIMP SEALED_::IMsTscNonScriptable::get_BinaryPassword ( BSTR pBinaryPassword) const
inlinevirtual

Definition at line 5569 of file activex.cpp.

5570 {
5571 return E_NOTIMPL;
5572 }

◆ IMsTscNonScriptable::get_BinarySalt()

virtual STDMETHODIMP SEALED_::IMsTscNonScriptable::get_BinarySalt ( BSTR pSalt) const
inlinevirtual

Definition at line 5579 of file activex.cpp.

5580 {
5581 return E_NOTIMPL;
5582 }

◆ IMsTscNonScriptable::get_PortablePassword()

virtual STDMETHODIMP SEALED_::IMsTscNonScriptable::get_PortablePassword ( BSTR pPortablePass) const
inlinevirtual

Definition at line 5549 of file activex.cpp.

5550 {
5551 return E_NOTIMPL;
5552 }

◆ IMsTscNonScriptable::get_PortableSalt()

virtual STDMETHODIMP SEALED_::IMsTscNonScriptable::get_PortableSalt ( BSTR pPortableSalt) const
inlinevirtual

Definition at line 5559 of file activex.cpp.

5560 {
5561 return E_NOTIMPL;
5562 }

◆ IMsTscNonScriptable::put_BinaryPassword()

virtual STDMETHODIMP SEALED_::IMsTscNonScriptable::put_BinaryPassword ( BSTR  pBinaryPassword)
inlinevirtual

Definition at line 5564 of file activex.cpp.

5565 {
5566 return E_NOTIMPL;
5567 }

◆ IMsTscNonScriptable::put_BinarySalt()

virtual STDMETHODIMP SEALED_::IMsTscNonScriptable::put_BinarySalt ( BSTR  pSalt)
inlinevirtual

Definition at line 5574 of file activex.cpp.

5575 {
5576 return E_NOTIMPL;
5577 }

◆ IMsTscNonScriptable::put_ClearTextPassword()

virtual STDMETHODIMP SEALED_::IMsTscNonScriptable::put_ClearTextPassword ( BSTR  rhs)
inlinevirtual

Definition at line 5539 of file activex.cpp.

5540 {
5541 return SetProperty(m_ClearTextPassword, rhs);
5542 }

◆ IMsTscNonScriptable::put_PortablePassword()

virtual STDMETHODIMP SEALED_::IMsTscNonScriptable::put_PortablePassword ( BSTR  pPortablePass)
inlinevirtual

Definition at line 5544 of file activex.cpp.

5545 {
5546 return E_NOTIMPL;
5547 }

◆ IMsTscNonScriptable::put_PortableSalt()

virtual STDMETHODIMP SEALED_::IMsTscNonScriptable::put_PortableSalt ( BSTR  pPortableSalt)
inlinevirtual

Definition at line 5554 of file activex.cpp.

5555 {
5556 return E_NOTIMPL;
5557 }

◆ IMsTscNonScriptable::ResetPassword()

virtual STDMETHODIMP SEALED_::IMsTscNonScriptable::ResetPassword ( )
inlinevirtual

Definition at line 5584 of file activex.cpp.

5585 {
5586 return SetProperty(m_ClearTextPassword, NULL);
5587 }

◆ InnerToOuter() [1/8]

static RdpClient * SEALED_::InnerToOuter ( AdvancedSettings *  innerThis)
inlinestatic

Definition at line 3614 of file activex.cpp.

3615 {
3616 return CONTAINING_RECORD(innerThis, RdpClient, m_advancedSettings);
3617 }
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

◆ InnerToOuter() [2/8]

static const RdpClient * SEALED_::InnerToOuter ( const AdvancedSettings *  innerThis)
inlinestatic

Definition at line 3634 of file activex.cpp.

3635 {
3636 return CONTAINING_RECORD(innerThis, RdpClient, m_advancedSettings);
3637 }

◆ InnerToOuter() [3/8]

static const RdpClient * SEALED_::InnerToOuter ( const RDPCLIENT innerThis)
inlinestatic

Definition at line 3644 of file activex.cpp.

3645 {
3646 return CONTAINING_RECORD(innerThis, RdpClient, m_protocolState);
3647 }

◆ InnerToOuter() [4/8]

static const RdpClient * SEALED_::InnerToOuter ( const RdpClientInner innerThis)
inlinestatic

Definition at line 3629 of file activex.cpp.

3630 {
3631 return CONTAINING_RECORD(innerThis, RdpClient, m_inner);
3632 }

◆ InnerToOuter() [5/8]

static const RdpClient * SEALED_::InnerToOuter ( const SecuredSettings *  innerThis)
inlinestatic

Definition at line 3639 of file activex.cpp.

3640 {
3641 return CONTAINING_RECORD(innerThis, RdpClient, m_securedSettings);
3642 }

◆ InnerToOuter() [6/8]

static RdpClient * SEALED_::InnerToOuter ( RDPCLIENT innerThis)
inlinestatic

Definition at line 3624 of file activex.cpp.

3625 {
3626 return CONTAINING_RECORD(innerThis, RdpClient, m_protocolState);
3627 }

◆ InnerToOuter() [7/8]

static RdpClient * SEALED_::InnerToOuter ( RdpClientInner innerThis)
inlinestatic

Definition at line 3609 of file activex.cpp.

3610 {
3611 return CONTAINING_RECORD(innerThis, RdpClient, m_inner);
3612 }

◆ InnerToOuter() [8/8]

static RdpClient * SEALED_::InnerToOuter ( SecuredSettings *  innerThis)
inlinestatic

Definition at line 3619 of file activex.cpp.

3620 {
3621 return CONTAINING_RECORD(innerThis, RdpClient, m_securedSettings);
3622 }

◆ InvokeSinks()

void SEALED_::InvokeSinks ( DISPID  eventId,
VARIANTARG  rgvarg[],
unsigned int  cArgs,
VARIANTARG retval 
)
inlineprivate

Definition at line 1621 of file activex.cpp.

1622 {
1623 assert(InsideApartment());
1624
1626
1627 params.rgvarg = rgvarg;
1628 params.rgdispidNamedArgs = NULL;
1629 params.cArgs = cArgs;
1630 params.cNamedArgs = 0;
1631
1633
1634 for(size_t i = 0; i < m_EventSinksCount; ++ i)
1635 sinks[i]->Invoke(eventId, IID_NULL, 0, DISPATCH_METHOD, &params, retval, NULL, NULL);
1636 }
GLenum const GLfloat * params
Definition: glext.h:5645
HRESULT Invoke([in] DISPID dispIdMember, [in] REFIID riid, [in] LCID lcid, [in] WORD wFlags, [in, out] DISPPARAMS *pDispParams, [out] VARIANT *pVarResult, [out] EXCEPINFO *pExcepInfo, [out] UINT *puArgErr)
struct stdole::DISPPARAMS DISPPARAMS
#define DISPATCH_METHOD
Definition: oleauto.h:1006
#define IID_NULL
Definition: guiddef.h:98

◆ IObjectSafety::GetInterfaceSafetyOptions()

virtual STDMETHODIMP SEALED_::IObjectSafety::GetInterfaceSafetyOptions ( REFIID  riid,
DWORD pdwSupportedOptions,
DWORD pdwEnabledOptions 
)
inlinevirtual

Definition at line 4640 of file activex.cpp.

4641 {
4642 if(pdwSupportedOptions == NULL || pdwEnabledOptions == NULL)
4643 return E_POINTER;
4644
4645 if(riid != IID_IDispatch)
4646 return E_NOINTERFACE;
4647
4648 *pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER;
4649 *pdwEnabledOptions = m_SafetyOptions;
4650 return S_OK;
4651 }
DWORD m_SafetyOptions
Definition: activex.cpp:1352
const GUID IID_IDispatch
#define E_NOINTERFACE
Definition: winerror.h:2364

◆ IObjectSafety::SetInterfaceSafetyOptions()

virtual STDMETHODIMP SEALED_::IObjectSafety::SetInterfaceSafetyOptions ( REFIID  riid,
DWORD  dwOptionSetMask,
DWORD  dwEnabledOptions 
)
inlinevirtual

Definition at line 4653 of file activex.cpp.

4654 {
4655 if(riid != IID_IDispatch)
4656 return E_NOINTERFACE;
4657
4658 m_SafetyOptions = dwEnabledOptions & (dwOptionSetMask & INTERFACESAFE_FOR_UNTRUSTED_CALLER);
4659 return S_OK;
4660 }

◆ IOleControl::FreezeEvents()

virtual STDMETHODIMP SEALED_::IOleControl::FreezeEvents ( BOOL  bFreeze)
inlinevirtual

Definition at line 4678 of file activex.cpp.

4679 {
4680 if(bFreeze)
4681 InterlockedIncrement(&m_freezeEvents);
4682 else if(InterlockedDecrement(&m_freezeEvents) == 0)
4684
4685 return S_OK;
4686 }
#define InterlockedDecrement
Definition: armddk.h:52
void UnfreezeEvents()
Definition: activex.cpp:1615

◆ IOleControl::GetControlInfo()

virtual STDMETHODIMP SEALED_::IOleControl::GetControlInfo ( CONTROLINFO pCI)
inlinevirtual

Definition at line 4663 of file activex.cpp.

4664 {
4665 return E_NOTIMPL;
4666 }

◆ IOleControl::OnAmbientPropertyChange()

virtual STDMETHODIMP SEALED_::IOleControl::OnAmbientPropertyChange ( DISPID  dispID)
inlinevirtual

Definition at line 4673 of file activex.cpp.

4674 {
4675 return S_OK;
4676 }

◆ IOleControl::OnMnemonic()

virtual STDMETHODIMP SEALED_::IOleControl::OnMnemonic ( MSG pMsg)
inlinevirtual

Definition at line 4668 of file activex.cpp.

4669 {
4670 return E_NOTIMPL;
4671 }

◆ IOleInPlaceActiveObject::EnableModeless()

virtual STDMETHODIMP SEALED_::IOleInPlaceActiveObject::EnableModeless ( BOOL  fEnable)
inlinevirtual

Definition at line 4711 of file activex.cpp.

4712 {
4713 return S_OK;
4714 }

◆ IOleInPlaceActiveObject::OnDocWindowActivate()

virtual STDMETHODIMP SEALED_::IOleInPlaceActiveObject::OnDocWindowActivate ( BOOL  fActivate)
inlinevirtual

Definition at line 4700 of file activex.cpp.

4701 {
4702 // TODO
4703 return E_NOTIMPL;
4704 }

◆ IOleInPlaceActiveObject::OnFrameWindowActivate()

virtual STDMETHODIMP SEALED_::IOleInPlaceActiveObject::OnFrameWindowActivate ( BOOL  fActivate)
inlinevirtual

Definition at line 4694 of file activex.cpp.

4695 {
4696 // TODO
4697 return E_NOTIMPL;
4698 }

◆ IOleInPlaceActiveObject::ResizeBorder()

virtual STDMETHODIMP SEALED_::IOleInPlaceActiveObject::ResizeBorder ( LPCRECT  prcBorder,
IOleInPlaceUIWindow pUIWindow,
BOOL  fFrameWindow 
)
inlinevirtual

Definition at line 4706 of file activex.cpp.

4707 {
4708 return S_OK;
4709 }

◆ IOleInPlaceActiveObject::TranslateAccelerator()

virtual STDMETHODIMP SEALED_::IOleInPlaceActiveObject::TranslateAccelerator ( LPMSG  lpmsg)
inlinevirtual

Definition at line 4689 of file activex.cpp.

4690 {
4691 return E_NOTIMPL;
4692 }

◆ IOleInPlaceObject::InPlaceDeactivate()

virtual STDMETHODIMP SEALED_::IOleInPlaceObject::InPlaceDeactivate ( )
inlinevirtual

Definition at line 4717 of file activex.cpp.

4718 {
4719 // TODO: UIDeactivate, destroy window, inplacesite->OnInPlaceDeactivate
4720 return E_NOTIMPL;
4721 }

◆ IOleInPlaceObject::ReactivateAndUndo()

virtual STDMETHODIMP SEALED_::IOleInPlaceObject::ReactivateAndUndo ( )
inlinevirtual

Definition at line 4749 of file activex.cpp.

4750 {
4751 return E_NOTIMPL;
4752 }

◆ IOleInPlaceObject::SetObjectRects()

virtual STDMETHODIMP SEALED_::IOleInPlaceObject::SetObjectRects ( LPCRECT  lprcPosRect,
LPCRECT  lprcClipRect 
)
inlinevirtual

Definition at line 4729 of file activex.cpp.

4730 {
4731 if(m_controlWindow == NULL)
4732 return E_FAIL;
4733
4735 (
4736 m_controlWindow,
4737 lprcPosRect->left,
4738 lprcPosRect->top,
4739 lprcPosRect->right - lprcPosRect->left,
4740 lprcPosRect->bottom - lprcPosRect->top,
4741 TRUE
4742 );
4743
4744 SetWindowRgn(m_controlWindow, CreateRectRgnIndirect(lprcClipRect), TRUE);
4745
4746 return E_NOTIMPL;
4747 }
HRGN WINAPI CreateRectRgnIndirect(_In_ LPCRECT)
int WINAPI SetWindowRgn(_In_ HWND, _In_opt_ HRGN, _In_ BOOL)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)

◆ IOleInPlaceObject::UIDeactivate()

virtual STDMETHODIMP SEALED_::IOleInPlaceObject::UIDeactivate ( )
inlinevirtual

Definition at line 4723 of file activex.cpp.

4724 {
4725 // TODO
4726 return E_NOTIMPL;
4727 }

◆ IOleObject::Advise()

virtual STDMETHODIMP SEALED_::IOleObject::Advise ( IAdviseSink pAdvSink,
DWORD pdwConnection 
)
inlinevirtual

Definition at line 4888 of file activex.cpp.

4889 {
4891
4892 if(FAILED(hr))
4893 return hr;
4894
4895 return m_adviseHolder->Advise(pAdvSink, pdwConnection);
4896 }
HRESULT NeedAdviseHolder()
Definition: activex.cpp:4880
HRESULT Advise([in, unique] IAdviseSink *pAdvise, [out] DWORD *pdwConnection)

◆ IOleObject::Close()

virtual STDMETHODIMP SEALED_::IOleObject::Close ( DWORD  dwSaveOption)
inlinevirtual

Definition at line 4785 of file activex.cpp.

4786 {
4787 // TODO: deactivate, destroy window, release in-place site, release advise sink
4788 return E_NOTIMPL; // TODO
4789 }

◆ IOleObject::DoVerb()

virtual STDMETHODIMP SEALED_::IOleObject::DoVerb ( LONG  iVerb,
LPMSG  lpmsg,
IOleClientSite pActiveSite,
LONG  lindex,
HWND  hwndParent,
LPCRECT  lprcPosRect 
)
inlinevirtual

Definition at line 4811 of file activex.cpp.

4812 {
4813 HRESULT hr;
4814
4815 switch(iVerb)
4816 {
4817 case OLEIVERB_PRIMARY:
4818 case OLEIVERB_SHOW:
4821 hr = S_OK;
4822 break;
4823
4824 default:
4825 if(iVerb > 0)
4827 else
4828 hr = E_NOTIMPL;
4829 }
4830
4831 if(FAILED(hr))
4832 return hr;
4833
4834 HRESULT hrActivate = Activate(iVerb, pActiveSite, hwndParent, lprcPosRect);
4835
4836 if(FAILED(hrActivate))
4837 hr = hrActivate;
4838
4839 return hr;
4840 }
HRESULT Activate(LONG iVerb, IOleClientSite *pActiveSite, HWND hwndParent, LPCRECT lprcPosRect)
Definition: activex.cpp:4304
#define OLEIVERB_INPLACEACTIVATE
Definition: ole2.h:43
#define OLEIVERB_SHOW
Definition: ole2.h:39
#define OLEOBJ_S_INVALIDVERB
Definition: winerror.h:2716

◆ IOleObject::EnumAdvise()

virtual STDMETHODIMP SEALED_::IOleObject::EnumAdvise ( IEnumSTATDATA **  ppenumAdvise)
inlinevirtual

Definition at line 4908 of file activex.cpp.

4909 {
4911
4912 if(FAILED(hr))
4913 return hr;
4914
4915 return m_adviseHolder->EnumAdvise(ppenumAdvise);
4916 }
HRESULT EnumAdvise([out] IEnumSTATDATA **ppenumAdvise)

◆ IOleObject::EnumVerbs()

virtual STDMETHODIMP SEALED_::IOleObject::EnumVerbs ( IEnumOLEVERB **  ppEnumOleVerb)
inlinevirtual

Definition at line 4842 of file activex.cpp.

4843 {
4844 return OleRegEnumVerbs(m_classId, ppEnumOleVerb);
4845 }
HRESULT WINAPI OleRegEnumVerbs(REFCLSID clsid, LPENUMOLEVERB *ppenum)
Definition: ole2.c:1125

◆ IOleObject::GetClientSite()

virtual STDMETHODIMP SEALED_::IOleObject::GetClientSite ( IOleClientSite **  ppClientSite)
inlinevirtual

Definition at line 4768 of file activex.cpp.

4769 {
4770 if(ppClientSite == NULL)
4771 return E_POINTER;
4772
4773 if(m_clientSite)
4775
4776 *ppClientSite = m_clientSite;
4777 return S_OK;
4778 }

◆ IOleObject::GetClipboardData()

virtual STDMETHODIMP SEALED_::IOleObject::GetClipboardData ( DWORD  dwReserved,
IDataObject **  ppDataObject 
)
inlinevirtual

Definition at line 4806 of file activex.cpp.

4807 {
4808 return E_NOTIMPL;
4809 }

◆ IOleObject::GetExtent()

virtual STDMETHODIMP SEALED_::IOleObject::GetExtent ( DWORD  dwDrawAspect,
SIZEL psizel 
)
inlinevirtual

Definition at line 4874 of file activex.cpp.

4875 {
4876 // TODO: return size
4877 return E_NOTIMPL;
4878 }

◆ IOleObject::GetMiscStatus()

virtual STDMETHODIMP SEALED_::IOleObject::GetMiscStatus ( DWORD  dwAspect,
DWORD pdwStatus 
)
inlinevirtual

Definition at line 4918 of file activex.cpp.

4919 {
4920 return OleRegGetMiscStatus(m_classId, dwAspect, pdwStatus);
4921 }
HRESULT WINAPI OleRegGetMiscStatus(REFCLSID clsid, DWORD dwAspect, DWORD *pdwStatus)
Definition: ole2.c:864

◆ IOleObject::GetMoniker()

virtual STDMETHODIMP SEALED_::IOleObject::GetMoniker ( DWORD  dwAssign,
DWORD  dwWhichMoniker,
IMoniker **  ppmk 
)
inlinevirtual

Definition at line 4796 of file activex.cpp.

4797 {
4798 return E_NOTIMPL;
4799 }

◆ IOleObject::GetUserClassID()

virtual STDMETHODIMP SEALED_::IOleObject::GetUserClassID ( CLSID pClsid)
inlinevirtual

Definition at line 4857 of file activex.cpp.

4858 {
4859 *pClsid = m_classId;
4860 return S_OK;
4861 }
CLSID m_classId
Definition: activex.cpp:1327

◆ IOleObject::GetUserType()

virtual STDMETHODIMP SEALED_::IOleObject::GetUserType ( DWORD  dwFormOfType,
LPOLESTR pszUserType 
)
inlinevirtual

Definition at line 4863 of file activex.cpp.

4864 {
4865 return OleRegGetUserType(m_classId, dwFormOfType, pszUserType);
4866 }
HRESULT WINAPI OleRegGetUserType(REFCLSID clsid, DWORD form, LPOLESTR *usertype)
Definition: ole2.c:678

◆ IOleObject::InitFromData()

virtual STDMETHODIMP SEALED_::IOleObject::InitFromData ( IDataObject pDataObject,
BOOL  fCreation,
DWORD  dwReserved 
)
inlinevirtual

Definition at line 4801 of file activex.cpp.

4802 {
4803 return E_NOTIMPL;
4804 }

◆ IOleObject::IsUpToDate()

virtual STDMETHODIMP SEALED_::IOleObject::IsUpToDate ( )
inlinevirtual

Definition at line 4852 of file activex.cpp.

4853 {
4854 return S_OK;
4855 }

◆ IOleObject::SetClientSite()

virtual STDMETHODIMP SEALED_::IOleObject::SetClientSite ( IOleClientSite pClientSite)
inlinevirtual

Definition at line 4755 of file activex.cpp.

4756 {
4757 if(m_clientSite)
4759
4760 m_clientSite = pClientSite;
4761
4762 if(m_clientSite)
4764
4765 return S_OK;
4766 }

◆ IOleObject::SetColorScheme()

virtual STDMETHODIMP SEALED_::IOleObject::SetColorScheme ( LOGPALETTE pLogpal)
inlinevirtual

Definition at line 4923 of file activex.cpp.

4924 {
4925 return E_NOTIMPL;
4926 }

◆ IOleObject::SetExtent()

virtual STDMETHODIMP SEALED_::IOleObject::SetExtent ( DWORD  dwDrawAspect,
SIZEL psizel 
)
inlinevirtual

Definition at line 4868 of file activex.cpp.

4869 {
4870 // TODO: resize
4871 return E_NOTIMPL;
4872 }

◆ IOleObject::SetHostNames()

virtual STDMETHODIMP SEALED_::IOleObject::SetHostNames ( LPCOLESTR  szContainerApp,
LPCOLESTR  szContainerObj 
)
inlinevirtual

Definition at line 4780 of file activex.cpp.

4781 {
4782 return S_OK;
4783 }

◆ IOleObject::SetMoniker()

virtual STDMETHODIMP SEALED_::IOleObject::SetMoniker ( DWORD  dwWhichMoniker,
IMoniker pmk 
)
inlinevirtual

Definition at line 4791 of file activex.cpp.

4792 {
4793 return E_NOTIMPL;
4794 }

◆ IOleObject::Unadvise()

virtual STDMETHODIMP SEALED_::IOleObject::Unadvise ( DWORD  dwConnection)
inlinevirtual

Definition at line 4898 of file activex.cpp.

4899 {
4901
4902 if(FAILED(hr))
4903 return hr;
4904
4905 return m_adviseHolder->Unadvise(dwConnection);
4906 }
HRESULT Unadvise([in] DWORD dwConnection)

◆ IOleObject::Update()

virtual STDMETHODIMP SEALED_::IOleObject::Update ( )
inlinevirtual

Definition at line 4847 of file activex.cpp.

4848 {
4849 return S_OK;
4850 }

◆ IOleWindow::ContextSensitiveHelp()

virtual STDMETHODIMP SEALED_::IOleWindow::ContextSensitiveHelp ( BOOL  fEnterMode)
inlinevirtual

Definition at line 4941 of file activex.cpp.

4942 {
4943 return E_NOTIMPL;
4944 }

◆ IOleWindow::GetWindow()

virtual STDMETHODIMP SEALED_::IOleWindow::GetWindow ( HWND phwnd)
inlinevirtual

Definition at line 4929 of file activex.cpp.

4930 {
4931 if(phwnd == NULL)
4932 return E_POINTER;
4933
4934 if(m_controlWindow == NULL)
4935 return E_FAIL;
4936
4937 *phwnd = m_controlWindow;
4938 return S_OK;
4939 }

◆ IPersist::GetClassID()

virtual STDMETHODIMP SEALED_::IPersist::GetClassID ( CLSID pClassID)
inlinevirtual

Definition at line 4947 of file activex.cpp.

4948 {
4949 *pClassID = m_classId;
4950 return S_OK;
4951 }

◆ IPersistPropertyBag::InitNew()

virtual STDMETHODIMP SEALED_::IPersistPropertyBag::InitNew ( )
inlinevirtual

Definition at line 4954 of file activex.cpp.

4955 {
4956 return E_NOTIMPL;
4957 }

◆ IPersistPropertyBag::Load()

virtual STDMETHODIMP SEALED_::IPersistPropertyBag::Load ( IPropertyBag pPropBag,
IErrorLog pErrorLog 
)
inlinevirtual

Definition at line 4959 of file activex.cpp.

4960 {
4961 return E_NOTIMPL;
4962 }

◆ IPersistPropertyBag::Save()

virtual STDMETHODIMP SEALED_::IPersistPropertyBag::Save ( IPropertyBag pPropBag,
BOOL  fClearDirty,
BOOL  fSaveAllProperties 
)
inlinevirtual

Definition at line 4964 of file activex.cpp.

4965 {
4966 return E_NOTIMPL;
4967 }

◆ IPersistStorage::HandsOffStorage()

virtual STDMETHODIMP SEALED_::IPersistStorage::HandsOffStorage ( )
inlinevirtual

Definition at line 4995 of file activex.cpp.

4996 {
4997 return E_NOTIMPL;
4998 }

◆ IPersistStorage::InitNew()

virtual STDMETHODIMP SEALED_::IPersistStorage::InitNew ( IStorage pStg)
inlinevirtual

Definition at line 4975 of file activex.cpp.

4976 {
4977 return E_NOTIMPL;
4978 }

◆ IPersistStorage::IsDirty()

virtual STDMETHODIMP SEALED_::IPersistStorage::IsDirty ( )
inlinevirtual

Definition at line 4970 of file activex.cpp.

4971 {
4972 return E_NOTIMPL;
4973 }

◆ IPersistStorage::Load()

virtual STDMETHODIMP SEALED_::IPersistStorage::Load ( IStorage pStg)
inlinevirtual

Definition at line 4980 of file activex.cpp.

4981 {
4982 return E_NOTIMPL;
4983 }

◆ IPersistStorage::Save()

virtual STDMETHODIMP SEALED_::IPersistStorage::Save ( IStorage pStgSave,
BOOL  fSameAsLoad 
)
inlinevirtual

Definition at line 4985 of file activex.cpp.

4986 {
4987 return E_NOTIMPL;
4988 }

◆ IPersistStorage::SaveCompleted()

virtual STDMETHODIMP SEALED_::IPersistStorage::SaveCompleted ( IStorage pStgNew)
inlinevirtual

Definition at line 4990 of file activex.cpp.

4991 {
4992 return E_NOTIMPL;
4993 }

◆ IPersistStreamInit::GetSizeMax()

virtual STDMETHODIMP SEALED_::IPersistStreamInit::GetSizeMax ( ULARGE_INTEGER pCbSize)
inlinevirtual

Definition at line 5016 of file activex.cpp.

5017 {
5018 return E_NOTIMPL;
5019 }

◆ IPersistStreamInit::InitNew()

virtual STDMETHODIMP SEALED_::IPersistStreamInit::InitNew ( )
inlinevirtual

Definition at line 5021 of file activex.cpp.

5022 {
5023 return E_NOTIMPL;
5024 }

◆ IPersistStreamInit::IsDirty()

virtual STDMETHODIMP SEALED_::IPersistStreamInit::IsDirty ( )
inlinevirtual

Definition at line 5001 of file activex.cpp.

5002 {
5003 return E_NOTIMPL;
5004 }

◆ IPersistStreamInit::Load()

virtual STDMETHODIMP SEALED_::IPersistStreamInit::Load ( LPSTREAM  pStm)
inlinevirtual

Definition at line 5006 of file activex.cpp.

5007 {
5008 return E_NOTIMPL;
5009 }

◆ IPersistStreamInit::Save()

virtual STDMETHODIMP SEALED_::IPersistStreamInit::Save ( LPSTREAM  pStm,
BOOL  fClearDirty 
)
inlinevirtual

Definition at line 5011 of file activex.cpp.

5012 {
5013 return E_NOTIMPL;
5014 }

◆ IProvideClassInfo2::GetGUID()

virtual STDMETHODIMP SEALED_::IProvideClassInfo2::GetGUID ( DWORD  dwGuidKind,
GUID pGUID 
)
inlinevirtual

Definition at line 5038 of file activex.cpp.

5039 {
5040 if(dwGuidKind != GUIDKIND_DEFAULT_SOURCE_DISP_IID)
5041 return E_INVALIDARG;
5042
5043 *pGUID = MSTSCLib::DIID_IMsTscAxEvents;
5044 return S_OK;
5045 }

◆ IProvideClassInfo::GetClassInfo()

virtual STDMETHODIMP SEALED_::IProvideClassInfo::GetClassInfo ( ITypeInfo **  ppTI)
inlinevirtual

Definition at line 5027 of file activex.cpp.

5028 {
5030
5031 if(FAILED(hr))
5032 return hr;
5033
5034 return m_typeLib->GetTypeInfoOfGuid(m_classId, ppTI);
5035 }
HRESULT LoadTypeLibrary()
Definition: activex.cpp:3541
HRESULT GetTypeInfoOfGuid([in] REFGUID guid, [out] ITypeInfo **ppTinfo)

◆ IQuickActivate::GetContentExtent()

virtual STDMETHODIMP SEALED_::IQuickActivate::GetContentExtent ( LPSIZEL  pSizel)
inlinevirtual

Definition at line 5078 of file activex.cpp.

5079 {
5080 return GetExtent(DVASPECT_CONTENT, pSizel);
5081 }
HRESULT GetExtent([in] DWORD dwDrawAspect, [out] SIZEL *psizel)

◆ IQuickActivate::QuickActivate()

virtual STDMETHODIMP SEALED_::IQuickActivate::QuickActivate ( QACONTAINER pQaContainer,
QACONTROL pQaControl 
)
inlinevirtual

Definition at line 5048 of file activex.cpp.

5049 {
5050 if(pQaContainer == NULL || pQaControl == NULL)
5051 return E_POINTER;
5052
5053 if(pQaContainer->cbSize < sizeof(*pQaContainer) || pQaControl->cbSize < sizeof(*pQaControl))
5054 return E_INVALIDARG;
5055
5056 ULONG cb = pQaControl->cbSize;
5057 ZeroMemory(pQaControl, cb);
5058 pQaControl->cbSize = cb;
5059
5060 SetClientSite(pQaContainer->pClientSite);
5061
5062 if(pQaContainer->pAdviseSink)
5063 SetAdvise(DVASPECT_CONTENT, 0, pQaContainer->pAdviseSink);
5064
5065 if(pQaContainer->pUnkEventSink)
5066 Advise(pQaContainer->pUnkEventSink, &pQaControl->dwEventCookie);
5067
5068 GetMiscStatus(DVASPECT_CONTENT, &pQaControl->dwMiscStatus);
5069
5070 return E_NOTIMPL;
5071 }
virtual STDMETHODIMP Advise(IUnknown *pUnkSink, DWORD *pdwCookie)
Definition: activex.cpp:4500
HRESULT GetMiscStatus([in] DWORD dwAspect, [out] DWORD *pdwStatus)
HRESULT SetClientSite([in, unique] IOleClientSite *pClientSite)
HRESULT SetAdvise([in] DWORD aspects, [in] DWORD advf, [in, unique] IAdviseSink *pAdvSink)
static HMODULE MODULEINFO DWORD cb
Definition: module.c:33
uint32_t ULONG
Definition: typedefs.h:59
#define ZeroMemory
Definition: winbase.h:1712

◆ IQuickActivate::SetContentExtent()

virtual STDMETHODIMP SEALED_::IQuickActivate::SetContentExtent ( LPSIZEL  pSizel)
inlinevirtual

Definition at line 5073 of file activex.cpp.

5074 {
5075 return SetExtent(DVASPECT_CONTENT, pSizel);
5076 }
HRESULT SetExtent([in] DWORD dwDrawAspect, [in] SIZEL *psizel)

◆ IsSafeForScripting()

bool SEALED_::IsSafeForScripting ( ) const
inlineprivate

Definition at line 1354 of file activex.cpp.

1355 {
1356 return m_SafetyOptions & INTERFACESAFE_FOR_UNTRUSTED_CALLER;
1357 }

◆ IUnknown::QueryInterface()

virtual STDMETHODIMP SEALED_::IUnknown::QueryInterface ( REFIID  riid,
void **  ppvObject 
)
inlinevirtual

Definition at line 4421 of file activex.cpp.

4422 {
4424 }
IUnknown * m_punkOuter
Definition: activex.cpp:1297
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082

◆ IViewObject2::GetExtent()

virtual STDMETHODIMP SEALED_::IViewObject2::GetExtent ( DWORD  dwDrawAspect,
LONG  lindex,
DVTARGETDEVICE *  ptd,
LPSIZEL  lpsizel 
)
inlinevirtual

Definition at line 5115 of file activex.cpp.

5116 {
5117 return E_NOTIMPL; // TODO
5118 }

◆ IViewObject::Draw()

virtual STDMETHODIMP SEALED_::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 
)
inlinevirtual

Definition at line 5084 of file activex.cpp.

5085 {
5086 return E_NOTIMPL; // TODO
5087 }

◆ IViewObject::Freeze()

virtual STDMETHODIMP SEALED_::IViewObject::Freeze ( DWORD  dwDrawAspect,
LONG  lindex,
void pvAspect,
DWORD pdwFreeze 
)
inlinevirtual

Definition at line 5094 of file activex.cpp.

5095 {
5096 return E_NOTIMPL;
5097 }

◆ IViewObject::GetAdvise()

virtual STDMETHODIMP SEALED_::IViewObject::GetAdvise ( DWORD pAspects,
DWORD pAdvf,
IAdviseSink **  ppAdvSink 
)
inlinevirtual

Definition at line 5109 of file activex.cpp.

5110 {
5111 return E_NOTIMPL; // TODO
5112 }

◆ IViewObject::GetColorSet()

virtual STDMETHODIMP SEALED_::IViewObject::GetColorSet ( DWORD  dwDrawAspect,
LONG  lindex,
void pvAspect,
DVTARGETDEVICE *  ptd,
HDC  hicTargetDev,
LOGPALETTE **  ppColorSet 
)
inlinevirtual

Definition at line 5089 of file activex.cpp.

5090 {
5091 return E_NOTIMPL;
5092 }

◆ IViewObject::SetAdvise()

virtual STDMETHODIMP SEALED_::IViewObject::SetAdvise ( DWORD  aspects,
DWORD  advf,
IAdviseSink pAdvSink 
)
inlinevirtual

Definition at line 5104 of file activex.cpp.

5105 {
5106 return E_NOTIMPL; // TODO
5107 }

◆ IViewObject::Unfreeze()

virtual STDMETHODIMP SEALED_::IViewObject::Unfreeze ( DWORD  dwFreeze)
inlinevirtual

Definition at line 5099 of file activex.cpp.

5100 {
5101 return E_NOTIMPL;
5102 }

◆ JoinProtocolThread()

void SEALED_::JoinProtocolThread ( )
inlineprivate

Definition at line 3965 of file activex.cpp.

3966 {
3967 assert(m_protocolThread);
3968 WaitForSingleObject(m_protocolThread, INFINITE);
3969 CloseHandle(m_protocolThread);
3971 }
#define CloseHandle
Definition: compat.h:739
#define INFINITE
Definition: serial.h:102
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82

◆ LoadDispTypeInfo()

HRESULT SEALED_::LoadDispTypeInfo ( )
inlineprivate

Definition at line 3574 of file activex.cpp.

3575 {
3576 if(m_dispTypeInfo)
3577 return S_OK;
3578
3580
3581 if(FAILED(hr))
3582 return hr;
3583
3584 assert(MSTSCLib::IID_IMsRdpClient4 == MSTSCLib_Redist::IID_IMsRdpClient4);
3585
3586 hr = m_typeLib->GetTypeInfoOfGuid(MSTSCLib::IID_IMsRdpClient4, &m_dispTypeInfo);
3587
3588 if(FAILED(hr))
3589 return hr;
3590
3591 assert(m_dispTypeInfo);
3592 return S_OK;
3593 }

◆ LoadTypeLibrary()

HRESULT SEALED_::LoadTypeLibrary ( )
inlineprivate

Definition at line 3541 of file activex.cpp.

3542 {
3543 if(m_typeLib)
3544 return S_OK;
3545
3546 // Get the DLL name of the ActiveX control
3547 WCHAR szPath[MAX_PATH + 1];
3549
3550 if(cchPathLen == 0)
3552
3553 if(cchPathLen > ((ARRAYSIZE(szPath) - 1) - 2))
3554 return E_FAIL;
3555
3556 // Append the resource id of the type library
3557 assert(m_typeLibIndex < 10);
3558
3559 szPath[cchPathLen + 0] = L'\\';
3560 szPath[cchPathLen + 1] = static_cast<WCHAR>(L'0' + m_typeLibIndex);
3561 szPath[cchPathLen + 2] = 0;
3562
3563 // Load the type library
3564 HRESULT hr = LoadTypeLibEx(szPath, REGKIND_NONE, &m_typeLib);
3565
3566 if(FAILED(hr))
3567 return hr;
3568
3569 assert(m_typeLib);
3570 return S_OK;
3571 }
unsigned m_typeLibIndex
Definition: activex.cpp:1330
#define MAX_PATH
Definition: compat.h:34
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:600
HRESULT WINAPI LoadTypeLibEx(LPCOLESTR szFile, REGKIND regkind, ITypeLib **pptLib)
Definition: typelib.c:473
LPCWSTR szPath
Definition: env.c:37
@ REGKIND_NONE
Definition: oleauto.h:927

◆ NeedAdviseHolder()

HRESULT SEALED_::NeedAdviseHolder ( )
inline

Definition at line 4880 of file activex.cpp.

4881 {
4882 if(m_adviseHolder)
4883 return S_OK;
4884
4885 return CreateOleAdviseHolder(&m_adviseHolder);
4886 }
HRESULT WINAPI CreateOleAdviseHolder(IOleAdviseHolder **ppOAHolder)
Definition: oleobj.c:875

◆ OnLogon() [1/2]

void SEALED_::OnLogon ( )
inlineprivate

Definition at line 3713 of file activex.cpp.

3714 {
3715 m_loggedIn = true;
3717 }
void FireLoginComplete()
Definition: activex.cpp:1946
bool m_loggedIn
Definition: activex.cpp:1366

◆ OnLogon() [2/2]

static void SEALED_::OnLogon ( RDPCLIENT This)
inlinestatic

Definition at line 3662 of file activex.cpp.

3663 {
3664 return InnerToOuter(This)->OnLogon();
3665 }
static RdpClient * InnerToOuter(RdpClientInner *innerThis)
Definition: activex.cpp:3609

◆ OnPublicKey() [1/2]

static bool SEALED_::OnPublicKey ( RDPCLIENT This,
unsigned char key,
unsigned int  key_size 
)
inlinestatic

Definition at line 3657 of file activex.cpp.

3658 {
3659 return InnerToOuter(This)->OnPublicKey(key, key_size);
3660 }
Definition: copy.c:22

◆ OnPublicKey() [2/2]

bool SEALED_::OnPublicKey ( unsigned char key,
unsigned int  key_size 
)
inlineprivate

Definition at line 3700 of file activex.cpp.

3701 {
3703
3704 if(FAILED(hr))
3705 {
3707 return false;
3708 }
3709
3710 return hr == S_OK;
3711 }
HRESULT FireReceivedTSPublicKey(void *publicKey, unsigned int publicKeyLength)
Definition: activex.cpp:2094

◆ OnRedirect() [1/2]

static bool SEALED_::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 
)
inlinestatic

Definition at line 3667 of file activex.cpp.

3682 {
3683 return InnerToOuter(This)->OnRedirect
3684 (
3685 flags,
3686 server_len,
3687 server,
3688 cookie_len,
3689 cookie,
3690 username_len,
3691 username,
3692 domain_len,
3693 domain,
3694 password_len,
3695 password
3696 );
3697 }
GLbitfield flags
Definition: glext.h:7161
static WCHAR password[]
Definition: url.c:33
static WCHAR username[]
Definition: url.c:32
Definition: cookie.c:42
static rfbScreenInfoPtr server
Definition: vnc.c:74

◆ OnRedirect() [2/2]

bool SEALED_::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 
)
inlineprivate

Definition at line 3719 of file activex.cpp.

3733 {
3734 assert(m_Connected);
3735 assert(!InsideApartment());
3736 assert(IsWindow(m_controlWindow));
3737
3738 RedirectArguments redirectArgs =
3739 {
3740 flags,
3741 server_len,
3742 server,
3743 cookie_len,
3744 cookie,
3745 username_len,
3746 username,
3747 domain_len,
3748 domain,
3749 password_len,
3750 password
3751 };
3752
3753 return SendMessage(m_controlWindow, RDPC_WM_REDIRECT, 0, reinterpret_cast<LPARAM>(&redirectArgs)) == 0;
3754 }
BOOL WINAPI IsWindow(_In_opt_ HWND)

◆ PerformDisconnect()

void SEALED_::PerformDisconnect ( long  reason)
inlineprivate

Definition at line 3994 of file activex.cpp.

3995 {
3996 assert(InsideApartment());
3997 assert(m_Connected);
3998
3999 // TODO: notify virtual channels
4000
4001 // TODO: do any other disconnection work here...
4002
4003 // Put the control in the disconnected state
4004 m_Connected = false;
4005 m_loggedIn = false;
4006
4007 // Notify the container
4008 VARIANTARG arg = { };
4009
4010 arg.vt = VT_I4;
4011 arg.lVal = reason;
4012
4014 }

◆ ProtocolLoop()

void SEALED_::ProtocolLoop ( )
inlineprivate

Definition at line 3768 of file activex.cpp.

3769 {
3770 HANDLE waitingReconnection = NULL;
3771
3772 // Retrieve the local hostname to be passed to the server
3774 DWORD hostnameLen = ARRAYSIZE(hostname);
3775
3776 if(!GetComputerNameW(hostname, &hostnameLen))
3777 hostname[0] = 0;
3778
3779 // Set some connection flags
3781
3782 if(m_Compress)
3784
3785 if(m_AudioRedirectionMode == 1)
3787
3788 if(m_ClearTextPassword)
3790
3791 // Notify the container that the connection process is beginning now
3793
3794 // Set the overall connection timer, if a timeout is set
3795 // BUGBUG: the timeout semantics are ambiguous and have been most probably misinterpreted
3796 HANDLE overallConnectionTimer = NULL;
3797 LARGE_INTEGER overallTimeout;
3798
3799 if(m_overallConnectionTimeout)
3800 {
3801 overallTimeout.QuadPart = - ((m_overallConnectionTimeout * 1000 * 1000 * 1000) / 100);
3802
3803 overallConnectionTimer = CreateWaitableTimer(NULL, FALSE, NULL);
3804
3805 if(overallConnectionTimer == NULL)
3806 goto l_Disconnect;
3807 }
3808
3809 if(overallConnectionTimer)
3810 SetWaitableTimer(overallConnectionTimer, &overallTimeout, 0, ConnectionTimerAPC, NULL, FALSE);
3811
3812 // Initial connection
3813 BOOL disconnected = rdp_connect
3814 (
3815 &m_protocolState,
3816 m_Server,
3817 flags,
3818 m_UserName,
3819 m_Domain,
3820 m_ClearTextPassword,
3821 m_StartProgram,
3822 m_WorkDir,
3823 hostname,
3824 m_LoadBalanceInfo
3825 );
3826
3827 if(overallConnectionTimer)
3828 CancelWaitableTimer(overallConnectionTimer);
3829
3830 if(disconnected)
3831 goto l_Disconnect;
3832
3833 // TODO: set the disconnect reason for every instance in which we abort the loop
3834 for(;;)
3835 {
3837 uint32 extendedDisconnectReason = 0;
3838
3839 m_actuallyConnected = true;
3840
3841 // Notify the container of the successful connection
3842 FireConnected();
3843
3844 // Main protocol loop
3845 m_loggedIn = false;
3846 rdp_main_loop(&m_protocolState, &deactivated, &extendedDisconnectReason);
3847 rdp_disconnect(&m_protocolState);
3848
3849 m_actuallyConnected = false;
3850
3851 // Redirection
3852 // BUGBUG: redirection is very messy and probably this implementation is not "canonical"
3854 {
3856 rdp_reset_state(&m_protocolState);
3857
3858 // TODO: reset connection parameters
3859 // This has to be done in the main thread, so use SendMessage on the control window
3860
3862
3863 // retry
3864 continue;
3865 }
3866
3867 // Disconnection
3868 m_ExtendedDisconnectReason = static_cast<MSTSCLib::ExtendedDisconnectReasonCode>(extendedDisconnectReason);
3869
3870 // Clean disconnection
3871 if(deactivated)
3872 break;
3873
3874 BOOL success;
3875
3876 long autoReconnections = 0;
3877 long totalReconnections = 0;
3878
3879 // Reconnection
3880 // BUGBUG: reconnection semantics may not be entirely accurate
3881 do
3882 {
3883 ++ totalReconnections;
3884
3885 // ask the container whether we should reconnect
3886 long reconnectMode = FireAutoReconnecting(m_protocolState.disconnect_reason, totalReconnections);
3887
3888 // do not reconnect
3889 if(reconnectMode == MSTSCLib::autoReconnectContinueStop)
3890 goto l_Disconnect;
3891
3892 // the container will reconnect or abort manually
3893 if(reconnectMode == MSTSCLib::autoReconnectContinueManual)
3894 {
3895 assert(!m_reconnectAborted);
3896 assert(m_protocolThreadWaitingReconnection == NULL);
3897
3898 if(waitingReconnection == NULL)
3899 {
3900 waitingReconnection = CreateEvent(NULL, TRUE, FALSE, NULL);
3901
3902 if(waitingReconnection == NULL)
3903 // TODO: fatal error
3904 goto l_Disconnect;
3905 }
3906
3907 m_protocolThreadWaitingReconnection = waitingReconnection;
3908
3909 WaitForSingleObject(waitingReconnection, INFINITE);
3910
3912
3913 if(m_reconnectAborted)
3914 {
3915 // FIXME? do we set the disconnection status here?
3916 goto l_Disconnect;
3917 }
3918 }
3919 // reconnect automatically
3920 else
3921 {
3922 // automatic reconnection is disabled
3923 if(m_EnableAutoReconnect)
3924 break;
3925
3926 // too many consecutive automatic reconnections
3927 if(autoReconnections == m_MaxReconnectAttempts)
3928 break;
3929
3930 ++ autoReconnections;
3931 }
3932
3933 if(overallConnectionTimer)
3934 SetWaitableTimer(overallConnectionTimer, &overallTimeout, 0, ConnectionTimerAPC, NULL, FALSE);
3935
3936 // Reconnection
3938 (
3939 &m_protocolState,
3940 m_Server,
3941 flags,
3942 m_UserName,
3943 m_Domain,
3944 m_ClearTextPassword,
3945 m_StartProgram,
3946 m_WorkDir,
3947 hostname,
3948 m_LoadBalanceInfo
3949 );
3950
3951 if(overallConnectionTimer)
3952 CancelWaitableTimer(overallConnectionTimer);
3953 }
3954 while(!success);
3955 }
3956
3957l_Disconnect:
3958 // Disconnected
3960
3961 if(overallConnectionTimer)
3962 CloseHandle(overallConnectionTimer);
3963 }
#define RDP_LOGON_NORMAL
Definition: precomp.h:24
void rdp_disconnect(void)
Definition: rdp.c:1779
RD_BOOL rdp_connect(char *server, uint32 flags, char *domain, char *password, char *command, char *directory, RD_BOOL reconnect)
Definition: rdp.c:1742
void rdp_reset_state(void)
Definition: rdp.c:1770
void rdp_main_loop(RD_BOOL *deactivated, uint32 *ext_disc_reason)
Definition: rdp.c:1682
unsigned int uint32
Definition: types.h:32
char * hostname
Definition: ftp.c:88
void FireConnecting()
Definition: activex.cpp:1934
bool m_actuallyConnected
Definition: activex.cpp:1365
long m_overallConnectionTimeout
Definition: activex.cpp:1414
void FireConnected()
Definition: activex.cpp:1940
MSTSCLib::ExtendedDisconnectReasonCode m_ExtendedDisconnectReason
Definition: activex.cpp:1423
LONG FireAutoReconnecting(long disconnectReason, long attemptCount)
Definition: activex.cpp:2124
HANDLE m_protocolThreadWaitingReconnection
Definition: activex.cpp:1363
void FireDisconnected(long reason)
Definition: activex.cpp:1952
BOOL WINAPI GetComputerNameW(LPWSTR lpBuffer, LPDWORD lpnSize)
Definition: compname.c:446
unsigned int BOOL
Definition: ntddk_ex.h:94
#define RDP_LOGON_COMPRESSION
Definition: constants.h:263
#define RDP_LOGON_LEAVE_AUDIO
Definition: constants.h:266
#define RDP_LOGON_AUTO
Definition: constants.h:261
#define RDP_LOGON_COMPRESSION2
Definition: constants.h:265
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)
Definition: rdp.c:1486
@ autoReconnectContinueStop
Definition: mstsclib.idl:39
@ autoReconnectContinueManual
Definition: mstsclib.idl:40
enum MSTSCLib::__MIDL_IMsRdpClient_0001 ExtendedDisconnectReasonCode
int deactivated
Definition: svgawin.c:63
BOOL WINAPI SetWaitableTimer(IN HANDLE hTimer, IN const LARGE_INTEGER *pDueTime, IN LONG lPeriod, IN PTIMERAPCROUTINE pfnCompletionRoutine OPTIONAL, IN OPTIONAL LPVOID lpArgToCompletionRoutine, IN BOOL fResume)
Definition: synch.c:382
BOOL WINAPI CancelWaitableTimer(IN HANDLE hTimer)
Definition: synch.c:411
LONGLONG QuadPart
Definition: typedefs.h:114
#define success(from, fromstr, to, tostr)
#define CreateEvent
Definition: winbase.h:3683
#define CreateWaitableTimer
Definition: winbase.h:3696
#define MAX_COMPUTERNAME_LENGTH
Definition: winbase.h:243

◆ ProtocolLoopThreadProc()

static DWORD WINAPI SEALED_::ProtocolLoopThreadProc ( LPVOID  lpParam)
inlinestaticprivate

Definition at line 3757 of file activex.cpp.

3758 {
3759 static_cast<RdpClient *>(lpParam)->ProtocolLoop();
3760 return 0;
3761 }
void ProtocolLoop()
Definition: activex.cpp:3768

◆ queryInterface()

HRESULT SEALED_::queryInterface ( REFIID  riid,
void **  ppvObject 
)
inlineprivate

Definition at line 2158 of file activex.cpp.

2159 {
2160 IUnknown * pvObject = NULL;
2161
2162 using namespace MSTSCLib;
2163
2164 if(riid == IID_IUnknown)
2165 pvObject = static_cast<IUnknown *>(&m_inner);
2167 pvObject = static_cast<IConnectionPointContainer *>(this);
2168 else if(riid == IID_IDataObject)
2169 pvObject = static_cast<IDataObject *>(this);
2170 else if(riid == IID_IObjectSafety)
2171 pvObject = static_cast<IObjectSafety *>(this);
2172 else if(riid == IID_IOleControl)
2173 pvObject = static_cast<IOleControl *>(this);
2175 pvObject = static_cast<IOleInPlaceActiveObject *>(this);
2176 else if(riid == IID_IOleInPlaceObject)
2177 pvObject = static_cast<IOleInPlaceObject *>(this);
2178 else if(riid == IID_IOleObject)
2179 pvObject = static_cast<IOleObject *>(this);
2180 else if(riid == IID_IOleWindow)
2181 pvObject = static_cast<IOleWindow *>(this);
2182 else if(riid == IID_IPersist)
2183 pvObject = static_cast<IPersist *>(this);
2184 else if(riid == IID_IPersistPropertyBag)
2185 pvObject = static_cast<IPersistPropertyBag *>(this);
2186 else if(riid == IID_IPersistStorage)
2187 pvObject = static_cast<IPersistStorage *>(this);
2188 else if(riid == IID_IPersistStreamInit)
2189 pvObject = static_cast<IPersistStreamInit *>(this);
2190 else if(riid == IID_IQuickActivate)
2191 pvObject = static_cast<IQuickActivate *>(this);
2192 else if(riid == IID_IViewObject)
2193 pvObject = static_cast<IViewObject *>(this);
2194 else if(riid == IID_IViewObject2)
2195 pvObject = static_cast<IViewObject2 *>(this);
2196 else if(riid == IID_IMsTscAx || riid == MSTSCLib_Redist::IID_IMsTscAx)
2197 pvObject = static_cast<IMsTscAx *>(this);
2198 else if(riid == IID_IMsRdpClient)
2199 pvObject = static_cast<IMsRdpClient *>(this);
2200 else if(riid == IID_IMsRdpClient2)
2201 pvObject = static_cast<IMsRdpClient2 *>(this);
2202 else if(riid == IID_IMsRdpClient3)
2203 pvObject = static_cast<IMsRdpClient3 *>(this);
2204 else if(riid == IID_IMsRdpClient4)
2205 pvObject = static_cast<IMsRdpClient4 *>(this);
2206 else if(riid == IID_IMsTscNonScriptable)
2207 pvObject = static_cast<IMsTscNonScriptable *>(this);
2209 pvObject = static_cast<IMsRdpClientNonScriptable *>(this);
2211 pvObject = static_cast<IMsRdpClientNonScriptable2 *>(this);
2212
2213 *ppvObject = pvObject;
2214
2215 if(pvObject)
2216 {
2217 pvObject->AddRef();
2218 return S_OK;
2219 }
2220
2221 return E_NOINTERFACE;
2222 }
const GUID IID_IUnknown
SEALED_::RdpClientInner m_inner
EXTERN_C const IID IID_IMsRdpClientNonScriptable2
Definition: mstsclib_h.h:2845
interface IMsRdpClientNonScriptable IMsRdpClientNonScriptable
Definition: mstsclib_h.h:88
EXTERN_C const IID IID_IMsRdpClient4
Definition: mstsclib_h.h:2079
interface IMsRdpClient4 IMsRdpClient4
Definition: mstsclib_h.h:76
EXTERN_C const IID IID_IMsTscAx
Definition: mstsclib_h.h:395
EXTERN_C const IID IID_IMsRdpClientNonScriptable
Definition: mstsclib_h.h:2680
EXTERN_C const IID IID_IMsRdpClient2
Definition: mstsclib_h.h:1229
EXTERN_C const IID IID_IMsRdpClient3
Definition: mstsclib_h.h:1653
interface IMsTscNonScriptable IMsTscNonScriptable
Definition: mstsclib_h.h:82
EXTERN_C const IID IID_IMsRdpClient
Definition: mstsclib_h.h:804
interface IMsRdpClient IMsRdpClient
Definition: mstsclib_h.h:58
interface IMsRdpClient2 IMsRdpClient2
Definition: mstsclib_h.h:64
EXTERN_C const IID IID_IMsTscNonScriptable
Definition: mstsclib_h.h:2513
interface IMsRdpClientNonScriptable2 IMsRdpClientNonScriptable2
Definition: mstsclib_h.h:94
interface IMsTscAx IMsTscAx
Definition: mstsclib_h.h:52
interface IMsRdpClient3 IMsRdpClient3
Definition: mstsclib_h.h:70
const GUID IID_IOleInPlaceActiveObject
const GUID IID_IViewObject
const GUID IID_IConnectionPointContainer
const GUID IID_IOleWindow
const GUID IID_IViewObject2
const GUID IID_IDataObject
const GUID IID_IOleInPlaceObject
const GUID IID_IPersistStorage
const GUID IID_IOleObject
const GUID IID_IOleControl
const GUID IID_IPersistStreamInit
const GUID IID_IPersist
Definition: proxy.cpp:14
const GUID IID_IPersistPropertyBag
Definition: proxy.cpp:11

◆ RdpClient()

SEALED_::RdpClient ( REFCLSID  classId,
unsigned  libIndex,
IUnknown punkOuter 
)
inlineprivate

Definition at line 2240 of file activex.cpp.

2240 :
2241 // COM/OLE internals
2242 m_refCount(0),
2243 m_punkOuter(punkOuter),
2244 m_classId(classId),
2245 m_typeLibIndex(libIndex),
2246 m_typeLib(),
2249 m_clientSite(),
2250 m_inPlaceSite(),
2252 m_freezeEvents(0),
2253 m_uiActive(false),
2255
2256#ifdef _DEBUG
2257 m_apartmentThreadId(GetCurrentThreadId()),
2258#endif
2259
2260 // rdesktop-core interface
2263
2264 // Properties
2265 m_Server(),
2266 m_Domain(),
2267 m_UserName(),
2272 m_WorkDir(),
2283 m_ColorDepth(16),
2286 m_TransportType(1), // BUGBUG: ??? what's this ???
2287 m_SasSequence(0xAA03), // BUGBUG: ??? what's this ???
2288 m_RDPPort(3389),
2297 m_BitmapCacheSize(1500),
2314 m_Connected(false),
2315 m_Compress(true),
2316 m_BitmapPersistence(true),
2319 m_DisableRdpdr(false),
2321 m_FullScreen(false),
2323 m_ShadowBitmap(true),
2324 m_EncryptionEnabled(true),
2325 m_DedicatedTerminal(false),
2326 m_DisableCtrlAltDel(true),
2327 m_EnableWindowsKey(true),
2328 m_DoubleClickDetect(false),
2329 m_MaximizeShell(true),
2333 m_SmartSizing(false),
2335 m_PinConnectionBar(true),
2337 m_RedirectDrives(false),
2338 m_RedirectPrinters(false),
2339 m_RedirectPorts(false),
2340 m_RedirectSmartCards(false),
2341 m_NotifyTSPublicKey(false),
2342 m_CanAutoReconnect(false),
2346 {
2347 if(m_punkOuter == NULL)
2349 }
bool m_CanAutoReconnect
Definition: activex.cpp:1453
bool m_RedirectPrinters
Definition: activex.cpp:1449
bool m_ConnectionBarShowMinimizeButton
Definition: activex.cpp:1455
bool m_ContainerHandledFullScreen
Definition: activex.cpp:1429
LONG m_refCount
Definition: activex.cpp:1285
BSTR m_StartProgram
Definition: activex.cpp:1376
bool m_SecuredSettingsEnabled
Definition: activex.cpp:1431
long m_BitmapCacheSize
Definition: activex.cpp:1405
long m_minInputSendInterval
Definition: activex.cpp:1409
long m_maxEventCount
Definition: activex.cpp:1411
long m_TransportType
Definition: activex.cpp:1394
long m_keepAliveInternal
Definition: activex.cpp:1412
bool m_RedirectPorts
Definition: activex.cpp:1450
long m_HotKeyAltSpace
Definition: activex.cpp:1400
BSTR m_ClearTextPassword
Definition: activex.cpp:1379
bool m_allowBackgroundInput
Definition: activex.cpp:1428
bool m_DedicatedTerminal
Definition: activex.cpp:1436
bool m_EnableWindowsKey
Definition: activex.cpp:1438
bool m_DisableRdpdr
Definition: activex.cpp:1430
bool m_ConnectionBarShowRestoreButton
Definition: activex.cpp:1456
long m_orderDrawThresold
Definition: activex.cpp:1404
BSTR m_RdpdrClipCleanTempDirString
Definition: activex.cpp:1381
long m_InputEventsAtOnce
Definition: activex.cpp:1410
long m_KeyboardHookMode
Definition: activex.cpp:1392
BSTR m_UserName
Definition: activex.cpp:1372
bool m_MaximizeShell
Definition: activex.cpp:1440
bool m_RedirectDrives
Definition: activex.cpp:1448
long m_MinutesToIdleTimeout
Definition: activex.cpp:1416
long m_HotKeyCtrlAltDel
Definition: activex.cpp:1402
long m_MaxReconnectAttempts
Definition: activex.cpp:1420
bool m_EnableAutoReconnect
Definition: activex.cpp:1454
bool m_SmartSizing
Definition: activex.cpp:1444
BSTR m_RdpdrLocalPrintingDocName
Definition: activex.cpp:1380
long m_HotKeyAltEsc
Definition: activex.cpp:1398
LONG m_freezeEvents
Definition: activex.cpp:1348
LPSTR m_LoadBalanceInfo
Definition: activex.cpp:1385
BSTR m_Domain
Definition: activex.cpp:1371
bool m_DisplayConnectionBar
Definition: activex.cpp:1445
unsigned int m_AuthenticationLevel
Definition: activex.cpp:1421
long m_AudioRedirectionMode
Definition: activex.cpp:1393
bool m_ShadowBitmap
Definition: activex.cpp:1434
bool m_GrabFocusOnConnect
Definition: activex.cpp:1447
long m_BitmapVirtualCache16BppSize
Definition: activex.cpp:1417
BSTR m_FullScreenTitle
Definition: activex.cpp:1375
BSTR m_WorkDir
Definition: activex.cpp:1377
long m_StartConnected
Definition: activex.cpp:1390
bool m_PinConnectionBar
Definition: activex.cpp:1446
long m_singleConnectionTimeout
Definition: activex.cpp:1415
LPSTR m_Server
Definition: activex.cpp:1384
bool m_DoubleClickDetect
Definition: activex.cpp:1439
long m_shutdownTimeout
Definition: activex.cpp:1413
BSTR m_RdpdrClipPasteInfoString
Definition: activex.cpp:1382
bool m_FullScreen
Definition: activex.cpp:1432
bool m_AcceleratorPassthrough
Definition: activex.cpp:1433
bool m_RedirectSmartCards
Definition: activex.cpp:1451
bool m_NotifyTSPublicKey
Definition: activex.cpp:1452
long m_HotKeyFullScreen
Definition: activex.cpp:1397
long m_brushSupportLevel
Definition: activex.cpp:1408
long m_BitmapVirtualCacheSize
Definition: activex.cpp:1406
long m_HotKeyAltShiftTab
Definition: activex.cpp:1399
bool m_CachePersistenceActive
Definition: activex.cpp:1442
long m_HotKeyCtrlEsc
Definition: activex.cpp:1403
bool m_ScaleBitmapCachesByBpp
Definition: activex.cpp:1441
long m_HotKeyAltTab
Definition: activex.cpp:1401
long m_SasSequence
Definition: activex.cpp:1395
long m_BitmapVirtualCache24BppSize
Definition: activex.cpp:1418
bool m_DisableCtrlAltDel
Definition: activex.cpp:1437
bool m_BitmapPersistence
Definition: activex.cpp:1427
@ exDiscReasonNoInfo
Definition: mstsclib.idl:46
DWORD WINAPI GetCurrentThreadId(void)
Definition: thread.c:459
#define VK_CANCEL
Definition: winuser.h:2192
#define VK_NEXT
Definition: winuser.h:2221
#define VK_END
Definition: winuser.h:2222
#define VK_HOME
Definition: winuser.h:2223
#define VK_PRIOR
Definition: winuser.h:2220
#define VK_DELETE
Definition: winuser.h:2233
#define VK_INSERT
Definition: winuser.h:2232

◆ release()

ULONG SEALED_::release ( )
inlineprivate

Definition at line 2229 of file activex.cpp.

2230 {
2231 LONG n = InterlockedDecrement(&m_refCount);
2232
2233 if(n == 0)
2234 delete this;
2235
2236 return n;
2237 }
GLdouble n
Definition: glext.h:7729

◆ ReplaceProperty() [1/2]

HRESULT SEALED_::ReplaceProperty ( BSTR prop,
BSTR  newValue 
)
inlineprivate

Definition at line 1517 of file activex.cpp.

1518 {
1519 assert(InsideApartment());
1520 assert((prop == NULL && newValue == NULL) || prop != newValue);
1521
1522 SysFreeString(prop);
1523 prop = newValue;
1524 return S_OK;
1525 }

◆ ReplaceProperty() [2/2]

HRESULT SEALED_::ReplaceProperty ( LPSTR prop,
LPSTR  newValue 
)
inlineprivate

Definition at line 1549 of file activex.cpp.

1550 {
1551 assert(InsideApartment());
1552 assert((prop == NULL && newValue == NULL) || prop != newValue);
1553
1554 if(prop)
1555 delete[] prop;
1556
1557 prop = newValue;
1558 return S_OK;
1559 }

◆ SetProperty() [1/4]

template<class Type >
HRESULT SEALED_::SetProperty ( bool prop,
const Type newValue 
)
inlineprivate

Definition at line 1561 of file activex.cpp.

1562 {
1563 assert(InsideApartment());
1564
1565 if(m_Connected)
1566 return E_FAIL;
1567
1568 prop = !!newValue;
1569 return S_OK;
1570 }

◆ SetProperty() [2/4]

HRESULT SEALED_::SetProperty ( BSTR prop,
BSTR  newValue 
)
inlineprivate

Definition at line 1489 of file activex.cpp.

1490 {
1491 assert(InsideApartment());
1492
1493 if(m_Connected)
1494 return E_FAIL;
1495
1496 SysFreeString(prop);
1497
1498 UINT len = SysStringLen(newValue);
1499
1500 if(len)
1501 {
1502 // no embedded NULs, please
1503 if(len != lstrlenW(newValue))
1504 return E_INVALIDARG;
1505
1506 prop = SysAllocStringLen(newValue, len);
1507
1508 if(prop == NULL)
1509 return E_OUTOFMEMORY;
1510 }
1511 else
1512 prop = NULL;
1513
1514 return S_OK;
1515 }
#define lstrlenW
Definition: compat.h:750
GLenum GLsizei len
Definition: glext.h:6722

◆ SetProperty() [3/4]

HRESULT SEALED_::SetProperty ( LPSTR prop,
BSTR  newValue 
)
inlineprivate

Definition at line 1527 of file activex.cpp.

1528 {
1529 assert(InsideApartment());
1530
1531 if(m_Connected)
1532 return E_FAIL;
1533
1534 delete[] prop;
1535
1536 if(SysStringLen(newValue))
1537 {
1538 prop = BstrToLpsz(newValue);
1539
1540 if(prop == NULL)
1541 return E_OUTOFMEMORY;
1542 }
1543 else
1544 prop = NULL;
1545
1546 return S_OK;
1547 }

◆ SetProperty() [4/4]

template<class Type >
HRESULT SEALED_::SetProperty ( Type prop,
const Type newValue 
)
inlineprivate

Definition at line 1572 of file activex.cpp.

1573 {
1574 assert(InsideApartment());
1575
1576 if(m_Connected)
1577 return E_FAIL;
1578
1579 prop = newValue;
1580 return S_OK;
1581 }

◆ Shutdown()

static void SEALED_::Shutdown ( )
inlinestatic

Definition at line 4035 of file activex.cpp.

4036 {
4037 UnregisterClass(TEXT("MissTosca_Control"), GetCurrentModule());
4038 }
#define UnregisterClass
Definition: winuser.h:5861

◆ Startup()

static BOOL SEALED_::Startup ( )
inlinestatic

Definition at line 4018 of file activex.cpp.

4019 {
4021 return FALSE;
4022
4023 WNDCLASSEX wcex = { sizeof(wcex) };
4024
4025 wcex.style = CS_HREDRAW | CS_VREDRAW;
4027 wcex.hInstance = GetCurrentModule();
4029 wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
4030 wcex.lpszClassName = TEXT("MissTosca_Control");
4031
4032 return RegisterClassEx(&wcex);
4033 }
static BOOL Startup()
Definition: activex.cpp:313
LRESULT ControlWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: activex.cpp:4169
HINSTANCE hInstance
Definition: winuser.h:3206
HCURSOR hCursor
Definition: winuser.h:3208
UINT style
Definition: winuser.h:3202
WNDPROC lpfnWndProc
Definition: winuser.h:3203
LPCSTR lpszClassName
Definition: winuser.h:3211
HBRUSH hbrBackground
Definition: winuser.h:3209
#define CS_VREDRAW
Definition: winuser.h:658
#define CS_HREDRAW
Definition: winuser.h:653
#define IDC_ARROW
Definition: winuser.h:687
#define RegisterClassEx
Definition: winuser.h:5837
#define LoadCursor
Definition: winuser.h:5812

◆ STDMETHODIMP_() [1/2]

virtual SEALED_::STDMETHODIMP_ ( ULONG  )
inlinevirtual

Definition at line 4426 of file activex.cpp.

4427 {
4428 return m_punkOuter->AddRef();
4429 }

◆ STDMETHODIMP_() [2/2]

virtual SEALED_::STDMETHODIMP_ ( ULONG  )
inlinevirtual

Definition at line 4431 of file activex.cpp.

4432 {
4433 return m_punkOuter->Release();
4434 }

◆ TerminateProtocolThread()

void SEALED_::TerminateProtocolThread ( )
inlineprivate

Definition at line 3973 of file activex.cpp.

3974 {
3975 assert(m_protocolThread);
3976
3977 // wake it up if it's waiting for a manual reconnection
3978 if(m_protocolThreadWaitingReconnection)
3979 {
3980 assert(!m_reconnectAborted);
3981 m_reconnectAborted = true;
3982 SetEvent(m_protocolThreadWaitingReconnection);
3983 }
3984 // otherwise, attempt to interrupt any current blocking operation
3985 else
3986 {
3987 // shutdown(m_protocolState.tcp.sock, SD_BOTH); // TBD: maybe in the future?
3988 QueueUserAPC(DisconnectAPC, m_protocolThread, 0);
3989 }
3990
3991 assert(m_protocolThreadWaitingReconnection == NULL);
3992 }
bool m_reconnectAborted
Definition: activex.cpp:1364
DWORD WINAPI QueueUserAPC(IN PAPCFUNC pfnAPC, IN HANDLE hThread, IN ULONG_PTR dwData)
Definition: thread.c:959

◆ Unadvise()

virtual STDMETHODIMP SEALED_::Unadvise ( DWORD  dwCookie)
inlinevirtual

Implements IConnectionPoint.

Definition at line 4550 of file activex.cpp.

4551 {
4553
4554 if(dwCookie >= m_EventSinksCount || sinks[dwCookie] == NULL)
4556
4557 sinks[dwCookie]->Release();
4558 sinks[dwCookie] = NULL;
4559
4560 // BUGBUG: the array currently grows forever. Trim it whenever possible
4561
4562 return S_OK;
4563 }

◆ UnfreezeEvents()

void SEALED_::UnfreezeEvents ( )
inlineprivate

Definition at line 1615 of file activex.cpp.

1616 {
1617 // Just in case
1618 }

Friends And Related Function Documentation

◆ AdvancedSettings

friend class AdvancedSettings
friend

Definition at line 2413 of file activex.cpp.

◆ SecuredSettings

friend class SecuredSettings
friend

Definition at line 3339 of file activex.cpp.

Member Data Documentation

◆ 

union { ... } SEALED_::@1537

◆ m_AcceleratorPassthrough

bool SEALED_::m_AcceleratorPassthrough
private

Definition at line 1433 of file activex.cpp.

◆ m_actuallyConnected

bool SEALED_::m_actuallyConnected
private

Definition at line 1365 of file activex.cpp.

◆ m_advancedSettings

SEALED_::SEALED_ SEALED_::m_advancedSettings
private

◆ m_adviseHolder

IOleAdviseHolder* SEALED_::m_adviseHolder
private

Definition at line 1347 of file activex.cpp.

◆ m_allowBackgroundInput

bool SEALED_::m_allowBackgroundInput
private

Definition at line 1428 of file activex.cpp.

◆ m_AudioRedirectionMode

long SEALED_::m_AudioRedirectionMode
private

Definition at line 1393 of file activex.cpp.

◆ m_AuthenticationLevel

unsigned int SEALED_::m_AuthenticationLevel
private

Definition at line 1421 of file activex.cpp.

◆ m_BitmapCacheSize

long SEALED_::m_BitmapCacheSize
private

Definition at line 1405 of file activex.cpp.

◆ m_BitmapPersistence

bool SEALED_::m_BitmapPersistence
private

Definition at line 1427 of file activex.cpp.

◆ m_BitmapVirtualCache16BppSize

long SEALED_::m_BitmapVirtualCache16BppSize
private

Definition at line 1417 of file activex.cpp.

◆ m_BitmapVirtualCache24BppSize

long SEALED_::m_BitmapVirtualCache24BppSize
private

Definition at line 1418 of file activex.cpp.

◆ m_BitmapVirtualCacheSize

long SEALED_::m_BitmapVirtualCacheSize
private

Definition at line 1406 of file activex.cpp.

◆ m_brushSupportLevel

long SEALED_::m_brushSupportLevel
private

Definition at line 1408 of file activex.cpp.

◆ m_CachePersistenceActive

bool SEALED_::m_CachePersistenceActive
private

Definition at line 1442 of file activex.cpp.

◆ m_CanAutoReconnect

bool SEALED_::m_CanAutoReconnect
private

Definition at line 1453 of file activex.cpp.

◆ m_classId

CLSID SEALED_::m_classId
private

Definition at line 1327 of file activex.cpp.

◆ m_ClearTextPassword

BSTR SEALED_::m_ClearTextPassword
private

Definition at line 1379 of file activex.cpp.

◆ m_clientSite

IOleClientSite* SEALED_::m_clientSite
private

Definition at line 1345 of file activex.cpp.

◆ m_clientUI

RdpClientUI* SEALED_::m_clientUI
private

Definition at line 1360 of file activex.cpp.

◆ m_ColorDepth

long SEALED_::m_ColorDepth
private

Definition at line 1391 of file activex.cpp.

◆ m_Compress

bool SEALED_::m_Compress
private

Definition at line 1426 of file activex.cpp.

◆ m_Connected

bool SEALED_::m_Connected
private

Definition at line 1425 of file activex.cpp.

◆ m_ConnectedStatusText

BSTR SEALED_::m_ConnectedStatusText
private

Definition at line 1378 of file activex.cpp.

◆ m_ConnectingText

BSTR SEALED_::m_ConnectingText
private

Definition at line 1374 of file activex.cpp.

◆ m_ConnectionBarShowMinimizeButton

bool SEALED_::m_ConnectionBarShowMinimizeButton
private

Definition at line 1455 of file activex.cpp.

◆ m_ConnectionBarShowRestoreButton

bool SEALED_::m_ConnectionBarShowRestoreButton
private

Definition at line 1456 of file activex.cpp.

◆ m_ConnectToServerConsole

bool SEALED_::m_ConnectToServerConsole
private

Definition at line 1443 of file activex.cpp.

◆ m_ContainerHandledFullScreen

bool SEALED_::m_ContainerHandledFullScreen
private

Definition at line 1429 of file activex.cpp.

◆ m_controlWindow

HWND SEALED_::m_controlWindow
private

Definition at line 1344 of file activex.cpp.

◆ m_DedicatedTerminal

bool SEALED_::m_DedicatedTerminal
private

Definition at line 1436 of file activex.cpp.

◆ m_DesktopHeight

long SEALED_::m_DesktopHeight
private

Definition at line 1389 of file activex.cpp.

◆ m_DesktopWidth

long SEALED_::m_DesktopWidth
private

Definition at line 1388 of file activex.cpp.

◆ m_DisableCtrlAltDel

bool SEALED_::m_DisableCtrlAltDel
private

Definition at line 1437 of file activex.cpp.

◆ m_DisableRdpdr

bool SEALED_::m_DisableRdpdr
private

Definition at line 1430 of file activex.cpp.

◆ m_DisconnectedText

BSTR SEALED_::m_DisconnectedText
private

Definition at line 1373 of file activex.cpp.

◆ m_DisplayConnectionBar

bool SEALED_::m_DisplayConnectionBar
private

Definition at line 1445 of file activex.cpp.

◆ m_dispTypeInfo

ITypeInfo* SEALED_::m_dispTypeInfo
private

Definition at line 1332 of file activex.cpp.

◆ m_Domain

BSTR SEALED_::m_Domain
private

Definition at line 1371 of file activex.cpp.

◆ m_DoubleClickDetect

bool SEALED_::m_DoubleClickDetect
private

Definition at line 1439 of file activex.cpp.

◆ m_EnableAutoReconnect

bool SEALED_::m_EnableAutoReconnect
private

Definition at line 1454 of file activex.cpp.

◆ m_EnableWindowsKey

bool SEALED_::m_EnableWindowsKey
private

Definition at line 1438 of file activex.cpp.

◆ m_EncryptionEnabled

bool SEALED_::m_EncryptionEnabled
private

Definition at line 1435 of file activex.cpp.

◆ m_EventSinks

MSTSCLib::IMsTscAxEvents** SEALED_::m_EventSinks

Definition at line 1340 of file activex.cpp.

◆ m_EventSinksCount

size_t SEALED_::m_EventSinksCount
private

Definition at line 1335 of file activex.cpp.

◆ m_EventSinksStatic

MSTSCLib::IMsTscAxEvents* SEALED_::m_EventSinksStatic[1]

Definition at line 1339 of file activex.cpp.

◆ m_ExtendedDisconnectReason

MSTSCLib::ExtendedDisconnectReasonCode SEALED_::m_ExtendedDisconnectReason
private

Definition at line 1423 of file activex.cpp.

◆ m_freezeEvents

LONG SEALED_::m_freezeEvents
private

Definition at line 1348 of file activex.cpp.

◆ m_FullScreen

bool SEALED_::m_FullScreen
private

Definition at line 1432 of file activex.cpp.

◆ m_FullScreenTitle

BSTR SEALED_::m_FullScreenTitle
private

Definition at line 1375 of file activex.cpp.

◆ m_GrabFocusOnConnect

bool SEALED_::m_GrabFocusOnConnect
private

Definition at line 1447 of file activex.cpp.

◆ m_HotKeyAltEsc

long SEALED_::m_HotKeyAltEsc
private

Definition at line 1398 of file activex.cpp.

◆ m_HotKeyAltShiftTab

long SEALED_::m_HotKeyAltShiftTab
private

Definition at line 1399 of file activex.cpp.

◆ m_HotKeyAltSpace

long SEALED_::m_HotKeyAltSpace
private

Definition at line 1400 of file activex.cpp.

◆ m_HotKeyAltTab

long SEALED_::m_HotKeyAltTab
private

Definition at line 1401 of file activex.cpp.

◆ m_HotKeyCtrlAltDel

long SEALED_::m_HotKeyCtrlAltDel
private

Definition at line 1402 of file activex.cpp.

◆ m_HotKeyCtrlEsc

long SEALED_::m_HotKeyCtrlEsc
private

Definition at line 1403 of file activex.cpp.

◆ m_HotKeyFullScreen

long SEALED_::m_HotKeyFullScreen
private

Definition at line 1397 of file activex.cpp.

◆ m_inner

SEALED_::RdpClientInner SEALED_::m_inner
private

◆ m_inPlaceSite

IOleInPlaceSite* SEALED_::m_inPlaceSite
private

Definition at line 1346 of file activex.cpp.

◆ m_InputEventsAtOnce

long SEALED_::m_InputEventsAtOnce
private

Definition at line 1410 of file activex.cpp.

◆ m_keepAliveInternal

long SEALED_::m_keepAliveInternal
private

Definition at line 1412 of file activex.cpp.

◆ m_KeyboardHookMode

long SEALED_::m_KeyboardHookMode
private

Definition at line 1392 of file activex.cpp.

◆ m_KeyboardLayoutString

BSTR SEALED_::m_KeyboardLayoutString
private

Definition at line 1383 of file activex.cpp.

◆ m_LoadBalanceInfo

LPSTR SEALED_::m_LoadBalanceInfo
private

Definition at line 1385 of file activex.cpp.

◆ m_loggedIn

bool SEALED_::m_loggedIn
private

Definition at line 1366 of file activex.cpp.

◆ m_maxEventCount

long SEALED_::m_maxEventCount
private

Definition at line 1411 of file activex.cpp.

◆ m_MaximizeShell

bool SEALED_::m_MaximizeShell
private

Definition at line 1440 of file activex.cpp.

◆ m_MaxReconnectAttempts

long SEALED_::m_MaxReconnectAttempts
private

Definition at line 1420 of file activex.cpp.

◆ m_minInputSendInterval

long SEALED_::m_minInputSendInterval
private

Definition at line 1409 of file activex.cpp.

◆ m_MinutesToIdleTimeout

long SEALED_::m_MinutesToIdleTimeout
private

Definition at line 1416 of file activex.cpp.

◆ m_NotifyTSPublicKey

bool SEALED_::m_NotifyTSPublicKey
private

Definition at line 1452 of file activex.cpp.

◆ m_NumBitmapCaches

long SEALED_::m_NumBitmapCaches
private

Definition at line 1407 of file activex.cpp.

◆ m_orderDrawThresold

long SEALED_::m_orderDrawThresold
private

Definition at line 1404 of file activex.cpp.

◆ m_overallConnectionTimeout

long SEALED_::m_overallConnectionTimeout
private

Definition at line 1414 of file activex.cpp.

◆ m_PerformanceFlags

long SEALED_::m_PerformanceFlags
private

Definition at line 1419 of file activex.cpp.

◆ m_PinConnectionBar

bool SEALED_::m_PinConnectionBar
private

Definition at line 1446 of file activex.cpp.

◆ m_protocolState

RDPCLIENT SEALED_::m_protocolState
private

Definition at line 1361 of file activex.cpp.

◆ m_protocolThread

HANDLE SEALED_::m_protocolThread
private

Definition at line 1362 of file activex.cpp.

◆ m_protocolThreadWaitingReconnection

HANDLE SEALED_::m_protocolThreadWaitingReconnection
private

Definition at line 1363 of file activex.cpp.

◆ m_punkOuter

IUnknown* SEALED_::m_punkOuter
private

Definition at line 1297 of file activex.cpp.

◆ m_RdpdrClipCleanTempDirString

BSTR SEALED_::m_RdpdrClipCleanTempDirString
private

Definition at line 1381 of file activex.cpp.

◆ m_RdpdrClipPasteInfoString

BSTR SEALED_::m_RdpdrClipPasteInfoString
private

Definition at line 1382 of file activex.cpp.

◆ m_RdpdrLocalPrintingDocName

BSTR SEALED_::m_RdpdrLocalPrintingDocName
private

Definition at line 1380 of file activex.cpp.

◆ m_RDPPort

long SEALED_::m_RDPPort
private

Definition at line 1396 of file activex.cpp.

◆ m_reconnectAborted

bool SEALED_::m_reconnectAborted
private

Definition at line 1364 of file activex.cpp.

◆ m_RedirectDrives

bool SEALED_::m_RedirectDrives
private

Definition at line 1448 of file activex.cpp.

◆ m_RedirectPorts

bool SEALED_::m_RedirectPorts
private

Definition at line 1450 of file activex.cpp.

◆ m_RedirectPrinters

bool SEALED_::m_RedirectPrinters
private

Definition at line 1449 of file activex.cpp.

◆ m_RedirectSmartCards

bool SEALED_::m_RedirectSmartCards
private

Definition at line 1451 of file activex.cpp.

◆ m_refCount

LONG SEALED_::m_refCount
private

Definition at line 1285 of file activex.cpp.

◆ m_SafetyOptions

DWORD SEALED_::m_SafetyOptions
private

Definition at line 1352 of file activex.cpp.

◆ m_SasSequence

long SEALED_::m_SasSequence
private

Definition at line 1395 of file activex.cpp.

◆ m_ScaleBitmapCachesByBpp

bool SEALED_::m_ScaleBitmapCachesByBpp
private

Definition at line 1441 of file activex.cpp.

◆ m_securedSettings

SEALED_::SEALED_ SEALED_::m_securedSettings
private

◆ m_SecuredSettingsEnabled

bool SEALED_::m_SecuredSettingsEnabled
private

Definition at line 1431 of file activex.cpp.

◆ m_Server

LPSTR SEALED_::m_Server
private

Definition at line 1384 of file activex.cpp.

◆ m_ShadowBitmap

bool SEALED_::m_ShadowBitmap
private

Definition at line 1434 of file activex.cpp.

◆ m_shutdownTimeout

long SEALED_::m_shutdownTimeout
private

Definition at line 1413 of file activex.cpp.

◆ m_singleConnectionTimeout

long SEALED_::m_singleConnectionTimeout
private

Definition at line 1415 of file activex.cpp.

◆ m_SmartSizing

bool SEALED_::m_SmartSizing
private

Definition at line 1444 of file activex.cpp.

◆ m_StartConnected

long SEALED_::m_StartConnected
private

Definition at line 1390 of file activex.cpp.

◆ m_StartProgram

BSTR SEALED_::m_StartProgram
private

Definition at line 1376 of file activex.cpp.

◆ m_TransportType

long SEALED_::m_TransportType
private

Definition at line 1394 of file activex.cpp.

◆ m_typeLib

ITypeLib* SEALED_::m_typeLib
private

Definition at line 1331 of file activex.cpp.

◆ m_typeLibIndex

unsigned SEALED_::m_typeLibIndex
private

Definition at line 1330 of file activex.cpp.

◆ m_uiActive

bool SEALED_::m_uiActive
private

Definition at line 1349 of file activex.cpp.

◆ m_UIParentWindowHandle

HWND SEALED_::m_UIParentWindowHandle
private

Definition at line 1387 of file activex.cpp.

◆ m_UserName

BSTR SEALED_::m_UserName
private

Definition at line 1372 of file activex.cpp.

◆ m_WorkDir

BSTR SEALED_::m_WorkDir
private

Definition at line 1377 of file activex.cpp.


The documentation for this class was generated from the following file: