/*++

Copyright (c) 1999-2000  Microsoft Corporation

Module Name:

    RDSCHAN.IDL

Abstract:

	Remote Desktopping IDL for Data Channel Management Interfaces
	and Classes

Author:

    Tad Brockway 02/00

Revision History:

--*/

import "oaidl.idl";
import "ocidl.idl";

	/**
	**	ISAFRemoteDesktopDataChannel Interface
	**/
	cpp_quote("")
	cpp_quote("#define DISPID_RDSDATACHANNEL_CHANNELNAME			1")
	cpp_quote("#define DISPID_RDSDATACHANNEL_ONCHANNELDATAREADY		2")
	cpp_quote("#define DISPID_RDSDATACHANNEL_SENDCHANNELDATA		3")
	cpp_quote("#define DISPID_RDSDATACHANNEL_RECEIVECHANNELDATA		4")
	cpp_quote("")
	#define DISPID_RDSDATACHANNEL_CHANNELNAME				1
	#define DISPID_RDSDATACHANNEL_ONCHANNELDATAREADY		2
	#define DISPID_RDSDATACHANNEL_SENDCHANNELDATA			3
	#define DISPID_RDSDATACHANNEL_RECEIVECHANNELDATA		4
	[
		object,
		uuid(64976FAE-B108-4095-8E59-5874E00E562A),
		dual,
		helpstring("ISAFRemoteDesktopDataChannel Interface"),
		pointer_default(unique)
	]
	interface ISAFRemoteDesktopDataChannel : IDispatch
	{
		[propget, id(DISPID_RDSDATACHANNEL_CHANNELNAME), helpstring("ChannelName")] 
			HRESULT ChannelName([out, retval]BSTR *name);

		[propput, id(DISPID_RDSDATACHANNEL_ONCHANNELDATAREADY), helpstring("OnChannelDataReady")] 
			HRESULT OnChannelDataReady([in] IDispatch *iDisp);

		[id(DISPID_RDSDATACHANNEL_SENDCHANNELDATA), helpstring("method SendChannelData")] 
			HRESULT SendChannelData([in]BSTR data);

		[id(DISPID_RDSDATACHANNEL_RECEIVECHANNELDATA), helpstring("method ReceiveChannelData")] 
			HRESULT ReceiveChannelData([out, retval]BSTR *data);
	};

	/**
	**	ISAFRemoteDesktopChannelMgr Interface
	**/
	cpp_quote("")
	cpp_quote("#define DISPID_RDSCHANNELMANAGER_OPENDATACHANNEL		1")
	cpp_quote("")
	#define DISPID_RDSCHANNELMANAGER_OPENDATACHANNEL		1
	[
		object,
		uuid(8E6E0954-33CE-4945-ACF7-6728D23B2067),
		dual,
		helpstring("ISAFRemoteDesktopChannelMgr Interface"),
		pointer_default(unique)
	]
	interface ISAFRemoteDesktopChannelMgr : IDispatch
	{
		[id(DISPID_RDSCHANNELMANAGER_OPENDATACHANNEL), helpstring("method OpenDataChannel")] 
			HRESULT OpenDataChannel([in] BSTR name, [out, retval] ISAFRemoteDesktopDataChannel **channel);
	};

/*  TODO:   Find a way to define this in a common location, instead of in the client and server 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);
    };
*/



