/*++ Copyright (c) 1999-2000 Microsoft Corporation Module Name: RDCHOST.IDL Abstract: Remote Desktopping Client-Side IDL for Core Remote Desktopping Interfaces and Classes Author: Tad Brockway 02/00 Revision History: --*/ import "oaidl.idl"; import "ocidl.idl"; import "rdschan.idl"; import "rderror.idl"; #include "olectl.h" /** ** IDataChannelIO ** ** Non-Public Data Channel IO Interface **/ [ object, uuid(43A09182-0472-436E-9883-2D95C347C5F1), helpstring("IDataChannelIO Interface"), pointer_default(unique) ] interface IDataChannelIO : IUnknown { [helpstring("method SendData")] HRESULT SendData([in]BSTR data); [propput, helpstring("property ChannelMgr")] HRESULT ChannelMgr( [in] ISAFRemoteDesktopChannelMgr *newVal ); }; /** ** ISAFRemoteDesktopClient Interface **/ cpp_quote("") cpp_quote("#define DISPID_RDSCLIENT_CHANNELMANAGER 1") cpp_quote("#define DISPID_RDSCLIENT_CONNECTPARMS 2") cpp_quote("#define DISPID_RDSCLIENT_CONNECTTOSERVER 3") cpp_quote("#define DISPID_RDSCLIENT_CONNECTREMOTEDESKTOP 4") cpp_quote("#define DISPID_RDSCLIENT_DISCONNECTREMOTEDESKTOP 5") cpp_quote("#define DISPID_RDSCLIENT_ISREMOTEDESKTOPCONNECTED 6") cpp_quote("#define DISPID_RDSCLIENT_ISSERVERCONNECTED 7") cpp_quote("#define DISPID_RDSCLIENT_DISCONNECTFROMSERVER 8") cpp_quote("#define DISPID_RDSCLIENT_ONCONNECTED 9") cpp_quote("#define DISPID_RDSCLIENT_ONDISCONNECTED 10") cpp_quote("#define DISPID_RDSCLIENT_ONCONNECTREMOTEDESKTOPCOMPLETE 11") cpp_quote("#define DISPID_RDSCLIENT_EXTENDEDERRORINFO 12") cpp_quote("#define DISPID_RDSCLIENT_ENABLESMARTSIZING 13") cpp_quote("#define DISPID_RDSCLIENT_CONNECTEDSERVER 14") cpp_quote("#define DISPID_RDSCLIENT_CONNECTEDPORT 15") cpp_quote("#define DISPID_RDSCLIENT_CREATELISTENENDPOINT 16") cpp_quote("#define DISPID_RDSCLIENT_STARTLISTEN 17") cpp_quote("#define DISPID_RDSCLIENT_ACCEPTCONNECTION 18") cpp_quote("#define DISPID_RDSCLIENT_STOPLISTEN 19") cpp_quote("#define DISPID_RDSCLIENT_ONLISTENCONNECT 20") cpp_quote("#define DISPID_RDSCLIENT_COLORDEPTH 21") cpp_quote("#define DISPID_RDSCLIENT_ONBEGINCONNECT 22") cpp_quote("") #define DISPID_RDSCLIENT_CHANNELMANAGER 1 #define DISPID_RDSCLIENT_CONNECTPARMS 2 #define DISPID_RDSCLIENT_CONNECTTOSERVER 3 #define DISPID_RDSCLIENT_CONNECTREMOTEDESKTOP 4 #define DISPID_RDSCLIENT_DISCONNECTREMOTEDESKTOP 5 #define DISPID_RDSCLIENT_ISREMOTEDESKTOPCONNECTED 6 #define DISPID_RDSCLIENT_ISSERVERCONNECTED 7 #define DISPID_RDSCLIENT_DISCONNECTFROMSERVER 8 #define DISPID_RDSCLIENT_ONCONNECTED 9 #define DISPID_RDSCLIENT_ONDISCONNECTED 10 #define DISPID_RDSCLIENT_ONCONNECTREMOTEDESKTOPCOMPLETE 11 #define DISPID_RDSCLIENT_EXTENDEDERRORINFO 12 #define DISPID_RDSCLIENT_ENABLESMARTSIZING 13 #define DISPID_RDSCLIENT_CONNECTEDSERVER 14 #define DISPID_RDSCLIENT_CONNECTEDPORT 15 #define DISPID_RDSCLIENT_CREATELISTENENDPOINT 16 #define DISPID_RDSCLIENT_STARTLISTEN 17 #define DISPID_RDSCLIENT_ACCEPTCONNECTION 18 #define DISPID_RDSCLIENT_STOPLISTEN 19 #define DISPID_RDSCLIENT_ONLISTENCONNECT 20 #define DISPID_RDSCLIENT_COLORDEPTH 21 #define DISPID_RDSCLIENT_ONBEGINCONNECT 22 [ object, uuid(8AA5F108-2918-435C-88AA-DE0AFEE51440), dual, helpstring("ISAFRemoteDesktopClient Interface"), pointer_default(unique) ] interface ISAFRemoteDesktopClient : IDispatch { [propget, id(DISPID_RDSCLIENT_CHANNELMANAGER), helpstring("ChannelManager")] HRESULT ChannelManager([out, retval]ISAFRemoteDesktopChannelMgr **mgr); [propput, id(DISPID_RDSCLIENT_CONNECTPARMS), helpstring("ConnectParms")] HRESULT ConnectParms([in]BSTR parms); [propget, id(DISPID_RDSCLIENT_CONNECTPARMS), helpstring("ConnectParms")] HRESULT ConnectParms([out, retval]BSTR *parms); [id(DISPID_RDSCLIENT_CONNECTTOSERVER), helpstring("method ConnectToServer")] HRESULT ConnectToServer([in] BSTR expertBlob); [id(DISPID_RDSCLIENT_CONNECTREMOTEDESKTOP), helpstring("method ConnectRemoteDesktop")] HRESULT ConnectRemoteDesktop(); [id(DISPID_RDSCLIENT_DISCONNECTREMOTEDESKTOP), helpstring("method DisconnectRemoteDesktop")] HRESULT DisconnectRemoteDesktop(); [propget, id(DISPID_RDSCLIENT_ISREMOTEDESKTOPCONNECTED), helpstring("property IsRemoteDesktopConnected")] HRESULT IsRemoteDesktopConnected([out, retval] BOOL *pVal); [propget, id(DISPID_RDSCLIENT_ISSERVERCONNECTED), helpstring("property IsServerConnected")] HRESULT IsServerConnected([out, retval] BOOL *pVal); [id(DISPID_RDSCLIENT_DISCONNECTFROMSERVER), helpstring("method DisconnectFromServer")] HRESULT DisconnectFromServer(); [propput, id(DISPID_RDSCLIENT_ONCONNECTED), helpstring("OnConnected")] HRESULT OnConnected([in] IDispatch *iDisp); [propput, id(DISPID_RDSCLIENT_ONDISCONNECTED), helpstring("OnDisconnected")] HRESULT OnDisconnected([in] IDispatch *iDisp); [propput, id(DISPID_RDSCLIENT_ONCONNECTREMOTEDESKTOPCOMPLETE), helpstring("OnConnectRemoteDesktopComplete")] HRESULT OnConnectRemoteDesktopComplete([in] IDispatch *iDisp); [propget, id(DISPID_RDSCLIENT_EXTENDEDERRORINFO), helpstring("ExtendedErrorInfo")] HRESULT ExtendedErrorInfo([out, retval]LONG *error); [propput, id(DISPID_RDSCLIENT_ENABLESMARTSIZING), helpstring("EnableSmartSizing")] HRESULT EnableSmartSizing([in] BOOL val); [propget, id(DISPID_RDSCLIENT_ENABLESMARTSIZING), helpstring("EnableSmartSizing")] HRESULT EnableSmartSizing([out, retval]BOOL *val); [propget, id(DISPID_RDSCLIENT_CONNECTEDSERVER), helpstring("ConnectedServer")] HRESULT ConnectedServer([out, retval]BSTR *val); [propget, id(DISPID_RDSCLIENT_CONNECTEDPORT), helpstring("ConnectedPort")] HRESULT ConnectedPort([out, retval]LONG *val); // Create a listening endpoint and return connect parm [id(DISPID_RDSCLIENT_CREATELISTENENDPOINT), helpstring("CreateListenEndpoint")] HRESULT CreateListenEndpoint([in] LONG port, [out, retval] BSTR* pConnectParm); // Wait for incoming connection ISAFRemoteDesktopServerHost [id(DISPID_RDSCLIENT_STARTLISTEN), helpstring("StartListen")] HRESULT StartListen([in] LONG timeout); [id(DISPID_RDSCLIENT_ACCEPTCONNECTION), helpstring("AcceptListenConnection")] HRESULT AcceptListenConnection([in]BSTR expertBlob); // no event is fired. [id(DISPID_RDSCLIENT_STOPLISTEN), helpstring("StopListen")] HRESULT StopListen(); [propput, id(DISPID_RDSCLIENT_ONLISTENCONNECT), helpstring("OnListenConnect")] HRESULT OnListenConnect([in] IDispatch *iDisp); //set and get the colordepths [propput, id(DISPID_RDSCLIENT_COLORDEPTH), helpstring("ColorDepth")] HRESULT ColorDepth([in] LONG val); [propget, id(DISPID_RDSCLIENT_COLORDEPTH), helpstring("ColorDepth")] HRESULT ColorDepth([out, retval] LONG* val); [propput, id(DISPID_RDSCLIENT_ONBEGINCONNECT), helpstring("OnBeginConnect")] HRESULT OnBeginConnect([in] IDispatch *iDisp); }; [ object, uuid(69DE5BF3-5EB9-4158-81DA-6FD662BBDDDD), dual, helpstring("ISAFRemoteDesktopClientHost Interface"), pointer_default(unique) ] interface ISAFRemoteDesktopClientHost : IDispatch { [id(1), helpstring("method GetRemoteDesktopClient")] HRESULT GetRemoteDesktopClient([out, retval] ISAFRemoteDesktopClient **client); }; [ object, uuid(5C7A32EF-1C77-4F35-8FBA-729DD2DE7222), dual, helpstring("ISAFRemoteDesktopTestExtension Interface"), pointer_default(unique) ] interface ISAFRemoteDesktopTestExtension : IDispatch { [propput, id(1), helpstring("property TestExtDllName")] HRESULT TestExtDllName([in] BSTR newVal); [propput, id(2), helpstring("property TestExtParams")] HRESULT TestExtParams([in] BSTR newVal); }; /** ** RDSClientHost Type Lib **/ cpp_quote("") cpp_quote("#define DISPID_RDSCLIENTEVENTS_CONNECTED 2") cpp_quote("#define DISPID_RDSCLIENTEVENTS_DISCONNECTED 3") cpp_quote("#define DISPID_RDSCLIENTEVENTS_REMOTECONTROLREQUESTCOMPLETE 4") cpp_quote("#define DISPID_DATACHANNELEVEVENTS_DATAREADY 1") cpp_quote("#define DISPID_RDSCLIENTEVENTS_LISTENCONNECT 5") cpp_quote("#define DISPID_RDSCLIENTEVENTS_BEGINCONNECT 6") cpp_quote("") #define DISPID_RDSCLIENTEVENTS_CONNECTED 2 #define DISPID_RDSCLIENTEVENTS_DISCONNECTED 3 #define DISPID_RDSCLIENTEVENTS_REMOTECONTROLREQUESTCOMPLETE 4 #define DISPID_DATACHANNELEVEVENTS_DATAREADY 1 #define DISPID_RDSCLIENTEVENTS_LISTENCONNECT 5 #define DISPID_RDSCLIENTEVENTS_BEGINCONNECT 6 cpp_quote("") cpp_quote("#define DISPID_RDSCHANNELEVENTS_CHANNELDATAREADY 1") cpp_quote("") #define DISPID_RDSCHANNELEVENTS_CHANNELDATAREADY 1 [ uuid(97917068-BB0B-4DDA-8067-B1A00C890F44), version(1.0), helpstring("RDCClientHost 1.0 Type Library") ] library RDCCLIENTHOSTLib { importlib("stdole2.tlb"); /* TODO: Find a way to define this in a common location, instead of in the client and server IDL */ // // Changes made here must be reflected in the server RDSHost IDL. // cpp_quote("") cpp_quote("#define DISPID_RDSCHANNELEVENTS_CHANNELDATAREADY 1") cpp_quote("") #define DISPID_RDSCHANNELEVENTS_CHANNELDATAREADY 1 [ uuid(59AE79BC-9721-42df-9396-9D98E7F7A396), helpstring("_ISAFRemoteDesktopDataChannelEvents Interface") ] dispinterface _ISAFRemoteDesktopDataChannelEvents { properties: methods: [id(DISPID_RDSCHANNELEVENTS_CHANNELDATAREADY), helpstring("method ChannelDataReady")] void ChannelDataReady([in]BSTR channelName); }; [ uuid(299BE050-E83E-4DB7-A7DA-D86FDEBFE6D0), helpstring("RemoteDesktopClientHost Class") ] coclass SAFRemoteDesktopClientHost { [default] interface ISAFRemoteDesktopClientHost; }; [ uuid(C91C2A81-8B14-4a96-A5DB-4640F551F3EE), helpstring("ClientDataChannel Class") ] coclass ClientDataChannel { [default] interface ISAFRemoteDesktopDataChannel; [default, source] dispinterface _ISAFRemoteDesktopDataChannelEvents; }; [ uuid(078BB428-FA9B-43f1-B002-1ABF3A8C95CF), helpstring("ClientRemoteDesktopChannelMgr Class") ] coclass ClientRemoteDesktopChannelMgr { [default] interface ISAFRemoteDesktopChannelMgr; [source] dispinterface _ISAFRemoteDesktopDataChannelEvents; }; [ uuid(327A98F6-B337-43B0-A3DE-408B46E6C4CE), helpstring("_ISAFRemoteDesktopClientEvents Interface") ] dispinterface _ISAFRemoteDesktopClientEvents { properties: methods: [id(DISPID_RDSCLIENTEVENTS_CONNECTED), helpstring("method Connected")] void Connected(); [id(DISPID_RDSCLIENTEVENTS_DISCONNECTED), helpstring("method Disconnected")] void Disconnected([in]long reason); [id(DISPID_RDSCLIENTEVENTS_REMOTECONTROLREQUESTCOMPLETE), helpstring("method RemoteControlRequestComplete")] void RemoteControlRequestComplete([in]long status); // Fire SAFERROR_NOERROR - listen connection established // SAFERROR_CONNECTIONTIMEDOUT - listen timeout // SAFERROR_OUTOFMEMORY - out of memory // SAFERROR_INTERNALERROR - internal error [id(DISPID_RDSCLIENTEVENTS_LISTENCONNECT), helpstring("method ListenConnect")] void ListenConnect([in]long status); [id(DISPID_RDSCLIENTEVENTS_BEGINCONNECT), helpstring("method BeginConnect")] void BeginConnect(); }; [ uuid(85C037E5-743F-4938-936B-A8DB95430391), helpstring("_IDataChannelIOEvents Interface") ] dispinterface _IDataChannelIOEvents { properties: methods: [id(DISPID_DATACHANNELEVEVENTS_DATAREADY), helpstring("method DataReady")] void DataReady([in]BSTR data); }; [ uuid(B90D0115-3AEA-45D3-801E-93913008D49E), helpstring("RemoteDesktopClient Class") ] coclass SAFRemoteDesktopClient { [default] interface ISAFRemoteDesktopClient; interface ISAFRemoteDesktopTestExtension; [source] dispinterface _ISAFRemoteDesktopClientEvents; }; [ uuid(F137E241-0092-4575-976A-D3E33980BB26), helpstring("TSRDPRemoteDesktopClient Class") ] coclass TSRDPRemoteDesktopClient { [default] interface ISAFRemoteDesktopClient; interface ISAFRemoteDesktopTestExtension; [source] dispinterface _ISAFRemoteDesktopClientEvents; }; };