

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 7.00.0555 */
/* at Tue Apr 01 13:04:00 2025
 */
/* Compiler settings for CAO.idl:
    Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING(  ) */

#pragma warning( disable: 4049 )  /* more than 64k source lines */


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#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 __CAO_h__
#define __CAO_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */ 

#ifndef __ICaoEngine_FWD_DEFINED__
#define __ICaoEngine_FWD_DEFINED__
typedef interface ICaoEngine ICaoEngine;
#endif 	/* __ICaoEngine_FWD_DEFINED__ */


#ifndef __ICaoWorkspaces_FWD_DEFINED__
#define __ICaoWorkspaces_FWD_DEFINED__
typedef interface ICaoWorkspaces ICaoWorkspaces;
#endif 	/* __ICaoWorkspaces_FWD_DEFINED__ */


#ifndef __ICaoWorkspace_FWD_DEFINED__
#define __ICaoWorkspace_FWD_DEFINED__
typedef interface ICaoWorkspace ICaoWorkspace;
#endif 	/* __ICaoWorkspace_FWD_DEFINED__ */


#ifndef __ICaoControllers_FWD_DEFINED__
#define __ICaoControllers_FWD_DEFINED__
typedef interface ICaoControllers ICaoControllers;
#endif 	/* __ICaoControllers_FWD_DEFINED__ */


#ifndef __ICaoController_FWD_DEFINED__
#define __ICaoController_FWD_DEFINED__
typedef interface ICaoController ICaoController;
#endif 	/* __ICaoController_FWD_DEFINED__ */


#ifndef __ICaoExtensions_FWD_DEFINED__
#define __ICaoExtensions_FWD_DEFINED__
typedef interface ICaoExtensions ICaoExtensions;
#endif 	/* __ICaoExtensions_FWD_DEFINED__ */


#ifndef __ICaoExtension_FWD_DEFINED__
#define __ICaoExtension_FWD_DEFINED__
typedef interface ICaoExtension ICaoExtension;
#endif 	/* __ICaoExtension_FWD_DEFINED__ */


#ifndef __ICaoFiles_FWD_DEFINED__
#define __ICaoFiles_FWD_DEFINED__
typedef interface ICaoFiles ICaoFiles;
#endif 	/* __ICaoFiles_FWD_DEFINED__ */


#ifndef __ICaoFile_FWD_DEFINED__
#define __ICaoFile_FWD_DEFINED__
typedef interface ICaoFile ICaoFile;
#endif 	/* __ICaoFile_FWD_DEFINED__ */


#ifndef __ICaoRobots_FWD_DEFINED__
#define __ICaoRobots_FWD_DEFINED__
typedef interface ICaoRobots ICaoRobots;
#endif 	/* __ICaoRobots_FWD_DEFINED__ */


#ifndef __ICaoRobot_FWD_DEFINED__
#define __ICaoRobot_FWD_DEFINED__
typedef interface ICaoRobot ICaoRobot;
#endif 	/* __ICaoRobot_FWD_DEFINED__ */


#ifndef __ICaoTasks_FWD_DEFINED__
#define __ICaoTasks_FWD_DEFINED__
typedef interface ICaoTasks ICaoTasks;
#endif 	/* __ICaoTasks_FWD_DEFINED__ */


#ifndef __ICaoTask_FWD_DEFINED__
#define __ICaoTask_FWD_DEFINED__
typedef interface ICaoTask ICaoTask;
#endif 	/* __ICaoTask_FWD_DEFINED__ */


#ifndef __ICaoVariables_FWD_DEFINED__
#define __ICaoVariables_FWD_DEFINED__
typedef interface ICaoVariables ICaoVariables;
#endif 	/* __ICaoVariables_FWD_DEFINED__ */


#ifndef __ICaoVariable_FWD_DEFINED__
#define __ICaoVariable_FWD_DEFINED__
typedef interface ICaoVariable ICaoVariable;
#endif 	/* __ICaoVariable_FWD_DEFINED__ */


#ifndef __ICaoCommands_FWD_DEFINED__
#define __ICaoCommands_FWD_DEFINED__
typedef interface ICaoCommands ICaoCommands;
#endif 	/* __ICaoCommands_FWD_DEFINED__ */


#ifndef __ICaoCommand_FWD_DEFINED__
#define __ICaoCommand_FWD_DEFINED__
typedef interface ICaoCommand ICaoCommand;
#endif 	/* __ICaoCommand_FWD_DEFINED__ */


#ifndef __ICaoMessage_FWD_DEFINED__
#define __ICaoMessage_FWD_DEFINED__
typedef interface ICaoMessage ICaoMessage;
#endif 	/* __ICaoMessage_FWD_DEFINED__ */


#ifndef __ICaoEngineStatus_FWD_DEFINED__
#define __ICaoEngineStatus_FWD_DEFINED__
typedef interface ICaoEngineStatus ICaoEngineStatus;
#endif 	/* __ICaoEngineStatus_FWD_DEFINED__ */


#ifndef __IEventSink_FWD_DEFINED__
#define __IEventSink_FWD_DEFINED__
typedef interface IEventSink IEventSink;
#endif 	/* __IEventSink_FWD_DEFINED__ */


#ifndef ___ICaoControllerEvents_FWD_DEFINED__
#define ___ICaoControllerEvents_FWD_DEFINED__
typedef interface _ICaoControllerEvents _ICaoControllerEvents;
#endif 	/* ___ICaoControllerEvents_FWD_DEFINED__ */


#ifndef ___ICaoCommandsEvents_FWD_DEFINED__
#define ___ICaoCommandsEvents_FWD_DEFINED__
typedef interface _ICaoCommandsEvents _ICaoCommandsEvents;
#endif 	/* ___ICaoCommandsEvents_FWD_DEFINED__ */


#ifndef __CaoEngine_FWD_DEFINED__
#define __CaoEngine_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoEngine CaoEngine;
#else
typedef struct CaoEngine CaoEngine;
#endif /* __cplusplus */

#endif 	/* __CaoEngine_FWD_DEFINED__ */


#ifndef __CaoWorkspaces_FWD_DEFINED__
#define __CaoWorkspaces_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoWorkspaces CaoWorkspaces;
#else
typedef struct CaoWorkspaces CaoWorkspaces;
#endif /* __cplusplus */

#endif 	/* __CaoWorkspaces_FWD_DEFINED__ */


#ifndef __CaoWorkspace_FWD_DEFINED__
#define __CaoWorkspace_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoWorkspace CaoWorkspace;
#else
typedef struct CaoWorkspace CaoWorkspace;
#endif /* __cplusplus */

#endif 	/* __CaoWorkspace_FWD_DEFINED__ */


#ifndef __CaoControllers_FWD_DEFINED__
#define __CaoControllers_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoControllers CaoControllers;
#else
typedef struct CaoControllers CaoControllers;
#endif /* __cplusplus */

#endif 	/* __CaoControllers_FWD_DEFINED__ */


#ifndef __CaoController_FWD_DEFINED__
#define __CaoController_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoController CaoController;
#else
typedef struct CaoController CaoController;
#endif /* __cplusplus */

#endif 	/* __CaoController_FWD_DEFINED__ */


#ifndef __CaoExtensions_FWD_DEFINED__
#define __CaoExtensions_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoExtensions CaoExtensions;
#else
typedef struct CaoExtensions CaoExtensions;
#endif /* __cplusplus */

#endif 	/* __CaoExtensions_FWD_DEFINED__ */


#ifndef __CaoExtension_FWD_DEFINED__
#define __CaoExtension_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoExtension CaoExtension;
#else
typedef struct CaoExtension CaoExtension;
#endif /* __cplusplus */

#endif 	/* __CaoExtension_FWD_DEFINED__ */


#ifndef __CaoFiles_FWD_DEFINED__
#define __CaoFiles_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoFiles CaoFiles;
#else
typedef struct CaoFiles CaoFiles;
#endif /* __cplusplus */

#endif 	/* __CaoFiles_FWD_DEFINED__ */


#ifndef __CaoFile_FWD_DEFINED__
#define __CaoFile_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoFile CaoFile;
#else
typedef struct CaoFile CaoFile;
#endif /* __cplusplus */

#endif 	/* __CaoFile_FWD_DEFINED__ */


#ifndef __CaoRobots_FWD_DEFINED__
#define __CaoRobots_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoRobots CaoRobots;
#else
typedef struct CaoRobots CaoRobots;
#endif /* __cplusplus */

#endif 	/* __CaoRobots_FWD_DEFINED__ */


#ifndef __CaoRobot_FWD_DEFINED__
#define __CaoRobot_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoRobot CaoRobot;
#else
typedef struct CaoRobot CaoRobot;
#endif /* __cplusplus */

#endif 	/* __CaoRobot_FWD_DEFINED__ */


#ifndef __CaoTasks_FWD_DEFINED__
#define __CaoTasks_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoTasks CaoTasks;
#else
typedef struct CaoTasks CaoTasks;
#endif /* __cplusplus */

#endif 	/* __CaoTasks_FWD_DEFINED__ */


#ifndef __CaoTask_FWD_DEFINED__
#define __CaoTask_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoTask CaoTask;
#else
typedef struct CaoTask CaoTask;
#endif /* __cplusplus */

#endif 	/* __CaoTask_FWD_DEFINED__ */


#ifndef __CaoVariables_FWD_DEFINED__
#define __CaoVariables_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoVariables CaoVariables;
#else
typedef struct CaoVariables CaoVariables;
#endif /* __cplusplus */

#endif 	/* __CaoVariables_FWD_DEFINED__ */


#ifndef __CaoVariable_FWD_DEFINED__
#define __CaoVariable_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoVariable CaoVariable;
#else
typedef struct CaoVariable CaoVariable;
#endif /* __cplusplus */

#endif 	/* __CaoVariable_FWD_DEFINED__ */


#ifndef __CaoCommands_FWD_DEFINED__
#define __CaoCommands_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoCommands CaoCommands;
#else
typedef struct CaoCommands CaoCommands;
#endif /* __cplusplus */

#endif 	/* __CaoCommands_FWD_DEFINED__ */


#ifndef __CaoCommand_FWD_DEFINED__
#define __CaoCommand_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoCommand CaoCommand;
#else
typedef struct CaoCommand CaoCommand;
#endif /* __cplusplus */

#endif 	/* __CaoCommand_FWD_DEFINED__ */


#ifndef __CaoMessage_FWD_DEFINED__
#define __CaoMessage_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoMessage CaoMessage;
#else
typedef struct CaoMessage CaoMessage;
#endif /* __cplusplus */

#endif 	/* __CaoMessage_FWD_DEFINED__ */


#ifndef __CaoEngineStatus_FWD_DEFINED__
#define __CaoEngineStatus_FWD_DEFINED__

#ifdef __cplusplus
typedef class CaoEngineStatus CaoEngineStatus;
#else
typedef struct CaoEngineStatus CaoEngineStatus;
#endif /* __cplusplus */

#endif 	/* __CaoEngineStatus_FWD_DEFINED__ */


#ifndef __EventSink_FWD_DEFINED__
#define __EventSink_FWD_DEFINED__

#ifdef __cplusplus
typedef class EventSink EventSink;
#else
typedef struct EventSink EventSink;
#endif /* __cplusplus */

#endif 	/* __EventSink_FWD_DEFINED__ */


/* header files for imported files */
#include "oaidl.h"
#include "ocidl.h"

#ifdef __cplusplus
extern "C"{
#endif 


/* interface __MIDL_itf_CAO_0000_0000 */
/* [local] */ 






















extern RPC_IF_HANDLE __MIDL_itf_CAO_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_CAO_0000_0000_v0_0_s_ifspec;

#ifndef __ICaoEngine_INTERFACE_DEFINED__
#define __ICaoEngine_INTERFACE_DEFINED__

/* interface ICaoEngine */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoEngine;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("5acfd9fe-41f0-43f6-a0d6-c10c079315fc")
    ICaoEngine : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_EngineStatus( 
            /* [retval][out] */ ICaoEngineStatus **ppICaoEngineStatus) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Workspaces( 
            /* [retval][out] */ ICaoWorkspaces **ppICaoWSs) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddWorkspace( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoWorkspace **ppICaoWS) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Execute( 
            /* [in] */ BSTR bstrCommand,
            /* [optional][in] */ VARIANT vntParam,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoEngineVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoEngine * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoEngine * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoEngine * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoEngine * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoEngine * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoEngine * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoEngine * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_EngineStatus )( 
            ICaoEngine * This,
            /* [retval][out] */ ICaoEngineStatus **ppICaoEngineStatus);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Workspaces )( 
            ICaoEngine * This,
            /* [retval][out] */ ICaoWorkspaces **ppICaoWSs);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddWorkspace )( 
            ICaoEngine * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoWorkspace **ppICaoWS);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Execute )( 
            ICaoEngine * This,
            /* [in] */ BSTR bstrCommand,
            /* [optional][in] */ VARIANT vntParam,
            /* [retval][out] */ VARIANT *pVal);
        
        END_INTERFACE
    } ICaoEngineVtbl;

    interface ICaoEngine
    {
        CONST_VTBL struct ICaoEngineVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoEngine_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoEngine_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoEngine_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoEngine_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoEngine_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoEngine_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoEngine_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoEngine_get_EngineStatus(This,ppICaoEngineStatus)	\
    ( (This)->lpVtbl -> get_EngineStatus(This,ppICaoEngineStatus) ) 

#define ICaoEngine_get_Workspaces(This,ppICaoWSs)	\
    ( (This)->lpVtbl -> get_Workspaces(This,ppICaoWSs) ) 

#define ICaoEngine_AddWorkspace(This,bstrName,bstrOption,ppICaoWS)	\
    ( (This)->lpVtbl -> AddWorkspace(This,bstrName,bstrOption,ppICaoWS) ) 

#define ICaoEngine_Execute(This,bstrCommand,vntParam,pVal)	\
    ( (This)->lpVtbl -> Execute(This,bstrCommand,vntParam,pVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoEngine_INTERFACE_DEFINED__ */


#ifndef __ICaoWorkspaces_INTERFACE_DEFINED__
#define __ICaoWorkspaces_INTERFACE_DEFINED__

/* interface ICaoWorkspaces */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoWorkspaces;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("8dcdfb4e-cf07-47ca-895f-db1d5afa8f74")
    ICaoWorkspaces : public IDispatch
    {
    public:
        virtual /* [restricted][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( 
            /* [retval][out] */ LPUNKNOWN *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoWorkspace **ppICaoWS) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Count( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoWorkspace **ppICaoWS) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Remove( 
            /* [in] */ VARIANT Index) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clear( void) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsMember( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoWorkspacesVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoWorkspaces * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoWorkspaces * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoWorkspaces * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoWorkspaces * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoWorkspaces * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoWorkspaces * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoWorkspaces * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [restricted][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            ICaoWorkspaces * This,
            /* [retval][out] */ LPUNKNOWN *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( 
            ICaoWorkspaces * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoWorkspace **ppICaoWS);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            ICaoWorkspaces * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( 
            ICaoWorkspaces * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoWorkspace **ppICaoWS);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( 
            ICaoWorkspaces * This,
            /* [in] */ VARIANT Index);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clear )( 
            ICaoWorkspaces * This);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsMember )( 
            ICaoWorkspaces * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal);
        
        END_INTERFACE
    } ICaoWorkspacesVtbl;

    interface ICaoWorkspaces
    {
        CONST_VTBL struct ICaoWorkspacesVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoWorkspaces_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoWorkspaces_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoWorkspaces_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoWorkspaces_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoWorkspaces_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoWorkspaces_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoWorkspaces_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoWorkspaces_get__NewEnum(This,pVal)	\
    ( (This)->lpVtbl -> get__NewEnum(This,pVal) ) 

#define ICaoWorkspaces_Item(This,Index,ppICaoWS)	\
    ( (This)->lpVtbl -> Item(This,Index,ppICaoWS) ) 

#define ICaoWorkspaces_get_Count(This,pVal)	\
    ( (This)->lpVtbl -> get_Count(This,pVal) ) 

#define ICaoWorkspaces_Add(This,bstrName,bstrOption,ppICaoWS)	\
    ( (This)->lpVtbl -> Add(This,bstrName,bstrOption,ppICaoWS) ) 

#define ICaoWorkspaces_Remove(This,Index)	\
    ( (This)->lpVtbl -> Remove(This,Index) ) 

#define ICaoWorkspaces_Clear(This)	\
    ( (This)->lpVtbl -> Clear(This) ) 

#define ICaoWorkspaces_IsMember(This,Index,pVal)	\
    ( (This)->lpVtbl -> IsMember(This,Index,pVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoWorkspaces_INTERFACE_DEFINED__ */


#ifndef __ICaoWorkspace_INTERFACE_DEFINED__
#define __ICaoWorkspace_INTERFACE_DEFINED__

/* interface ICaoWorkspace */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoWorkspace;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("0ed07c17-b078-40cf-9b0f-3a4974de55e5")
    ICaoWorkspace : public IDispatch
    {
    public:
        virtual /* [restricted][helpstring][id] */ HRESULT STDMETHODCALLTYPE _PutIndex( 
            /* [in] */ long newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Controllers( 
            /* [retval][out] */ ICaoControllers **ppICaoCtrls) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Index( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Name( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ProviderNames( 
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddController( 
            /* [in] */ BSTR bstrController,
            /* [in] */ BSTR bstrProvider,
            /* [optional][in] */ BSTR bstrMachine,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoController **ppICaoCtrl) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Execute( 
            /* [in] */ BSTR bstrCommand,
            /* [optional][in] */ VARIANT vntParam,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoWorkspaceVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoWorkspace * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoWorkspace * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoWorkspace * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoWorkspace * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoWorkspace * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoWorkspace * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoWorkspace * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [restricted][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *_PutIndex )( 
            ICaoWorkspace * This,
            /* [in] */ long newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Controllers )( 
            ICaoWorkspace * This,
            /* [retval][out] */ ICaoControllers **ppICaoCtrls);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Index )( 
            ICaoWorkspace * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Name )( 
            ICaoWorkspace * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ProviderNames )( 
            ICaoWorkspace * This,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddController )( 
            ICaoWorkspace * This,
            /* [in] */ BSTR bstrController,
            /* [in] */ BSTR bstrProvider,
            /* [optional][in] */ BSTR bstrMachine,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoController **ppICaoCtrl);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Execute )( 
            ICaoWorkspace * This,
            /* [in] */ BSTR bstrCommand,
            /* [optional][in] */ VARIANT vntParam,
            /* [retval][out] */ VARIANT *pVal);
        
        END_INTERFACE
    } ICaoWorkspaceVtbl;

    interface ICaoWorkspace
    {
        CONST_VTBL struct ICaoWorkspaceVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoWorkspace_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoWorkspace_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoWorkspace_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoWorkspace_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoWorkspace_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoWorkspace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoWorkspace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoWorkspace__PutIndex(This,newVal)	\
    ( (This)->lpVtbl -> _PutIndex(This,newVal) ) 

#define ICaoWorkspace_get_Controllers(This,ppICaoCtrls)	\
    ( (This)->lpVtbl -> get_Controllers(This,ppICaoCtrls) ) 

#define ICaoWorkspace_get_Index(This,pVal)	\
    ( (This)->lpVtbl -> get_Index(This,pVal) ) 

#define ICaoWorkspace_get_Name(This,pVal)	\
    ( (This)->lpVtbl -> get_Name(This,pVal) ) 

#define ICaoWorkspace_get_ProviderNames(This,bstrOption,pVal)	\
    ( (This)->lpVtbl -> get_ProviderNames(This,bstrOption,pVal) ) 

#define ICaoWorkspace_AddController(This,bstrController,bstrProvider,bstrMachine,bstrOption,ppICaoCtrl)	\
    ( (This)->lpVtbl -> AddController(This,bstrController,bstrProvider,bstrMachine,bstrOption,ppICaoCtrl) ) 

#define ICaoWorkspace_Execute(This,bstrCommand,vntParam,pVal)	\
    ( (This)->lpVtbl -> Execute(This,bstrCommand,vntParam,pVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoWorkspace_INTERFACE_DEFINED__ */


#ifndef __ICaoControllers_INTERFACE_DEFINED__
#define __ICaoControllers_INTERFACE_DEFINED__

/* interface ICaoControllers */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoControllers;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("474b2753-9f06-41e0-840b-1f26b1ac1c2c")
    ICaoControllers : public IDispatch
    {
    public:
        virtual /* [restricted][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( 
            /* [retval][out] */ LPUNKNOWN *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoController **ppICaoCtrl) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Count( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( 
            /* [in] */ BSTR bstrController,
            /* [in] */ BSTR bstrProvider,
            /* [optional][in] */ BSTR bstrMachine,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoController **ppICaoCtrl) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Remove( 
            /* [in] */ VARIANT Index) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clear( void) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsMember( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoControllersVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoControllers * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoControllers * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoControllers * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoControllers * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoControllers * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoControllers * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoControllers * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [restricted][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            ICaoControllers * This,
            /* [retval][out] */ LPUNKNOWN *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( 
            ICaoControllers * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoController **ppICaoCtrl);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            ICaoControllers * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( 
            ICaoControllers * This,
            /* [in] */ BSTR bstrController,
            /* [in] */ BSTR bstrProvider,
            /* [optional][in] */ BSTR bstrMachine,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoController **ppICaoCtrl);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( 
            ICaoControllers * This,
            /* [in] */ VARIANT Index);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clear )( 
            ICaoControllers * This);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsMember )( 
            ICaoControllers * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal);
        
        END_INTERFACE
    } ICaoControllersVtbl;

    interface ICaoControllers
    {
        CONST_VTBL struct ICaoControllersVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoControllers_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoControllers_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoControllers_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoControllers_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoControllers_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoControllers_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoControllers_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoControllers_get__NewEnum(This,pVal)	\
    ( (This)->lpVtbl -> get__NewEnum(This,pVal) ) 

#define ICaoControllers_Item(This,Index,ppICaoCtrl)	\
    ( (This)->lpVtbl -> Item(This,Index,ppICaoCtrl) ) 

#define ICaoControllers_get_Count(This,pVal)	\
    ( (This)->lpVtbl -> get_Count(This,pVal) ) 

#define ICaoControllers_Add(This,bstrController,bstrProvider,bstrMachine,bstrOption,ppICaoCtrl)	\
    ( (This)->lpVtbl -> Add(This,bstrController,bstrProvider,bstrMachine,bstrOption,ppICaoCtrl) ) 

#define ICaoControllers_Remove(This,Index)	\
    ( (This)->lpVtbl -> Remove(This,Index) ) 

#define ICaoControllers_Clear(This)	\
    ( (This)->lpVtbl -> Clear(This) ) 

#define ICaoControllers_IsMember(This,Index,pVal)	\
    ( (This)->lpVtbl -> IsMember(This,Index,pVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoControllers_INTERFACE_DEFINED__ */


#ifndef __ICaoController_INTERFACE_DEFINED__
#define __ICaoController_INTERFACE_DEFINED__

/* interface ICaoController */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoController;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("c94e794f-ec5b-43f2-879f-777a49e7305b")
    ICaoController : public IDispatch
    {
    public:
        virtual /* [restricted][helpstring][id] */ HRESULT STDMETHODCALLTYPE _PutIndex( 
            /* [in] */ long newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Attribute( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ExtensionNames( 
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Extensions( 
            /* [retval][out] */ ICaoExtensions **ppICaoExtensions) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_FileNames( 
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Files( 
            /* [retval][out] */ ICaoFiles **ppICaoFiles) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Help( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Index( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Name( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_RobotNames( 
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Robots( 
            /* [retval][out] */ ICaoRobots **ppICaoRobots) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Tag( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Tag( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_TaskNames( 
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Tasks( 
            /* [retval][out] */ ICaoTasks **ppICaoTasks) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_VariableNames( 
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Variables( 
            /* [retval][out] */ ICaoVariables **ppICaoVariables) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_CommandNames( 
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Commands( 
            /* [retval][out] */ ICaoCommands **ppICaoCommands) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ID( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ID( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddExtension( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoExtension **ppICaoExtension) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddFile( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoFile **ppICaoFile) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddRobot( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoRobot **ppICaoRobot) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddTask( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoTask **ppICaoTask) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddVariable( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoVariable **ppICaoVar) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddCommand( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoCommand **ppICaoCommand) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Execute( 
            /* [in] */ BSTR bstrCommand,
            /* [optional][in] */ VARIANT vntParam,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetMessage( 
            /* [retval][out] */ ICaoMessage **ppICaoMessage) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoControllerVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoController * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoController * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoController * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoController * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoController * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoController * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoController * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [restricted][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *_PutIndex )( 
            ICaoController * This,
            /* [in] */ long newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Attribute )( 
            ICaoController * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ExtensionNames )( 
            ICaoController * This,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Extensions )( 
            ICaoController * This,
            /* [retval][out] */ ICaoExtensions **ppICaoExtensions);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FileNames )( 
            ICaoController * This,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Files )( 
            ICaoController * This,
            /* [retval][out] */ ICaoFiles **ppICaoFiles);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Help )( 
            ICaoController * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Index )( 
            ICaoController * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Name )( 
            ICaoController * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_RobotNames )( 
            ICaoController * This,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Robots )( 
            ICaoController * This,
            /* [retval][out] */ ICaoRobots **ppICaoRobots);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Tag )( 
            ICaoController * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Tag )( 
            ICaoController * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TaskNames )( 
            ICaoController * This,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Tasks )( 
            ICaoController * This,
            /* [retval][out] */ ICaoTasks **ppICaoTasks);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_VariableNames )( 
            ICaoController * This,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Variables )( 
            ICaoController * This,
            /* [retval][out] */ ICaoVariables **ppICaoVariables);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CommandNames )( 
            ICaoController * This,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Commands )( 
            ICaoController * This,
            /* [retval][out] */ ICaoCommands **ppICaoCommands);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ID )( 
            ICaoController * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ID )( 
            ICaoController * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddExtension )( 
            ICaoController * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoExtension **ppICaoExtension);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddFile )( 
            ICaoController * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoFile **ppICaoFile);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddRobot )( 
            ICaoController * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoRobot **ppICaoRobot);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddTask )( 
            ICaoController * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoTask **ppICaoTask);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddVariable )( 
            ICaoController * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoVariable **ppICaoVar);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddCommand )( 
            ICaoController * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoCommand **ppICaoCommand);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Execute )( 
            ICaoController * This,
            /* [in] */ BSTR bstrCommand,
            /* [optional][in] */ VARIANT vntParam,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetMessage )( 
            ICaoController * This,
            /* [retval][out] */ ICaoMessage **ppICaoMessage);
        
        END_INTERFACE
    } ICaoControllerVtbl;

    interface ICaoController
    {
        CONST_VTBL struct ICaoControllerVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoController_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoController_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoController_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoController_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoController_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoController_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoController_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoController__PutIndex(This,newVal)	\
    ( (This)->lpVtbl -> _PutIndex(This,newVal) ) 

#define ICaoController_get_Attribute(This,pVal)	\
    ( (This)->lpVtbl -> get_Attribute(This,pVal) ) 

#define ICaoController_get_ExtensionNames(This,bstrOption,pVal)	\
    ( (This)->lpVtbl -> get_ExtensionNames(This,bstrOption,pVal) ) 

#define ICaoController_get_Extensions(This,ppICaoExtensions)	\
    ( (This)->lpVtbl -> get_Extensions(This,ppICaoExtensions) ) 

#define ICaoController_get_FileNames(This,bstrOption,pVal)	\
    ( (This)->lpVtbl -> get_FileNames(This,bstrOption,pVal) ) 

#define ICaoController_get_Files(This,ppICaoFiles)	\
    ( (This)->lpVtbl -> get_Files(This,ppICaoFiles) ) 

#define ICaoController_get_Help(This,pVal)	\
    ( (This)->lpVtbl -> get_Help(This,pVal) ) 

#define ICaoController_get_Index(This,pVal)	\
    ( (This)->lpVtbl -> get_Index(This,pVal) ) 

#define ICaoController_get_Name(This,pVal)	\
    ( (This)->lpVtbl -> get_Name(This,pVal) ) 

#define ICaoController_get_RobotNames(This,bstrOption,pVal)	\
    ( (This)->lpVtbl -> get_RobotNames(This,bstrOption,pVal) ) 

#define ICaoController_get_Robots(This,ppICaoRobots)	\
    ( (This)->lpVtbl -> get_Robots(This,ppICaoRobots) ) 

#define ICaoController_get_Tag(This,pVal)	\
    ( (This)->lpVtbl -> get_Tag(This,pVal) ) 

#define ICaoController_put_Tag(This,newVal)	\
    ( (This)->lpVtbl -> put_Tag(This,newVal) ) 

#define ICaoController_get_TaskNames(This,bstrOption,pVal)	\
    ( (This)->lpVtbl -> get_TaskNames(This,bstrOption,pVal) ) 

#define ICaoController_get_Tasks(This,ppICaoTasks)	\
    ( (This)->lpVtbl -> get_Tasks(This,ppICaoTasks) ) 

#define ICaoController_get_VariableNames(This,bstrOption,pVal)	\
    ( (This)->lpVtbl -> get_VariableNames(This,bstrOption,pVal) ) 

#define ICaoController_get_Variables(This,ppICaoVariables)	\
    ( (This)->lpVtbl -> get_Variables(This,ppICaoVariables) ) 

#define ICaoController_get_CommandNames(This,bstrOption,pVal)	\
    ( (This)->lpVtbl -> get_CommandNames(This,bstrOption,pVal) ) 

#define ICaoController_get_Commands(This,ppICaoCommands)	\
    ( (This)->lpVtbl -> get_Commands(This,ppICaoCommands) ) 

#define ICaoController_get_ID(This,pVal)	\
    ( (This)->lpVtbl -> get_ID(This,pVal) ) 

#define ICaoController_put_ID(This,newVal)	\
    ( (This)->lpVtbl -> put_ID(This,newVal) ) 

#define ICaoController_AddExtension(This,bstrName,bstrOption,ppICaoExtension)	\
    ( (This)->lpVtbl -> AddExtension(This,bstrName,bstrOption,ppICaoExtension) ) 

#define ICaoController_AddFile(This,bstrName,bstrOption,ppICaoFile)	\
    ( (This)->lpVtbl -> AddFile(This,bstrName,bstrOption,ppICaoFile) ) 

#define ICaoController_AddRobot(This,bstrName,bstrOption,ppICaoRobot)	\
    ( (This)->lpVtbl -> AddRobot(This,bstrName,bstrOption,ppICaoRobot) ) 

#define ICaoController_AddTask(This,bstrName,bstrOption,ppICaoTask)	\
    ( (This)->lpVtbl -> AddTask(This,bstrName,bstrOption,ppICaoTask) ) 

#define ICaoController_AddVariable(This,bstrName,bstrOption,ppICaoVar)	\
    ( (This)->lpVtbl -> AddVariable(This,bstrName,bstrOption,ppICaoVar) ) 

#define ICaoController_AddCommand(This,bstrName,bstrOption,ppICaoCommand)	\
    ( (This)->lpVtbl -> AddCommand(This,bstrName,bstrOption,ppICaoCommand) ) 

#define ICaoController_Execute(This,bstrCommand,vntParam,pVal)	\
    ( (This)->lpVtbl -> Execute(This,bstrCommand,vntParam,pVal) ) 

#define ICaoController_GetMessage(This,ppICaoMessage)	\
    ( (This)->lpVtbl -> GetMessage(This,ppICaoMessage) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoController_INTERFACE_DEFINED__ */


#ifndef __ICaoExtensions_INTERFACE_DEFINED__
#define __ICaoExtensions_INTERFACE_DEFINED__

/* interface ICaoExtensions */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoExtensions;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("c5cd2d49-d7b9-4c6d-8d0d-56a566b78042")
    ICaoExtensions : public IDispatch
    {
    public:
        virtual /* [restricted][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( 
            /* [retval][out] */ LPUNKNOWN *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoExtension **ppICaoExtension) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Count( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoExtension **ppICaoExtension) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Remove( 
            /* [in] */ VARIANT Index) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clear( void) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsMember( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoExtensionsVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoExtensions * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoExtensions * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoExtensions * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoExtensions * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoExtensions * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoExtensions * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoExtensions * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [restricted][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            ICaoExtensions * This,
            /* [retval][out] */ LPUNKNOWN *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( 
            ICaoExtensions * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoExtension **ppICaoExtension);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            ICaoExtensions * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( 
            ICaoExtensions * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoExtension **ppICaoExtension);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( 
            ICaoExtensions * This,
            /* [in] */ VARIANT Index);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clear )( 
            ICaoExtensions * This);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsMember )( 
            ICaoExtensions * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal);
        
        END_INTERFACE
    } ICaoExtensionsVtbl;

    interface ICaoExtensions
    {
        CONST_VTBL struct ICaoExtensionsVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoExtensions_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoExtensions_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoExtensions_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoExtensions_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoExtensions_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoExtensions_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoExtensions_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoExtensions_get__NewEnum(This,pVal)	\
    ( (This)->lpVtbl -> get__NewEnum(This,pVal) ) 

#define ICaoExtensions_Item(This,Index,ppICaoExtension)	\
    ( (This)->lpVtbl -> Item(This,Index,ppICaoExtension) ) 

#define ICaoExtensions_get_Count(This,pVal)	\
    ( (This)->lpVtbl -> get_Count(This,pVal) ) 

#define ICaoExtensions_Add(This,bstrName,bstrOption,ppICaoExtension)	\
    ( (This)->lpVtbl -> Add(This,bstrName,bstrOption,ppICaoExtension) ) 

#define ICaoExtensions_Remove(This,Index)	\
    ( (This)->lpVtbl -> Remove(This,Index) ) 

#define ICaoExtensions_Clear(This)	\
    ( (This)->lpVtbl -> Clear(This) ) 

#define ICaoExtensions_IsMember(This,Index,pVal)	\
    ( (This)->lpVtbl -> IsMember(This,Index,pVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoExtensions_INTERFACE_DEFINED__ */


#ifndef __ICaoExtension_INTERFACE_DEFINED__
#define __ICaoExtension_INTERFACE_DEFINED__

/* interface ICaoExtension */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoExtension;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("a2e8ab44-325e-4fd8-8e92-55a91d213d19")
    ICaoExtension : public IDispatch
    {
    public:
        virtual /* [restricted][helpstring][id] */ HRESULT STDMETHODCALLTYPE _PutIndex( 
            /* [in] */ long newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Attribute( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Help( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Index( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Name( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Tag( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Tag( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_VariableNames( 
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Variables( 
            /* [retval][out] */ ICaoVariables **ppICaoVariables) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ID( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ID( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddVariable( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoVariable **ppICaoVar) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Execute( 
            /* [in] */ BSTR bstrCommand,
            /* [optional][in] */ VARIANT vntParam,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoExtensionVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoExtension * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoExtension * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoExtension * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoExtension * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoExtension * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoExtension * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoExtension * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [restricted][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *_PutIndex )( 
            ICaoExtension * This,
            /* [in] */ long newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Attribute )( 
            ICaoExtension * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Help )( 
            ICaoExtension * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Index )( 
            ICaoExtension * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Name )( 
            ICaoExtension * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Tag )( 
            ICaoExtension * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Tag )( 
            ICaoExtension * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_VariableNames )( 
            ICaoExtension * This,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Variables )( 
            ICaoExtension * This,
            /* [retval][out] */ ICaoVariables **ppICaoVariables);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ID )( 
            ICaoExtension * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ID )( 
            ICaoExtension * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddVariable )( 
            ICaoExtension * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoVariable **ppICaoVar);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Execute )( 
            ICaoExtension * This,
            /* [in] */ BSTR bstrCommand,
            /* [optional][in] */ VARIANT vntParam,
            /* [retval][out] */ VARIANT *pVal);
        
        END_INTERFACE
    } ICaoExtensionVtbl;

    interface ICaoExtension
    {
        CONST_VTBL struct ICaoExtensionVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoExtension_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoExtension_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoExtension_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoExtension_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoExtension_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoExtension_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoExtension_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoExtension__PutIndex(This,newVal)	\
    ( (This)->lpVtbl -> _PutIndex(This,newVal) ) 

#define ICaoExtension_get_Attribute(This,pVal)	\
    ( (This)->lpVtbl -> get_Attribute(This,pVal) ) 

#define ICaoExtension_get_Help(This,pVal)	\
    ( (This)->lpVtbl -> get_Help(This,pVal) ) 

#define ICaoExtension_get_Index(This,pVal)	\
    ( (This)->lpVtbl -> get_Index(This,pVal) ) 

#define ICaoExtension_get_Name(This,pVal)	\
    ( (This)->lpVtbl -> get_Name(This,pVal) ) 

#define ICaoExtension_get_Tag(This,pVal)	\
    ( (This)->lpVtbl -> get_Tag(This,pVal) ) 

#define ICaoExtension_put_Tag(This,newVal)	\
    ( (This)->lpVtbl -> put_Tag(This,newVal) ) 

#define ICaoExtension_get_VariableNames(This,bstrOption,pVal)	\
    ( (This)->lpVtbl -> get_VariableNames(This,bstrOption,pVal) ) 

#define ICaoExtension_get_Variables(This,ppICaoVariables)	\
    ( (This)->lpVtbl -> get_Variables(This,ppICaoVariables) ) 

#define ICaoExtension_get_ID(This,pVal)	\
    ( (This)->lpVtbl -> get_ID(This,pVal) ) 

#define ICaoExtension_put_ID(This,newVal)	\
    ( (This)->lpVtbl -> put_ID(This,newVal) ) 

#define ICaoExtension_AddVariable(This,bstrName,bstrOption,ppICaoVar)	\
    ( (This)->lpVtbl -> AddVariable(This,bstrName,bstrOption,ppICaoVar) ) 

#define ICaoExtension_Execute(This,bstrCommand,vntParam,pVal)	\
    ( (This)->lpVtbl -> Execute(This,bstrCommand,vntParam,pVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoExtension_INTERFACE_DEFINED__ */


#ifndef __ICaoFiles_INTERFACE_DEFINED__
#define __ICaoFiles_INTERFACE_DEFINED__

/* interface ICaoFiles */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoFiles;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("9f1e5eaf-4c53-4718-9d79-efc3f8758d02")
    ICaoFiles : public IDispatch
    {
    public:
        virtual /* [restricted][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( 
            /* [retval][out] */ LPUNKNOWN *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoFile **ppICaoFile) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Count( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoFile **ppICaoFile) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Remove( 
            /* [in] */ VARIANT Index) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clear( void) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsMember( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoFilesVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoFiles * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoFiles * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoFiles * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoFiles * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoFiles * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoFiles * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoFiles * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [restricted][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            ICaoFiles * This,
            /* [retval][out] */ LPUNKNOWN *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( 
            ICaoFiles * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoFile **ppICaoFile);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            ICaoFiles * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( 
            ICaoFiles * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoFile **ppICaoFile);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( 
            ICaoFiles * This,
            /* [in] */ VARIANT Index);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clear )( 
            ICaoFiles * This);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsMember )( 
            ICaoFiles * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal);
        
        END_INTERFACE
    } ICaoFilesVtbl;

    interface ICaoFiles
    {
        CONST_VTBL struct ICaoFilesVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoFiles_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoFiles_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoFiles_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoFiles_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoFiles_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoFiles_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoFiles_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoFiles_get__NewEnum(This,pVal)	\
    ( (This)->lpVtbl -> get__NewEnum(This,pVal) ) 

#define ICaoFiles_Item(This,Index,ppICaoFile)	\
    ( (This)->lpVtbl -> Item(This,Index,ppICaoFile) ) 

#define ICaoFiles_get_Count(This,pVal)	\
    ( (This)->lpVtbl -> get_Count(This,pVal) ) 

#define ICaoFiles_Add(This,bstrName,bstrOption,ppICaoFile)	\
    ( (This)->lpVtbl -> Add(This,bstrName,bstrOption,ppICaoFile) ) 

#define ICaoFiles_Remove(This,Index)	\
    ( (This)->lpVtbl -> Remove(This,Index) ) 

#define ICaoFiles_Clear(This)	\
    ( (This)->lpVtbl -> Clear(This) ) 

#define ICaoFiles_IsMember(This,Index,pVal)	\
    ( (This)->lpVtbl -> IsMember(This,Index,pVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoFiles_INTERFACE_DEFINED__ */


#ifndef __ICaoFile_INTERFACE_DEFINED__
#define __ICaoFile_INTERFACE_DEFINED__

/* interface ICaoFile */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoFile;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("9a4617d6-3e02-499d-a1b9-3d33bca0569f")
    ICaoFile : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Value( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Value( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [restricted][helpstring][id] */ HRESULT STDMETHODCALLTYPE _PutIndex( 
            /* [in] */ long newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Attribute( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_DateCreated( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_DateLastAccessed( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_DateLastModified( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_FileNames( 
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Files( 
            /* [retval][out] */ ICaoFiles **ppICaoFiles) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Help( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Index( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Name( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Path( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Size( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Tag( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Tag( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Type( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_VariableNames( 
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Variables( 
            /* [retval][out] */ ICaoVariables **ppICaoVariables) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ID( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ID( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddFile( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoFile **ppICaoFile) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddVariable( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoVariable **ppICaoVar) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Copy( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Delete( 
            /* [optional][in] */ BSTR bstrOption) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Execute( 
            /* [in] */ BSTR bstrCommand,
            /* [optional][in] */ VARIANT vntParam,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Move( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Run( 
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ BSTR *bstrName) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoFileVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoFile * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoFile * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoFile * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoFile * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoFile * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoFile * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoFile * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Value )( 
            ICaoFile * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Value )( 
            ICaoFile * This,
            /* [in] */ VARIANT newVal);
        
        /* [restricted][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *_PutIndex )( 
            ICaoFile * This,
            /* [in] */ long newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Attribute )( 
            ICaoFile * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DateCreated )( 
            ICaoFile * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DateLastAccessed )( 
            ICaoFile * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DateLastModified )( 
            ICaoFile * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FileNames )( 
            ICaoFile * This,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Files )( 
            ICaoFile * This,
            /* [retval][out] */ ICaoFiles **ppICaoFiles);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Help )( 
            ICaoFile * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Index )( 
            ICaoFile * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Name )( 
            ICaoFile * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Path )( 
            ICaoFile * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Size )( 
            ICaoFile * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Tag )( 
            ICaoFile * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Tag )( 
            ICaoFile * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( 
            ICaoFile * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_VariableNames )( 
            ICaoFile * This,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Variables )( 
            ICaoFile * This,
            /* [retval][out] */ ICaoVariables **ppICaoVariables);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ID )( 
            ICaoFile * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ID )( 
            ICaoFile * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddFile )( 
            ICaoFile * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoFile **ppICaoFile);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddVariable )( 
            ICaoFile * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoVariable **ppICaoVar);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Copy )( 
            ICaoFile * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Delete )( 
            ICaoFile * This,
            /* [optional][in] */ BSTR bstrOption);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Execute )( 
            ICaoFile * This,
            /* [in] */ BSTR bstrCommand,
            /* [optional][in] */ VARIANT vntParam,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Move )( 
            ICaoFile * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Run )( 
            ICaoFile * This,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ BSTR *bstrName);
        
        END_INTERFACE
    } ICaoFileVtbl;

    interface ICaoFile
    {
        CONST_VTBL struct ICaoFileVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoFile_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoFile_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoFile_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoFile_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoFile_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoFile_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoFile_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoFile_get_Value(This,pVal)	\
    ( (This)->lpVtbl -> get_Value(This,pVal) ) 

#define ICaoFile_put_Value(This,newVal)	\
    ( (This)->lpVtbl -> put_Value(This,newVal) ) 

#define ICaoFile__PutIndex(This,newVal)	\
    ( (This)->lpVtbl -> _PutIndex(This,newVal) ) 

#define ICaoFile_get_Attribute(This,pVal)	\
    ( (This)->lpVtbl -> get_Attribute(This,pVal) ) 

#define ICaoFile_get_DateCreated(This,pVal)	\
    ( (This)->lpVtbl -> get_DateCreated(This,pVal) ) 

#define ICaoFile_get_DateLastAccessed(This,pVal)	\
    ( (This)->lpVtbl -> get_DateLastAccessed(This,pVal) ) 

#define ICaoFile_get_DateLastModified(This,pVal)	\
    ( (This)->lpVtbl -> get_DateLastModified(This,pVal) ) 

#define ICaoFile_get_FileNames(This,bstrOption,pVal)	\
    ( (This)->lpVtbl -> get_FileNames(This,bstrOption,pVal) ) 

#define ICaoFile_get_Files(This,ppICaoFiles)	\
    ( (This)->lpVtbl -> get_Files(This,ppICaoFiles) ) 

#define ICaoFile_get_Help(This,pVal)	\
    ( (This)->lpVtbl -> get_Help(This,pVal) ) 

#define ICaoFile_get_Index(This,pVal)	\
    ( (This)->lpVtbl -> get_Index(This,pVal) ) 

#define ICaoFile_get_Name(This,pVal)	\
    ( (This)->lpVtbl -> get_Name(This,pVal) ) 

#define ICaoFile_get_Path(This,pVal)	\
    ( (This)->lpVtbl -> get_Path(This,pVal) ) 

#define ICaoFile_get_Size(This,pVal)	\
    ( (This)->lpVtbl -> get_Size(This,pVal) ) 

#define ICaoFile_get_Tag(This,pVal)	\
    ( (This)->lpVtbl -> get_Tag(This,pVal) ) 

#define ICaoFile_put_Tag(This,newVal)	\
    ( (This)->lpVtbl -> put_Tag(This,newVal) ) 

#define ICaoFile_get_Type(This,pVal)	\
    ( (This)->lpVtbl -> get_Type(This,pVal) ) 

#define ICaoFile_get_VariableNames(This,bstrOption,pVal)	\
    ( (This)->lpVtbl -> get_VariableNames(This,bstrOption,pVal) ) 

#define ICaoFile_get_Variables(This,ppICaoVariables)	\
    ( (This)->lpVtbl -> get_Variables(This,ppICaoVariables) ) 

#define ICaoFile_get_ID(This,pVal)	\
    ( (This)->lpVtbl -> get_ID(This,pVal) ) 

#define ICaoFile_put_ID(This,newVal)	\
    ( (This)->lpVtbl -> put_ID(This,newVal) ) 

#define ICaoFile_AddFile(This,bstrName,bstrOption,ppICaoFile)	\
    ( (This)->lpVtbl -> AddFile(This,bstrName,bstrOption,ppICaoFile) ) 

#define ICaoFile_AddVariable(This,bstrName,bstrOption,ppICaoVar)	\
    ( (This)->lpVtbl -> AddVariable(This,bstrName,bstrOption,ppICaoVar) ) 

#define ICaoFile_Copy(This,bstrName,bstrOption)	\
    ( (This)->lpVtbl -> Copy(This,bstrName,bstrOption) ) 

#define ICaoFile_Delete(This,bstrOption)	\
    ( (This)->lpVtbl -> Delete(This,bstrOption) ) 

#define ICaoFile_Execute(This,bstrCommand,vntParam,pVal)	\
    ( (This)->lpVtbl -> Execute(This,bstrCommand,vntParam,pVal) ) 

#define ICaoFile_Move(This,bstrName,bstrOption)	\
    ( (This)->lpVtbl -> Move(This,bstrName,bstrOption) ) 

#define ICaoFile_Run(This,bstrOption,bstrName)	\
    ( (This)->lpVtbl -> Run(This,bstrOption,bstrName) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoFile_INTERFACE_DEFINED__ */


#ifndef __ICaoRobots_INTERFACE_DEFINED__
#define __ICaoRobots_INTERFACE_DEFINED__

/* interface ICaoRobots */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoRobots;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("76cddba4-09e9-4292-95ef-1a5a85dcbea9")
    ICaoRobots : public IDispatch
    {
    public:
        virtual /* [restricted][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( 
            /* [retval][out] */ LPUNKNOWN *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoRobot **ppICaoRobot) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Count( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoRobot **ppICaoRobot) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Remove( 
            /* [in] */ VARIANT Index) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clear( void) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsMember( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoRobotsVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoRobots * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoRobots * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoRobots * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoRobots * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoRobots * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoRobots * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoRobots * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [restricted][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            ICaoRobots * This,
            /* [retval][out] */ LPUNKNOWN *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( 
            ICaoRobots * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoRobot **ppICaoRobot);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            ICaoRobots * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( 
            ICaoRobots * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoRobot **ppICaoRobot);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( 
            ICaoRobots * This,
            /* [in] */ VARIANT Index);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clear )( 
            ICaoRobots * This);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsMember )( 
            ICaoRobots * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal);
        
        END_INTERFACE
    } ICaoRobotsVtbl;

    interface ICaoRobots
    {
        CONST_VTBL struct ICaoRobotsVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoRobots_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoRobots_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoRobots_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoRobots_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoRobots_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoRobots_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoRobots_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoRobots_get__NewEnum(This,pVal)	\
    ( (This)->lpVtbl -> get__NewEnum(This,pVal) ) 

#define ICaoRobots_Item(This,Index,ppICaoRobot)	\
    ( (This)->lpVtbl -> Item(This,Index,ppICaoRobot) ) 

#define ICaoRobots_get_Count(This,pVal)	\
    ( (This)->lpVtbl -> get_Count(This,pVal) ) 

#define ICaoRobots_Add(This,bstrName,bstrOption,ppICaoRobot)	\
    ( (This)->lpVtbl -> Add(This,bstrName,bstrOption,ppICaoRobot) ) 

#define ICaoRobots_Remove(This,Index)	\
    ( (This)->lpVtbl -> Remove(This,Index) ) 

#define ICaoRobots_Clear(This)	\
    ( (This)->lpVtbl -> Clear(This) ) 

#define ICaoRobots_IsMember(This,Index,pVal)	\
    ( (This)->lpVtbl -> IsMember(This,Index,pVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoRobots_INTERFACE_DEFINED__ */


#ifndef __ICaoRobot_INTERFACE_DEFINED__
#define __ICaoRobot_INTERFACE_DEFINED__

/* interface ICaoRobot */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoRobot;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("02105032-6ae1-4251-a72f-9aadc04f6659")
    ICaoRobot : public IDispatch
    {
    public:
        virtual /* [restricted][helpstring][id] */ HRESULT STDMETHODCALLTYPE _PutIndex( 
            /* [in] */ long newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Attribute( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Help( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Index( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Name( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Tag( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Tag( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_VariableNames( 
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Variables( 
            /* [retval][out] */ ICaoVariables **ppICaoVariables) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ID( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ID( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Accelerate( 
            /* [in] */ long lAxis,
            /* [in] */ float fAccel,
            /* [defaultvalue][in] */ float fDecel = 0) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddVariable( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoVariable **ppICaoVar) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Change( 
            /* [in] */ BSTR bstrName) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Chuck( 
            /* [optional][in] */ BSTR bstrOption) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Drive( 
            /* [in] */ long lNo,
            /* [in] */ float fMov,
            /* [optional][in] */ BSTR bstrOpt) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Execute( 
            /* [in] */ BSTR bstrCommand,
            /* [optional][in] */ VARIANT vntParam,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GoHome( void) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Halt( 
            /* [optional][in] */ BSTR bstrOption) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Hold( 
            /* [optional][in] */ BSTR bstrOption) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Move( 
            /* [in] */ long lComp,
            /* [in] */ VARIANT vntPose,
            /* [optional][in] */ BSTR bstrOpt) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Rotate( 
            /* [in] */ VARIANT vntRotSuf,
            /* [in] */ float fDeg,
            /* [in] */ VARIANT vntPivot,
            /* [optional][in] */ BSTR bstrOpt) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Speed( 
            /* [in] */ long lAxis,
            /* [in] */ float fSpeed) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Unchuck( 
            /* [optional][in] */ BSTR bstrOption) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Unhold( 
            /* [optional][in] */ BSTR bstrOption) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoRobotVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoRobot * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoRobot * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoRobot * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoRobot * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoRobot * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoRobot * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoRobot * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [restricted][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *_PutIndex )( 
            ICaoRobot * This,
            /* [in] */ long newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Attribute )( 
            ICaoRobot * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Help )( 
            ICaoRobot * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Index )( 
            ICaoRobot * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Name )( 
            ICaoRobot * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Tag )( 
            ICaoRobot * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Tag )( 
            ICaoRobot * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_VariableNames )( 
            ICaoRobot * This,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Variables )( 
            ICaoRobot * This,
            /* [retval][out] */ ICaoVariables **ppICaoVariables);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ID )( 
            ICaoRobot * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ID )( 
            ICaoRobot * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Accelerate )( 
            ICaoRobot * This,
            /* [in] */ long lAxis,
            /* [in] */ float fAccel,
            /* [defaultvalue][in] */ float fDecel);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddVariable )( 
            ICaoRobot * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoVariable **ppICaoVar);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Change )( 
            ICaoRobot * This,
            /* [in] */ BSTR bstrName);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Chuck )( 
            ICaoRobot * This,
            /* [optional][in] */ BSTR bstrOption);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Drive )( 
            ICaoRobot * This,
            /* [in] */ long lNo,
            /* [in] */ float fMov,
            /* [optional][in] */ BSTR bstrOpt);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Execute )( 
            ICaoRobot * This,
            /* [in] */ BSTR bstrCommand,
            /* [optional][in] */ VARIANT vntParam,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GoHome )( 
            ICaoRobot * This);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Halt )( 
            ICaoRobot * This,
            /* [optional][in] */ BSTR bstrOption);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Hold )( 
            ICaoRobot * This,
            /* [optional][in] */ BSTR bstrOption);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Move )( 
            ICaoRobot * This,
            /* [in] */ long lComp,
            /* [in] */ VARIANT vntPose,
            /* [optional][in] */ BSTR bstrOpt);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Rotate )( 
            ICaoRobot * This,
            /* [in] */ VARIANT vntRotSuf,
            /* [in] */ float fDeg,
            /* [in] */ VARIANT vntPivot,
            /* [optional][in] */ BSTR bstrOpt);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Speed )( 
            ICaoRobot * This,
            /* [in] */ long lAxis,
            /* [in] */ float fSpeed);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Unchuck )( 
            ICaoRobot * This,
            /* [optional][in] */ BSTR bstrOption);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Unhold )( 
            ICaoRobot * This,
            /* [optional][in] */ BSTR bstrOption);
        
        END_INTERFACE
    } ICaoRobotVtbl;

    interface ICaoRobot
    {
        CONST_VTBL struct ICaoRobotVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoRobot_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoRobot_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoRobot_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoRobot_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoRobot_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoRobot_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoRobot_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoRobot__PutIndex(This,newVal)	\
    ( (This)->lpVtbl -> _PutIndex(This,newVal) ) 

#define ICaoRobot_get_Attribute(This,pVal)	\
    ( (This)->lpVtbl -> get_Attribute(This,pVal) ) 

#define ICaoRobot_get_Help(This,pVal)	\
    ( (This)->lpVtbl -> get_Help(This,pVal) ) 

#define ICaoRobot_get_Index(This,pVal)	\
    ( (This)->lpVtbl -> get_Index(This,pVal) ) 

#define ICaoRobot_get_Name(This,pVal)	\
    ( (This)->lpVtbl -> get_Name(This,pVal) ) 

#define ICaoRobot_get_Tag(This,pVal)	\
    ( (This)->lpVtbl -> get_Tag(This,pVal) ) 

#define ICaoRobot_put_Tag(This,newVal)	\
    ( (This)->lpVtbl -> put_Tag(This,newVal) ) 

#define ICaoRobot_get_VariableNames(This,bstrOption,pVal)	\
    ( (This)->lpVtbl -> get_VariableNames(This,bstrOption,pVal) ) 

#define ICaoRobot_get_Variables(This,ppICaoVariables)	\
    ( (This)->lpVtbl -> get_Variables(This,ppICaoVariables) ) 

#define ICaoRobot_get_ID(This,pVal)	\
    ( (This)->lpVtbl -> get_ID(This,pVal) ) 

#define ICaoRobot_put_ID(This,newVal)	\
    ( (This)->lpVtbl -> put_ID(This,newVal) ) 

#define ICaoRobot_Accelerate(This,lAxis,fAccel,fDecel)	\
    ( (This)->lpVtbl -> Accelerate(This,lAxis,fAccel,fDecel) ) 

#define ICaoRobot_AddVariable(This,bstrName,bstrOption,ppICaoVar)	\
    ( (This)->lpVtbl -> AddVariable(This,bstrName,bstrOption,ppICaoVar) ) 

#define ICaoRobot_Change(This,bstrName)	\
    ( (This)->lpVtbl -> Change(This,bstrName) ) 

#define ICaoRobot_Chuck(This,bstrOption)	\
    ( (This)->lpVtbl -> Chuck(This,bstrOption) ) 

#define ICaoRobot_Drive(This,lNo,fMov,bstrOpt)	\
    ( (This)->lpVtbl -> Drive(This,lNo,fMov,bstrOpt) ) 

#define ICaoRobot_Execute(This,bstrCommand,vntParam,pVal)	\
    ( (This)->lpVtbl -> Execute(This,bstrCommand,vntParam,pVal) ) 

#define ICaoRobot_GoHome(This)	\
    ( (This)->lpVtbl -> GoHome(This) ) 

#define ICaoRobot_Halt(This,bstrOption)	\
    ( (This)->lpVtbl -> Halt(This,bstrOption) ) 

#define ICaoRobot_Hold(This,bstrOption)	\
    ( (This)->lpVtbl -> Hold(This,bstrOption) ) 

#define ICaoRobot_Move(This,lComp,vntPose,bstrOpt)	\
    ( (This)->lpVtbl -> Move(This,lComp,vntPose,bstrOpt) ) 

#define ICaoRobot_Rotate(This,vntRotSuf,fDeg,vntPivot,bstrOpt)	\
    ( (This)->lpVtbl -> Rotate(This,vntRotSuf,fDeg,vntPivot,bstrOpt) ) 

#define ICaoRobot_Speed(This,lAxis,fSpeed)	\
    ( (This)->lpVtbl -> Speed(This,lAxis,fSpeed) ) 

#define ICaoRobot_Unchuck(This,bstrOption)	\
    ( (This)->lpVtbl -> Unchuck(This,bstrOption) ) 

#define ICaoRobot_Unhold(This,bstrOption)	\
    ( (This)->lpVtbl -> Unhold(This,bstrOption) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoRobot_INTERFACE_DEFINED__ */


#ifndef __ICaoTasks_INTERFACE_DEFINED__
#define __ICaoTasks_INTERFACE_DEFINED__

/* interface ICaoTasks */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoTasks;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("a2a35844-148b-4762-8b41-68015bbc26f7")
    ICaoTasks : public IDispatch
    {
    public:
        virtual /* [restricted][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( 
            /* [retval][out] */ LPUNKNOWN *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoTask **ppICaoTask) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Count( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoTask **ppICaoTask) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Remove( 
            /* [in] */ VARIANT Index) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clear( void) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsMember( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoTasksVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoTasks * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoTasks * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoTasks * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoTasks * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoTasks * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoTasks * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoTasks * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [restricted][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            ICaoTasks * This,
            /* [retval][out] */ LPUNKNOWN *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( 
            ICaoTasks * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoTask **ppICaoTask);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            ICaoTasks * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( 
            ICaoTasks * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoTask **ppICaoTask);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( 
            ICaoTasks * This,
            /* [in] */ VARIANT Index);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clear )( 
            ICaoTasks * This);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsMember )( 
            ICaoTasks * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal);
        
        END_INTERFACE
    } ICaoTasksVtbl;

    interface ICaoTasks
    {
        CONST_VTBL struct ICaoTasksVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoTasks_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoTasks_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoTasks_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoTasks_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoTasks_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoTasks_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoTasks_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoTasks_get__NewEnum(This,pVal)	\
    ( (This)->lpVtbl -> get__NewEnum(This,pVal) ) 

#define ICaoTasks_Item(This,Index,ppICaoTask)	\
    ( (This)->lpVtbl -> Item(This,Index,ppICaoTask) ) 

#define ICaoTasks_get_Count(This,pVal)	\
    ( (This)->lpVtbl -> get_Count(This,pVal) ) 

#define ICaoTasks_Add(This,bstrName,bstrOption,ppICaoTask)	\
    ( (This)->lpVtbl -> Add(This,bstrName,bstrOption,ppICaoTask) ) 

#define ICaoTasks_Remove(This,Index)	\
    ( (This)->lpVtbl -> Remove(This,Index) ) 

#define ICaoTasks_Clear(This)	\
    ( (This)->lpVtbl -> Clear(This) ) 

#define ICaoTasks_IsMember(This,Index,pVal)	\
    ( (This)->lpVtbl -> IsMember(This,Index,pVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoTasks_INTERFACE_DEFINED__ */


#ifndef __ICaoTask_INTERFACE_DEFINED__
#define __ICaoTask_INTERFACE_DEFINED__

/* interface ICaoTask */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoTask;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("cc23c152-1d58-4c70-bd1b-539fd0329ae2")
    ICaoTask : public IDispatch
    {
    public:
        virtual /* [restricted][helpstring][id] */ HRESULT STDMETHODCALLTYPE _PutIndex( 
            /* [in] */ long newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Attribute( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_FileName( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Help( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Index( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Name( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Tag( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Tag( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_VariableNames( 
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Variables( 
            /* [retval][out] */ ICaoVariables **ppICaoVariables) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ID( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ID( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddVariable( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoVariable **ppICaoVar) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Delete( 
            /* [optional][in] */ BSTR bstrOption) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Execute( 
            /* [in] */ BSTR bstrCommand,
            /* [optional][in] */ VARIANT vntParam,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Start( 
            /* [defaultvalue][in] */ long lMode,
            /* [optional][in] */ BSTR bstrOption) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Stop( 
            /* [defaultvalue][in] */ long lMode,
            /* [optional][in] */ BSTR bstrOption) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoTaskVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoTask * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoTask * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoTask * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoTask * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoTask * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoTask * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoTask * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [restricted][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *_PutIndex )( 
            ICaoTask * This,
            /* [in] */ long newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Attribute )( 
            ICaoTask * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_FileName )( 
            ICaoTask * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Help )( 
            ICaoTask * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Index )( 
            ICaoTask * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Name )( 
            ICaoTask * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Tag )( 
            ICaoTask * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Tag )( 
            ICaoTask * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_VariableNames )( 
            ICaoTask * This,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Variables )( 
            ICaoTask * This,
            /* [retval][out] */ ICaoVariables **ppICaoVariables);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ID )( 
            ICaoTask * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ID )( 
            ICaoTask * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddVariable )( 
            ICaoTask * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoVariable **ppICaoVar);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Delete )( 
            ICaoTask * This,
            /* [optional][in] */ BSTR bstrOption);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Execute )( 
            ICaoTask * This,
            /* [in] */ BSTR bstrCommand,
            /* [optional][in] */ VARIANT vntParam,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Start )( 
            ICaoTask * This,
            /* [defaultvalue][in] */ long lMode,
            /* [optional][in] */ BSTR bstrOption);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Stop )( 
            ICaoTask * This,
            /* [defaultvalue][in] */ long lMode,
            /* [optional][in] */ BSTR bstrOption);
        
        END_INTERFACE
    } ICaoTaskVtbl;

    interface ICaoTask
    {
        CONST_VTBL struct ICaoTaskVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoTask_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoTask_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoTask_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoTask_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoTask_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoTask_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoTask_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoTask__PutIndex(This,newVal)	\
    ( (This)->lpVtbl -> _PutIndex(This,newVal) ) 

#define ICaoTask_get_Attribute(This,pVal)	\
    ( (This)->lpVtbl -> get_Attribute(This,pVal) ) 

#define ICaoTask_get_FileName(This,pVal)	\
    ( (This)->lpVtbl -> get_FileName(This,pVal) ) 

#define ICaoTask_get_Help(This,pVal)	\
    ( (This)->lpVtbl -> get_Help(This,pVal) ) 

#define ICaoTask_get_Index(This,pVal)	\
    ( (This)->lpVtbl -> get_Index(This,pVal) ) 

#define ICaoTask_get_Name(This,pVal)	\
    ( (This)->lpVtbl -> get_Name(This,pVal) ) 

#define ICaoTask_get_Tag(This,pVal)	\
    ( (This)->lpVtbl -> get_Tag(This,pVal) ) 

#define ICaoTask_put_Tag(This,newVal)	\
    ( (This)->lpVtbl -> put_Tag(This,newVal) ) 

#define ICaoTask_get_VariableNames(This,bstrOption,pVal)	\
    ( (This)->lpVtbl -> get_VariableNames(This,bstrOption,pVal) ) 

#define ICaoTask_get_Variables(This,ppICaoVariables)	\
    ( (This)->lpVtbl -> get_Variables(This,ppICaoVariables) ) 

#define ICaoTask_get_ID(This,pVal)	\
    ( (This)->lpVtbl -> get_ID(This,pVal) ) 

#define ICaoTask_put_ID(This,newVal)	\
    ( (This)->lpVtbl -> put_ID(This,newVal) ) 

#define ICaoTask_AddVariable(This,bstrName,bstrOption,ppICaoVar)	\
    ( (This)->lpVtbl -> AddVariable(This,bstrName,bstrOption,ppICaoVar) ) 

#define ICaoTask_Delete(This,bstrOption)	\
    ( (This)->lpVtbl -> Delete(This,bstrOption) ) 

#define ICaoTask_Execute(This,bstrCommand,vntParam,pVal)	\
    ( (This)->lpVtbl -> Execute(This,bstrCommand,vntParam,pVal) ) 

#define ICaoTask_Start(This,lMode,bstrOption)	\
    ( (This)->lpVtbl -> Start(This,lMode,bstrOption) ) 

#define ICaoTask_Stop(This,lMode,bstrOption)	\
    ( (This)->lpVtbl -> Stop(This,lMode,bstrOption) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoTask_INTERFACE_DEFINED__ */


#ifndef __ICaoVariables_INTERFACE_DEFINED__
#define __ICaoVariables_INTERFACE_DEFINED__

/* interface ICaoVariables */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoVariables;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("8d392e7a-eb9e-46ef-86c6-8e7acd0eceab")
    ICaoVariables : public IDispatch
    {
    public:
        virtual /* [restricted][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( 
            /* [retval][out] */ LPUNKNOWN *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoVariable **ppICaoVar) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Count( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoVariable **ppICaoVar) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Remove( 
            /* [in] */ VARIANT Index) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clear( void) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsMember( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoVariablesVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoVariables * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoVariables * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoVariables * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoVariables * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoVariables * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoVariables * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoVariables * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [restricted][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            ICaoVariables * This,
            /* [retval][out] */ LPUNKNOWN *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( 
            ICaoVariables * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoVariable **ppICaoVar);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            ICaoVariables * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( 
            ICaoVariables * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoVariable **ppICaoVar);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( 
            ICaoVariables * This,
            /* [in] */ VARIANT Index);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clear )( 
            ICaoVariables * This);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsMember )( 
            ICaoVariables * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal);
        
        END_INTERFACE
    } ICaoVariablesVtbl;

    interface ICaoVariables
    {
        CONST_VTBL struct ICaoVariablesVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoVariables_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoVariables_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoVariables_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoVariables_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoVariables_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoVariables_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoVariables_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoVariables_get__NewEnum(This,pVal)	\
    ( (This)->lpVtbl -> get__NewEnum(This,pVal) ) 

#define ICaoVariables_Item(This,Index,ppICaoVar)	\
    ( (This)->lpVtbl -> Item(This,Index,ppICaoVar) ) 

#define ICaoVariables_get_Count(This,pVal)	\
    ( (This)->lpVtbl -> get_Count(This,pVal) ) 

#define ICaoVariables_Add(This,bstrName,bstrOption,ppICaoVar)	\
    ( (This)->lpVtbl -> Add(This,bstrName,bstrOption,ppICaoVar) ) 

#define ICaoVariables_Remove(This,Index)	\
    ( (This)->lpVtbl -> Remove(This,Index) ) 

#define ICaoVariables_Clear(This)	\
    ( (This)->lpVtbl -> Clear(This) ) 

#define ICaoVariables_IsMember(This,Index,pVal)	\
    ( (This)->lpVtbl -> IsMember(This,Index,pVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoVariables_INTERFACE_DEFINED__ */


#ifndef __ICaoVariable_INTERFACE_DEFINED__
#define __ICaoVariable_INTERFACE_DEFINED__

/* interface ICaoVariable */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoVariable;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("3dc12940-6c7b-43e4-b375-136c3e6e7e3a")
    ICaoVariable : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Value( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Value( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [restricted][helpstring][id] */ HRESULT STDMETHODCALLTYPE _PutIndex( 
            /* [in] */ long newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Attribute( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_DateTime( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Help( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Index( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Name( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Tag( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Tag( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ID( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ID( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Microsecond( 
            /* [retval][out] */ long *pVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoVariableVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoVariable * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoVariable * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoVariable * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoVariable * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoVariable * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoVariable * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoVariable * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Value )( 
            ICaoVariable * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Value )( 
            ICaoVariable * This,
            /* [in] */ VARIANT newVal);
        
        /* [restricted][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *_PutIndex )( 
            ICaoVariable * This,
            /* [in] */ long newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Attribute )( 
            ICaoVariable * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DateTime )( 
            ICaoVariable * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Help )( 
            ICaoVariable * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Index )( 
            ICaoVariable * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Name )( 
            ICaoVariable * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Tag )( 
            ICaoVariable * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Tag )( 
            ICaoVariable * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ID )( 
            ICaoVariable * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ID )( 
            ICaoVariable * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Microsecond )( 
            ICaoVariable * This,
            /* [retval][out] */ long *pVal);
        
        END_INTERFACE
    } ICaoVariableVtbl;

    interface ICaoVariable
    {
        CONST_VTBL struct ICaoVariableVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoVariable_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoVariable_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoVariable_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoVariable_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoVariable_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoVariable_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoVariable_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoVariable_get_Value(This,pVal)	\
    ( (This)->lpVtbl -> get_Value(This,pVal) ) 

#define ICaoVariable_put_Value(This,newVal)	\
    ( (This)->lpVtbl -> put_Value(This,newVal) ) 

#define ICaoVariable__PutIndex(This,newVal)	\
    ( (This)->lpVtbl -> _PutIndex(This,newVal) ) 

#define ICaoVariable_get_Attribute(This,pVal)	\
    ( (This)->lpVtbl -> get_Attribute(This,pVal) ) 

#define ICaoVariable_get_DateTime(This,pVal)	\
    ( (This)->lpVtbl -> get_DateTime(This,pVal) ) 

#define ICaoVariable_get_Help(This,pVal)	\
    ( (This)->lpVtbl -> get_Help(This,pVal) ) 

#define ICaoVariable_get_Index(This,pVal)	\
    ( (This)->lpVtbl -> get_Index(This,pVal) ) 

#define ICaoVariable_get_Name(This,pVal)	\
    ( (This)->lpVtbl -> get_Name(This,pVal) ) 

#define ICaoVariable_get_Tag(This,pVal)	\
    ( (This)->lpVtbl -> get_Tag(This,pVal) ) 

#define ICaoVariable_put_Tag(This,newVal)	\
    ( (This)->lpVtbl -> put_Tag(This,newVal) ) 

#define ICaoVariable_get_ID(This,pVal)	\
    ( (This)->lpVtbl -> get_ID(This,pVal) ) 

#define ICaoVariable_put_ID(This,newVal)	\
    ( (This)->lpVtbl -> put_ID(This,newVal) ) 

#define ICaoVariable_get_Microsecond(This,pVal)	\
    ( (This)->lpVtbl -> get_Microsecond(This,pVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoVariable_INTERFACE_DEFINED__ */


#ifndef __ICaoCommands_INTERFACE_DEFINED__
#define __ICaoCommands_INTERFACE_DEFINED__

/* interface ICaoCommands */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoCommands;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("480CA4D6-ADCB-4cb4-812B-7E41BE891E03")
    ICaoCommands : public IDispatch
    {
    public:
        virtual /* [restricted][helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get__NewEnum( 
            /* [retval][out] */ LPUNKNOWN *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoCommand **ppICaoCommand) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Count( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( 
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoCommand **ppICaoCommand) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Remove( 
            /* [in] */ VARIANT Index) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clear( void) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsMember( 
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoCommandsVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoCommands * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoCommands * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoCommands * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoCommands * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoCommands * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoCommands * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoCommands * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [restricted][helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( 
            ICaoCommands * This,
            /* [retval][out] */ LPUNKNOWN *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( 
            ICaoCommands * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ ICaoCommand **ppICaoCommand);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( 
            ICaoCommands * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( 
            ICaoCommands * This,
            /* [in] */ BSTR bstrName,
            /* [optional][in] */ BSTR bstrOption,
            /* [retval][out] */ ICaoCommand **ppICaoCommand);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )( 
            ICaoCommands * This,
            /* [in] */ VARIANT Index);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clear )( 
            ICaoCommands * This);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsMember )( 
            ICaoCommands * This,
            /* [in] */ VARIANT Index,
            /* [retval][out] */ VARIANT_BOOL *pVal);
        
        END_INTERFACE
    } ICaoCommandsVtbl;

    interface ICaoCommands
    {
        CONST_VTBL struct ICaoCommandsVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoCommands_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoCommands_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoCommands_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoCommands_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoCommands_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoCommands_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoCommands_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoCommands_get__NewEnum(This,pVal)	\
    ( (This)->lpVtbl -> get__NewEnum(This,pVal) ) 

#define ICaoCommands_Item(This,Index,ppICaoCommand)	\
    ( (This)->lpVtbl -> Item(This,Index,ppICaoCommand) ) 

#define ICaoCommands_get_Count(This,pVal)	\
    ( (This)->lpVtbl -> get_Count(This,pVal) ) 

#define ICaoCommands_Add(This,bstrName,bstrOption,ppICaoCommand)	\
    ( (This)->lpVtbl -> Add(This,bstrName,bstrOption,ppICaoCommand) ) 

#define ICaoCommands_Remove(This,Index)	\
    ( (This)->lpVtbl -> Remove(This,Index) ) 

#define ICaoCommands_Clear(This)	\
    ( (This)->lpVtbl -> Clear(This) ) 

#define ICaoCommands_IsMember(This,Index,pVal)	\
    ( (This)->lpVtbl -> IsMember(This,Index,pVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoCommands_INTERFACE_DEFINED__ */


#ifndef __ICaoCommand_INTERFACE_DEFINED__
#define __ICaoCommand_INTERFACE_DEFINED__

/* interface ICaoCommand */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoCommand;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("3DA3B42D-EA6A-468b-A57F-C375DEFD11E9")
    ICaoCommand : public IDispatch
    {
    public:
        virtual /* [restricted][helpstring][id] */ HRESULT STDMETHODCALLTYPE _PutIndex( 
            /* [in] */ long newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Attribute( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Help( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Index( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Name( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Parameters( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Parameters( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Result( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_State( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Tag( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Tag( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Timeout( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Timeout( 
            /* [in] */ long newVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ID( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_ID( 
            /* [in] */ VARIANT newVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Cancel( void) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Execute( 
            /* [defaultvalue][in] */ long lMode = 0) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoCommandVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoCommand * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoCommand * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoCommand * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoCommand * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoCommand * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoCommand * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoCommand * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [restricted][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *_PutIndex )( 
            ICaoCommand * This,
            /* [in] */ long newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Attribute )( 
            ICaoCommand * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Help )( 
            ICaoCommand * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Index )( 
            ICaoCommand * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Name )( 
            ICaoCommand * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Parameters )( 
            ICaoCommand * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Parameters )( 
            ICaoCommand * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Result )( 
            ICaoCommand * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_State )( 
            ICaoCommand * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Tag )( 
            ICaoCommand * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Tag )( 
            ICaoCommand * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Timeout )( 
            ICaoCommand * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Timeout )( 
            ICaoCommand * This,
            /* [in] */ long newVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ID )( 
            ICaoCommand * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_ID )( 
            ICaoCommand * This,
            /* [in] */ VARIANT newVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Cancel )( 
            ICaoCommand * This);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Execute )( 
            ICaoCommand * This,
            /* [defaultvalue][in] */ long lMode);
        
        END_INTERFACE
    } ICaoCommandVtbl;

    interface ICaoCommand
    {
        CONST_VTBL struct ICaoCommandVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoCommand_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoCommand_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoCommand_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoCommand_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoCommand_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoCommand_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoCommand_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoCommand__PutIndex(This,newVal)	\
    ( (This)->lpVtbl -> _PutIndex(This,newVal) ) 

#define ICaoCommand_get_Attribute(This,pVal)	\
    ( (This)->lpVtbl -> get_Attribute(This,pVal) ) 

#define ICaoCommand_get_Help(This,pVal)	\
    ( (This)->lpVtbl -> get_Help(This,pVal) ) 

#define ICaoCommand_get_Index(This,pVal)	\
    ( (This)->lpVtbl -> get_Index(This,pVal) ) 

#define ICaoCommand_get_Name(This,pVal)	\
    ( (This)->lpVtbl -> get_Name(This,pVal) ) 

#define ICaoCommand_get_Parameters(This,pVal)	\
    ( (This)->lpVtbl -> get_Parameters(This,pVal) ) 

#define ICaoCommand_put_Parameters(This,newVal)	\
    ( (This)->lpVtbl -> put_Parameters(This,newVal) ) 

#define ICaoCommand_get_Result(This,pVal)	\
    ( (This)->lpVtbl -> get_Result(This,pVal) ) 

#define ICaoCommand_get_State(This,pVal)	\
    ( (This)->lpVtbl -> get_State(This,pVal) ) 

#define ICaoCommand_get_Tag(This,pVal)	\
    ( (This)->lpVtbl -> get_Tag(This,pVal) ) 

#define ICaoCommand_put_Tag(This,newVal)	\
    ( (This)->lpVtbl -> put_Tag(This,newVal) ) 

#define ICaoCommand_get_Timeout(This,pVal)	\
    ( (This)->lpVtbl -> get_Timeout(This,pVal) ) 

#define ICaoCommand_put_Timeout(This,newVal)	\
    ( (This)->lpVtbl -> put_Timeout(This,newVal) ) 

#define ICaoCommand_get_ID(This,pVal)	\
    ( (This)->lpVtbl -> get_ID(This,pVal) ) 

#define ICaoCommand_put_ID(This,newVal)	\
    ( (This)->lpVtbl -> put_ID(This,newVal) ) 

#define ICaoCommand_Cancel(This)	\
    ( (This)->lpVtbl -> Cancel(This) ) 

#define ICaoCommand_Execute(This,lMode)	\
    ( (This)->lpVtbl -> Execute(This,lMode) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoCommand_INTERFACE_DEFINED__ */


#ifndef __ICaoMessage_INTERFACE_DEFINED__
#define __ICaoMessage_INTERFACE_DEFINED__

/* interface ICaoMessage */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoMessage;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("964497c9-a444-48e3-ad6c-78b1fa5be46f")
    ICaoMessage : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_DateTime( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Description( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Destination( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Number( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_SerialNumber( 
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Source( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Value( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clear( void) = 0;
        
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Reply( 
            VARIANT vntData) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoMessageVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoMessage * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoMessage * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoMessage * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoMessage * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoMessage * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoMessage * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoMessage * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_DateTime )( 
            ICaoMessage * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( 
            ICaoMessage * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Destination )( 
            ICaoMessage * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Number )( 
            ICaoMessage * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SerialNumber )( 
            ICaoMessage * This,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Source )( 
            ICaoMessage * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Value )( 
            ICaoMessage * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clear )( 
            ICaoMessage * This);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Reply )( 
            ICaoMessage * This,
            VARIANT vntData);
        
        END_INTERFACE
    } ICaoMessageVtbl;

    interface ICaoMessage
    {
        CONST_VTBL struct ICaoMessageVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoMessage_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoMessage_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoMessage_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoMessage_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoMessage_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoMessage_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoMessage_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoMessage_get_DateTime(This,pVal)	\
    ( (This)->lpVtbl -> get_DateTime(This,pVal) ) 

#define ICaoMessage_get_Description(This,pVal)	\
    ( (This)->lpVtbl -> get_Description(This,pVal) ) 

#define ICaoMessage_get_Destination(This,pVal)	\
    ( (This)->lpVtbl -> get_Destination(This,pVal) ) 

#define ICaoMessage_get_Number(This,pVal)	\
    ( (This)->lpVtbl -> get_Number(This,pVal) ) 

#define ICaoMessage_get_SerialNumber(This,pVal)	\
    ( (This)->lpVtbl -> get_SerialNumber(This,pVal) ) 

#define ICaoMessage_get_Source(This,pVal)	\
    ( (This)->lpVtbl -> get_Source(This,pVal) ) 

#define ICaoMessage_get_Value(This,pVal)	\
    ( (This)->lpVtbl -> get_Value(This,pVal) ) 

#define ICaoMessage_Clear(This)	\
    ( (This)->lpVtbl -> Clear(This) ) 

#define ICaoMessage_Reply(This,vntData)	\
    ( (This)->lpVtbl -> Reply(This,vntData) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoMessage_INTERFACE_DEFINED__ */


#ifndef __ICaoEngineStatus_INTERFACE_DEFINED__
#define __ICaoEngineStatus_INTERFACE_DEFINED__

/* interface ICaoEngineStatus */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_ICaoEngineStatus;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("9b77d6e0-b941-4513-8a63-08c59c992991")
    ICaoEngineStatus : public IDispatch
    {
    public:
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_CurrentDateTime( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ComputerName( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_ObjectCounts( 
            /* [in] */ VARIANT vntName,
            /* [retval][out] */ long *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_StartDateTime( 
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Values( 
            /* [in] */ VARIANT vntName,
            /* [retval][out] */ VARIANT *pVal) = 0;
        
        virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Version( 
            /* [retval][out] */ BSTR *pVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICaoEngineStatusVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICaoEngineStatus * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICaoEngineStatus * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICaoEngineStatus * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            ICaoEngineStatus * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            ICaoEngineStatus * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            ICaoEngineStatus * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            ICaoEngineStatus * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CurrentDateTime )( 
            ICaoEngineStatus * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ComputerName )( 
            ICaoEngineStatus * This,
            /* [retval][out] */ BSTR *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ObjectCounts )( 
            ICaoEngineStatus * This,
            /* [in] */ VARIANT vntName,
            /* [retval][out] */ long *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StartDateTime )( 
            ICaoEngineStatus * This,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Values )( 
            ICaoEngineStatus * This,
            /* [in] */ VARIANT vntName,
            /* [retval][out] */ VARIANT *pVal);
        
        /* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( 
            ICaoEngineStatus * This,
            /* [retval][out] */ BSTR *pVal);
        
        END_INTERFACE
    } ICaoEngineStatusVtbl;

    interface ICaoEngineStatus
    {
        CONST_VTBL struct ICaoEngineStatusVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICaoEngineStatus_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICaoEngineStatus_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICaoEngineStatus_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICaoEngineStatus_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define ICaoEngineStatus_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define ICaoEngineStatus_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define ICaoEngineStatus_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define ICaoEngineStatus_get_CurrentDateTime(This,pVal)	\
    ( (This)->lpVtbl -> get_CurrentDateTime(This,pVal) ) 

#define ICaoEngineStatus_get_ComputerName(This,pVal)	\
    ( (This)->lpVtbl -> get_ComputerName(This,pVal) ) 

#define ICaoEngineStatus_get_ObjectCounts(This,vntName,pVal)	\
    ( (This)->lpVtbl -> get_ObjectCounts(This,vntName,pVal) ) 

#define ICaoEngineStatus_get_StartDateTime(This,pVal)	\
    ( (This)->lpVtbl -> get_StartDateTime(This,pVal) ) 

#define ICaoEngineStatus_get_Values(This,vntName,pVal)	\
    ( (This)->lpVtbl -> get_Values(This,vntName,pVal) ) 

#define ICaoEngineStatus_get_Version(This,pVal)	\
    ( (This)->lpVtbl -> get_Version(This,pVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICaoEngineStatus_INTERFACE_DEFINED__ */


#ifndef __IEventSink_INTERFACE_DEFINED__
#define __IEventSink_INTERFACE_DEFINED__

/* interface IEventSink */
/* [unique][helpstring][dual][uuid][object] */ 


EXTERN_C const IID IID_IEventSink;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("2b27bcbf-c3c2-45dd-ba66-8ac0fa898c1c")
    IEventSink : public IDispatch
    {
    public:
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnMessage( 
            /* [in] */ IUnknown *pVal,
            /* [defaultvalue][in] */ long lOption = 0) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IEventSinkVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IEventSink * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IEventSink * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IEventSink * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            IEventSink * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            IEventSink * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            IEventSink * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            IEventSink * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnMessage )( 
            IEventSink * This,
            /* [in] */ IUnknown *pVal,
            /* [defaultvalue][in] */ long lOption);
        
        END_INTERFACE
    } IEventSinkVtbl;

    interface IEventSink
    {
        CONST_VTBL struct IEventSinkVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IEventSink_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IEventSink_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IEventSink_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IEventSink_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define IEventSink_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define IEventSink_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define IEventSink_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 


#define IEventSink_OnMessage(This,pVal,lOption)	\
    ( (This)->lpVtbl -> OnMessage(This,pVal,lOption) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IEventSink_INTERFACE_DEFINED__ */



#ifndef __CAOLib_LIBRARY_DEFINED__
#define __CAOLib_LIBRARY_DEFINED__

/* library CAOLib */
/* [helpstring][version][uuid] */ 


EXTERN_C const IID LIBID_CAOLib;

#ifndef ___ICaoControllerEvents_DISPINTERFACE_DEFINED__
#define ___ICaoControllerEvents_DISPINTERFACE_DEFINED__

/* dispinterface _ICaoControllerEvents */
/* [helpstring][uuid] */ 


EXTERN_C const IID DIID__ICaoControllerEvents;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("a7b43ef1-0215-4940-a6f6-21744b8cba52")
    _ICaoControllerEvents : public IDispatch
    {
    };
    
#else 	/* C style interface */

    typedef struct _ICaoControllerEventsVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            _ICaoControllerEvents * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            _ICaoControllerEvents * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            _ICaoControllerEvents * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            _ICaoControllerEvents * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            _ICaoControllerEvents * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            _ICaoControllerEvents * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            _ICaoControllerEvents * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        END_INTERFACE
    } _ICaoControllerEventsVtbl;

    interface _ICaoControllerEvents
    {
        CONST_VTBL struct _ICaoControllerEventsVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define _ICaoControllerEvents_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define _ICaoControllerEvents_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define _ICaoControllerEvents_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define _ICaoControllerEvents_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define _ICaoControllerEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define _ICaoControllerEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define _ICaoControllerEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */


#endif 	/* ___ICaoControllerEvents_DISPINTERFACE_DEFINED__ */


#ifndef ___ICaoCommandsEvents_DISPINTERFACE_DEFINED__
#define ___ICaoCommandsEvents_DISPINTERFACE_DEFINED__

/* dispinterface _ICaoCommandsEvents */
/* [helpstring][uuid] */ 


EXTERN_C const IID DIID__ICaoCommandsEvents;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("DC17F478-F7B2-4ce7-819D-8EF34F70E351")
    _ICaoCommandsEvents : public IDispatch
    {
    };
    
#else 	/* C style interface */

    typedef struct _ICaoCommandsEventsVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            _ICaoCommandsEvents * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            _ICaoCommandsEvents * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            _ICaoCommandsEvents * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
            _ICaoCommandsEvents * This,
            /* [out] */ UINT *pctinfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
            _ICaoCommandsEvents * This,
            /* [in] */ UINT iTInfo,
            /* [in] */ LCID lcid,
            /* [out] */ ITypeInfo **ppTInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
            _ICaoCommandsEvents * This,
            /* [in] */ REFIID riid,
            /* [size_is][in] */ LPOLESTR *rgszNames,
            /* [range][in] */ UINT cNames,
            /* [in] */ LCID lcid,
            /* [size_is][out] */ DISPID *rgDispId);
        
        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            _ICaoCommandsEvents * This,
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);
        
        END_INTERFACE
    } _ICaoCommandsEventsVtbl;

    interface _ICaoCommandsEvents
    {
        CONST_VTBL struct _ICaoCommandsEventsVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define _ICaoCommandsEvents_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define _ICaoCommandsEvents_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define _ICaoCommandsEvents_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define _ICaoCommandsEvents_GetTypeInfoCount(This,pctinfo)	\
    ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) 

#define _ICaoCommandsEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
    ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) 

#define _ICaoCommandsEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
    ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) 

#define _ICaoCommandsEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
    ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */


#endif 	/* ___ICaoCommandsEvents_DISPINTERFACE_DEFINED__ */


EXTERN_C const CLSID CLSID_CaoEngine;

#ifdef __cplusplus

class DECLSPEC_UUID("60555f1b-e473-4250-bb43-933990fbeced")
CaoEngine;
#endif

EXTERN_C const CLSID CLSID_CaoWorkspaces;

#ifdef __cplusplus

class DECLSPEC_UUID("f7430785-4ec2-4193-8552-f5cb2d6be732")
CaoWorkspaces;
#endif

EXTERN_C const CLSID CLSID_CaoWorkspace;

#ifdef __cplusplus

class DECLSPEC_UUID("22fc99b8-9c3a-48c9-9f4d-8eee16ed365a")
CaoWorkspace;
#endif

EXTERN_C const CLSID CLSID_CaoControllers;

#ifdef __cplusplus

class DECLSPEC_UUID("41c404be-bfd1-40ce-8454-2f47e04a09b1")
CaoControllers;
#endif

EXTERN_C const CLSID CLSID_CaoController;

#ifdef __cplusplus

class DECLSPEC_UUID("d1baa44e-9ca9-4075-8ad1-481aa21434a8")
CaoController;
#endif

EXTERN_C const CLSID CLSID_CaoExtensions;

#ifdef __cplusplus

class DECLSPEC_UUID("0AF9CEC7-4F11-4EA4-8033-142CF4E45512")
CaoExtensions;
#endif

EXTERN_C const CLSID CLSID_CaoExtension;

#ifdef __cplusplus

class DECLSPEC_UUID("FE266A3E-9435-4F25-85E2-B4350A378B81")
CaoExtension;
#endif

EXTERN_C const CLSID CLSID_CaoFiles;

#ifdef __cplusplus

class DECLSPEC_UUID("2d662501-91ce-49e0-bafa-453a2d610b50")
CaoFiles;
#endif

EXTERN_C const CLSID CLSID_CaoFile;

#ifdef __cplusplus

class DECLSPEC_UUID("b7466915-2234-4382-b9e7-da74a34acaff")
CaoFile;
#endif

EXTERN_C const CLSID CLSID_CaoRobots;

#ifdef __cplusplus

class DECLSPEC_UUID("f6981128-7e0f-4159-86b0-7397eb1596a3")
CaoRobots;
#endif

EXTERN_C const CLSID CLSID_CaoRobot;

#ifdef __cplusplus

class DECLSPEC_UUID("c486acdd-451e-4fb5-a20b-3cc747f8cc2e")
CaoRobot;
#endif

EXTERN_C const CLSID CLSID_CaoTasks;

#ifdef __cplusplus

class DECLSPEC_UUID("eb5211bb-dd98-4e91-b84f-a619f636de30")
CaoTasks;
#endif

EXTERN_C const CLSID CLSID_CaoTask;

#ifdef __cplusplus

class DECLSPEC_UUID("1ab45162-d81d-475c-a73f-3f9bbc0f0768")
CaoTask;
#endif

EXTERN_C const CLSID CLSID_CaoVariables;

#ifdef __cplusplus

class DECLSPEC_UUID("5691304f-610a-4645-8d58-64138e059824")
CaoVariables;
#endif

EXTERN_C const CLSID CLSID_CaoVariable;

#ifdef __cplusplus

class DECLSPEC_UUID("2c9b6656-32d1-425c-ad61-536c5a07c773")
CaoVariable;
#endif

EXTERN_C const CLSID CLSID_CaoCommands;

#ifdef __cplusplus

class DECLSPEC_UUID("887FFEAF-3E41-4d54-A558-DE75E7E11B44")
CaoCommands;
#endif

EXTERN_C const CLSID CLSID_CaoCommand;

#ifdef __cplusplus

class DECLSPEC_UUID("9289DBE4-ADEC-4001-9CF0-C58C756B2E79")
CaoCommand;
#endif

EXTERN_C const CLSID CLSID_CaoMessage;

#ifdef __cplusplus

class DECLSPEC_UUID("4f2f3700-71c8-452a-81ac-5a8539b8a5c6")
CaoMessage;
#endif

EXTERN_C const CLSID CLSID_CaoEngineStatus;

#ifdef __cplusplus

class DECLSPEC_UUID("f5e9b29c-e1d6-4f78-ac18-a85ae49dbbb2")
CaoEngineStatus;
#endif

EXTERN_C const CLSID CLSID_EventSink;

#ifdef __cplusplus

class DECLSPEC_UUID("12654e13-f7bc-4f1a-831d-a7a93e733cb7")
EventSink;
#endif
#endif /* __CAOLib_LIBRARY_DEFINED__ */

/* Additional Prototypes for ALL interfaces */

unsigned long             __RPC_USER  BSTR_UserSize(     unsigned long *, unsigned long            , BSTR * ); 
unsigned char * __RPC_USER  BSTR_UserMarshal(  unsigned long *, unsigned char *, BSTR * ); 
unsigned char * __RPC_USER  BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); 
void                      __RPC_USER  BSTR_UserFree(     unsigned long *, BSTR * ); 

unsigned long             __RPC_USER  VARIANT_UserSize(     unsigned long *, unsigned long            , VARIANT * ); 
unsigned char * __RPC_USER  VARIANT_UserMarshal(  unsigned long *, unsigned char *, VARIANT * ); 
unsigned char * __RPC_USER  VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); 
void                      __RPC_USER  VARIANT_UserFree(     unsigned long *, VARIANT * ); 

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif


