Click here to Skip to main content
15,896,453 members
Articles / Desktop Programming / WTL

Passing C++ classes across DCOM

Rate me:
Please Sign up or sign in to vote.
4.64/5 (10 votes)
15 Nov 20012 min read 214.6K   2.5K   42  
Two classes that provide richer interfaces and easier semantics to pass classes via COM/DCOM
/* this ALWAYS GENERATED file contains the definitions for the interfaces */


/* File created by MIDL compiler version 5.01.0164 */
/* at Mon Nov 05 13:23:56 2001
 */
/* Compiler settings for C:\Documents and Settings\ekhodakovsky\My Documents\Projects\VC++\Demo\DCOM Streaming\StreamingServer\StreamingServer.idl:
    Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
    error checks: allocation ref bounds_check enum stub_data 
*/
//@@MIDL_FILE_HEADING(  )


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 440
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __StreamingServer_h__
#define __StreamingServer_h__

#ifdef __cplusplus
extern "C"{
#endif 

/* Forward Declarations */ 

#ifndef __IStreamingSrv_FWD_DEFINED__
#define __IStreamingSrv_FWD_DEFINED__
typedef interface IStreamingSrv IStreamingSrv;
#endif 	/* __IStreamingSrv_FWD_DEFINED__ */


#ifndef __IConnectionSink_FWD_DEFINED__
#define __IConnectionSink_FWD_DEFINED__
typedef interface IConnectionSink IConnectionSink;
#endif 	/* __IConnectionSink_FWD_DEFINED__ */


#ifndef __ConnectionSink_FWD_DEFINED__
#define __ConnectionSink_FWD_DEFINED__

#ifdef __cplusplus
typedef class ConnectionSink ConnectionSink;
#else
typedef struct ConnectionSink ConnectionSink;
#endif /* __cplusplus */

#endif 	/* __ConnectionSink_FWD_DEFINED__ */


#ifndef __StreamingSrv_FWD_DEFINED__
#define __StreamingSrv_FWD_DEFINED__

#ifdef __cplusplus
typedef class StreamingSrv StreamingSrv;
#else
typedef struct StreamingSrv StreamingSrv;
#endif /* __cplusplus */

#endif 	/* __StreamingSrv_FWD_DEFINED__ */


/* header files for imported files */
#include "oaidl.h"
#include "ocidl.h"

void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free( void __RPC_FAR * ); 

#ifndef __IStreamingSrv_INTERFACE_DEFINED__
#define __IStreamingSrv_INTERFACE_DEFINED__

/* interface IStreamingSrv */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IStreamingSrv;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("811DE671-A686-4782-8D84-BAF7FEAF9BDC")
    IStreamingSrv : public IDispatch
    {
    public:
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Connect( 
            VARIANT __RPC_FAR *pConnection,
            VARIANT __RPC_FAR *pConnResult) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Disconnect( 
            VARIANT __RPC_FAR *pConnection) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IStreamingSrvVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( 
            IStreamingSrv __RPC_FAR * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
        
        ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( 
            IStreamingSrv __RPC_FAR * This);
        
        ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( 
            IStreamingSrv __RPC_FAR * This);
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoCount )( 
            IStreamingSrv __RPC_FAR * This,
            /* [out] */ UINT __RPC_FAR *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfo )( 
            IStreamingSrv __RPC_FAR * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetIDsOfNames )( 
            IStreamingSrv __RPC_FAR * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
            /* [in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID __RPC_FAR *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invoke )( 
            IStreamingSrv __RPC_FAR * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
            /* [out] */ VARIANT __RPC_FAR *pVarResult,
            /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
            /* [out] */ UINT __RPC_FAR *puArgErr);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Connect )( 
            IStreamingSrv __RPC_FAR * This,
            VARIANT __RPC_FAR *pConnection,
            VARIANT __RPC_FAR *pConnResult);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Disconnect )( 
            IStreamingSrv __RPC_FAR * This,
            VARIANT __RPC_FAR *pConnection);
        
        END_INTERFACE
    } IStreamingSrvVtbl;

    interface IStreamingSrv
    {
        CONST_VTBL struct IStreamingSrvVtbl __RPC_FAR *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IStreamingSrv_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IStreamingSrv_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IStreamingSrv_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IStreamingSrv_GetTypeInfoCount(This,pctinfo)	\
    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IStreamingSrv_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IStreamingSrv_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IStreamingSrv_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IStreamingSrv_Connect(This,pConnection,pConnResult)	\
    (This)->lpVtbl -> Connect(This,pConnection,pConnResult)

#define IStreamingSrv_Disconnect(This,pConnection)	\
    (This)->lpVtbl -> Disconnect(This,pConnection)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IStreamingSrv_Connect_Proxy( 
    IStreamingSrv __RPC_FAR * This,
    VARIANT __RPC_FAR *pConnection,
    VARIANT __RPC_FAR *pConnResult);


void __RPC_STUB IStreamingSrv_Connect_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IStreamingSrv_Disconnect_Proxy( 
    IStreamingSrv __RPC_FAR * This,
    VARIANT __RPC_FAR *pConnection);


void __RPC_STUB IStreamingSrv_Disconnect_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IStreamingSrv_INTERFACE_DEFINED__ */



#ifndef __STREAMINGSERVERLib_LIBRARY_DEFINED__
#define __STREAMINGSERVERLib_LIBRARY_DEFINED__

/* library STREAMINGSERVERLib */
/* [helpstring][version][uuid] */ 


EXTERN_C const IID LIBID_STREAMINGSERVERLib;

#ifndef __IConnectionSink_INTERFACE_DEFINED__
#define __IConnectionSink_INTERFACE_DEFINED__

/* interface IConnectionSink */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IConnectionSink;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("02F296FC-9DA4-4712-9FE8-F5A3399B4A8D")
    IConnectionSink : public IUnknown
    {
    public:
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnEvent( 
            VARIANT __RPC_FAR *pEvent) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnPropertyChanged( 
            VARIANT __RPC_FAR *pPoperty) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IConnectionSinkVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( 
            IConnectionSink __RPC_FAR * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
        
        ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( 
            IConnectionSink __RPC_FAR * This);
        
        ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( 
            IConnectionSink __RPC_FAR * This);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnEvent )( 
            IConnectionSink __RPC_FAR * This,
            VARIANT __RPC_FAR *pEvent);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnPropertyChanged )( 
            IConnectionSink __RPC_FAR * This,
            VARIANT __RPC_FAR *pPoperty);
        
        END_INTERFACE
    } IConnectionSinkVtbl;

    interface IConnectionSink
    {
        CONST_VTBL struct IConnectionSinkVtbl __RPC_FAR *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IConnectionSink_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IConnectionSink_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define IConnectionSink_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define IConnectionSink_OnEvent(This,pEvent)	\
    (This)->lpVtbl -> OnEvent(This,pEvent)

#define IConnectionSink_OnPropertyChanged(This,pPoperty)	\
    (This)->lpVtbl -> OnPropertyChanged(This,pPoperty)

#endif /* COBJMACROS */


#endif 	/* C style interface */



/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IConnectionSink_OnEvent_Proxy( 
    IConnectionSink __RPC_FAR * This,
    VARIANT __RPC_FAR *pEvent);


void __RPC_STUB IConnectionSink_OnEvent_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IConnectionSink_OnPropertyChanged_Proxy( 
    IConnectionSink __RPC_FAR * This,
    VARIANT __RPC_FAR *pPoperty);


void __RPC_STUB IConnectionSink_OnPropertyChanged_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IConnectionSink_INTERFACE_DEFINED__ */


EXTERN_C const CLSID CLSID_ConnectionSink;

#ifdef __cplusplus

class DECLSPEC_UUID("0A9E55E3-B783-474F-9404-FE9140395183")
ConnectionSink;
#endif

EXTERN_C const CLSID CLSID_StreamingSrv;

#ifdef __cplusplus

class DECLSPEC_UUID("295A32FD-5B91-4346-BB6A-609A363C4594")
StreamingSrv;
#endif
#endif /* __STREAMINGSERVERLib_LIBRARY_DEFINED__ */

/* Additional Prototypes for ALL interfaces */

unsigned long             __RPC_USER  VARIANT_UserSize(     unsigned long __RPC_FAR *, unsigned long            , VARIANT __RPC_FAR * ); 
unsigned char __RPC_FAR * __RPC_USER  VARIANT_UserMarshal(  unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, VARIANT __RPC_FAR * ); 
unsigned char __RPC_FAR * __RPC_USER  VARIANT_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, VARIANT __RPC_FAR * ); 
void                      __RPC_USER  VARIANT_UserFree(     unsigned long __RPC_FAR *, VARIANT __RPC_FAR * ); 

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Software Developer (Senior)
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions