/*++ Copyright (c) 1999-2000 Microsoft Corporation Module Name: RDSHOST.IDL Abstract: Remote Desktopping Server-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"; /** ** Remote Desktop Sharing class. **/ typedef [ uuid(34b3166d-870a-4f39-9e2a-09fd8d31ad83), helpstring("Remote Desktop Sharing Class") ] enum { [helpstring("REMOTE DESKTOP SHARING CLASS")] DESKTOPSHARING_DEFAULT = 0x0000, NO_DESKTOP_SHARING = 0x0001, VIEWDESKTOP_PERMISSION_REQUIRE = 0x0002, VIEWDESKTOP_PERMISSION_NOT_REQUIRE = 0x0004, CONTROLDESKTOP_PERMISSION_REQUIRE = 0x0008, CONTROLDESKTOP_PERMISSION_NOT_REQUIRE = 0x00010, } REMOTE_DESKTOP_SHARING_CLASS; /** ** ISAFRemoteDesktopSession Interface **/ cpp_quote("") cpp_quote("#define DISPID_RDSSESSION_CHANNELMANAGER 1") cpp_quote("#define DISPID_RDSSESSION_CONNECTPARMS 2") cpp_quote("#define DISPID_RDSSESSION_SHARINGCLASS 3") cpp_quote("#define DISPID_RDSSESSION_ONCONNECTED 4") cpp_quote("#define DISPID_RDSSESSION_ONDISCONNECTED 5") cpp_quote("#define DISPID_RDSSESSION_CLOSERDSSESSION 6") cpp_quote("#define DISPID_RDSSESSION_DISCONNECT 7") cpp_quote("") #define DISPID_RDSSESSION_CHANNELMANAGER 1 #define DISPID_RDSSESSION_CONNECTPARMS 2 #define DISPID_RDSSESSION_SHARINGCLASS 3 #define DISPID_RDSSESSION_ONCONNECTED 4 #define DISPID_RDSSESSION_ONDISCONNECTED 5 #define DISPID_RDSSESSION_CLOSERDSSESSION 6 #define DISPID_RDSSESSION_DISCONNECT 7 [ object, uuid(9D8C82C9-A89F-42C5-8A52-FE2A77B00E82), dual, helpstring("ISAFRemoteDesktopSession Interface"), pointer_default(unique) ] interface ISAFRemoteDesktopSession : IDispatch { [propget, id(DISPID_RDSSESSION_CHANNELMANAGER), helpstring("ChannelManager")] HRESULT ChannelManager([out, retval]ISAFRemoteDesktopChannelMgr **mgr); [propget, id(DISPID_RDSSESSION_CONNECTPARMS), helpstring("ConnectParms")] HRESULT ConnectParms([out, retval]BSTR *parms); [propput, id(DISPID_RDSSESSION_SHARINGCLASS), helpstring("Sharing Class")] HRESULT SharingClass([in] REMOTE_DESKTOP_SHARING_CLASS sharingClass); [propget, id(DISPID_RDSSESSION_SHARINGCLASS), helpstring("Sharing Class")] HRESULT SharingClass([out, retval]REMOTE_DESKTOP_SHARING_CLASS *sharingClass); [id(DISPID_RDSSESSION_CLOSERDSSESSION), helpstring("method CloseRemoteDesktopSession")] HRESULT CloseRemoteDesktopSession(); [id(DISPID_RDSSESSION_DISCONNECT), helpstring("method Disconnect")] HRESULT Disconnect(); [propput, id(DISPID_RDSSESSION_ONCONNECTED), helpstring("OnConnected")] HRESULT OnConnected([in] IDispatch *iDisp); [propput, id(DISPID_RDSSESSION_ONDISCONNECTED), helpstring("OnDisconnected")] HRESULT OnDisconnected([in] IDispatch *iDisp); }; /** ** IRDSThreadBridge Interface **/ [ object, uuid(35B9A4B1-7CA6-4aec-8762-1B590056C05D), dual, helpstring("IRDSThreadBridge Interface"), pointer_default(unique) ] interface IRDSThreadBridge : IUnknown { [id(1), helpstring("method ClientConnectedNotify")] HRESULT ClientConnectedNotify(); [id(2), helpstring("method ClientDisconnectedNotify")] HRESULT ClientDisconnectedNotify(); [id(3), helpstring("method DataReadyNotify")] HRESULT DataReadyNotify([in]BSTR msg); }; /** ** ISAFRemoteDesktopServerHost Interface **/ cpp_quote("") cpp_quote("#define DISPID_RDSSERVERHOST_CREATERDSSESSION 1") cpp_quote("#define DISPID_RDSSERVERHOST_OPENRDSSESSION 2") cpp_quote("#define DISPID_RDSSERVERHOST_CLOSERDSSESSION 3") cpp_quote("#define DISPID_RDSSERVERHOST_DISCONNECTRDSSESSION 4") cpp_quote("#define DISPID_RDSSERVERHOST_CREATERDSSESSIONEX 5") cpp_quote("#define DISPID_RDSSERVERHOST_CONNECTEXPERT 6") cpp_quote("") #define DISPID_RDSSERVERHOST_CREATERDSSESSION 1 #define DISPID_RDSSERVERHOST_OPENRDSSESSION 2 #define DISPID_RDSSERVERHOST_CLOSERDSSESSION 3 #define DISPID_RDSSERVERHOST_DISCONNECTRDSSESSION 4 #define DISPID_RDSSERVERHOST_CREATERDSSESSIONEX 5 #define DISPID_RDSSERVERHOST_CONNECTEXPERT 6 [ object, uuid(C9CCDEB3-A3DD-4673-B495-C1C89494D90E), dual, helpstring("ISAFRemoteDesktopServerHost Interface"), pointer_default(unique) ] interface ISAFRemoteDesktopServerHost : IDispatch { [id(DISPID_RDSSERVERHOST_CREATERDSSESSION), helpstring("method CreateRemoteDesktopSession")] HRESULT CreateRemoteDesktopSession( [in] REMOTE_DESKTOP_SHARING_CLASS sharingClass, [in] BOOL fEnableCallback, [in] LONG timeOut, [in] BSTR userHelpBlob, [out, retval] ISAFRemoteDesktopSession ** ); [id(DISPID_RDSSERVERHOST_CREATERDSSESSIONEX), helpstring("method CreateRemoteDesktopSessionEx")] HRESULT CreateRemoteDesktopSessionEx( [in] REMOTE_DESKTOP_SHARING_CLASS sharingClass, [in] BOOL fEnableCallback, [in] LONG timeOut, [in] BSTR userHelpBlob, [in] LONG tsSessionID, [in] BSTR userSID, [out, retval] ISAFRemoteDesktopSession ** ); [id(DISPID_RDSSERVERHOST_OPENRDSSESSION), helpstring("method OpenRemoteDesktopSession")] HRESULT OpenRemoteDesktopSession([in] BSTR parms, [out, retval] ISAFRemoteDesktopSession **); [id(DISPID_RDSSERVERHOST_CLOSERDSSESSION), helpstring("method CloseRemoteDesktopSession")] HRESULT CloseRemoteDesktopSession([in] ISAFRemoteDesktopSession *); [id(DISPID_RDSSERVERHOST_CONNECTEXPERT), helpstring("method ConnectToExpert")] HRESULT ConnectToExpert([in] BSTR expertConnectParm, [in] LONG timeout, [out, retval] LONG* SafErrorCode); }; /** ** RDSServerHost Type Lib **/ cpp_quote("") cpp_quote("#define DISPID_RDSSESSIONSEVENTS_CLIENTCONNECTED 1") cpp_quote("#define DISPID_RDSSESSIONSEVENTS_CLIENTDISCONNECTED 2") cpp_quote("") #define DISPID_RDSSESSIONSEVENTS_CLIENTCONNECTED 1 #define DISPID_RDSSESSIONSEVENTS_CLIENTDISCONNECTED 2 cpp_quote("") cpp_quote("#define DISPID_RDSCHANNELEVENTS_CHANNELDATAREADY 1") cpp_quote("") #define DISPID_RDSCHANNELEVENTS_CHANNELDATAREADY 1 [ uuid(1B16CE61-2406-412F-969E-21BC082F76E8), version(1.0), helpstring("RDSServerHost 1.0 Type Library") ] library RDSSERVERHOSTLib { 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 client RDCHost 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(8C71C09E-3176-4be6-B294-EA3C41CABB99), helpstring("TSRDPServerDataChannel Class") ] coclass TSRDPServerDataChannel { [default] interface ISAFRemoteDesktopDataChannel; [default, source] dispinterface _ISAFRemoteDesktopDataChannelEvents; }; [ uuid(92550D33-3272-43b6-B536-2DB08C1D569C), helpstring("SAFRemoteDesktopChannelMgr Class") ] coclass TSRDPServerDataChannelMgr { [default] interface ISAFRemoteDesktopChannelMgr; interface IRDSThreadBridge; }; [ uuid(5EA6F67B-7713-45F3-B535-0E03DD637345), helpstring("RemoteDesktopServerHost Class") ] coclass SAFRemoteDesktopServerHost { [default] interface ISAFRemoteDesktopServerHost; }; [ uuid(434AD1CF-4054-44A8-933F-C69889CA22D7), helpstring("_ISAFRemoteDesktopSessionEvents Interface") ] dispinterface _ISAFRemoteDesktopSessionEvents { properties: methods: [id(DISPID_RDSSESSIONSEVENTS_CLIENTCONNECTED), helpstring("method ClientConnected")] void ClientConnected(); [id(DISPID_RDSSESSIONSEVENTS_CLIENTDISCONNECTED), helpstring("method ClientDisconnected")] void ClientDisconnected(); }; [ uuid(3D5D6889-14CC-4E28-8464-6B02A26F506D), helpstring("RemoteDesktopServer Class") ] coclass SAFRemoteDesktopSession { [default] interface ISAFRemoteDesktopSession; [default, source] dispinterface _ISAFRemoteDesktopSessionEvents; }; };