VirtualBoxClientImpl.h revision c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync/* $Id$ */
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync/** @file
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync * Header file for the VirtualBoxClient (IVirtualBoxClient) class, VBoxC.
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync */
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync/*
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync * Copyright (C) 2010 Oracle Corporation
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync *
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync * available from http://www.virtualbox.org. This file is free software;
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync * you can redistribute it and/or modify it under the terms of the GNU
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync * General Public License (GPL) as published by the Free Software
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync */
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync#ifndef ____H_VIRTUALBOXCLIENTIMPL
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync#define ____H_VIRTUALBOXCLIENTIMPL
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync#include "VirtualBoxBase.h"
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync#include "EventImpl.h"
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsyncclass ATL_NO_VTABLE VirtualBoxClient :
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync public VirtualBoxBase,
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync VBOX_SCRIPTABLE_IMPL(IVirtualBoxClient)
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync#ifdef RT_OS_WINDOWS
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync , public CComCoClass<VirtualBoxClient, &CLSID_VirtualBoxClient>
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync#endif
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync{
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsyncpublic:
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(VirtualBoxClient, IVirtualBoxClient)
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync DECLARE_CLASSFACTORY_SINGLETON(VirtualBoxClient)
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync DECLARE_REGISTRY_RESOURCE(IDR_VIRTUALBOX)
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync DECLARE_NOT_AGGREGATABLE(VirtualBoxClient)
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync DECLARE_PROTECT_FINAL_CONSTRUCT()
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync BEGIN_COM_MAP(VirtualBoxClient)
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync COM_INTERFACE_ENTRY2(IDispatch, IVirtualBoxClient)
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync COM_INTERFACE_ENTRY(ISupportErrorInfo)
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync COM_INTERFACE_ENTRY(IVirtualBoxClient)
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync END_COM_MAP()
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync DECLARE_EMPTY_CTOR_DTOR(VirtualBoxClient)
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync HRESULT FinalConstruct();
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync void FinalRelease();
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync // public initializer/uninitializer for internal purposes only
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync HRESULT init();
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync void uninit();
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync // IUSBDevice properties
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync STDMETHOD(COMGETTER(VirtualBox))(IVirtualBox **aVirtualBox);
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync STDMETHOD(COMGETTER(Session))(ISession **aSession);
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync STDMETHOD(COMGETTER(EventSource))(IEventSource **aEventSource);
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsyncprivate:
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync static DECLCALLBACK(int) SVCWatcherThread(RTTHREAD ThreadSelf, void *pvUser);
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync struct Data
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync {
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync Data()
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync {}
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync const ComPtr<IVirtualBox> m_pVirtualBox;
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync const ComObjPtr<EventSource> m_pEventSource;
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync RTTHREAD m_ThreadWatcher;
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync RTSEMEVENT m_SemEvWatcher;
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync };
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync Data mData;
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync};
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync#endif // ____H_VIRTUALBOXCLIENTIMPL
c6e0905a5f2b95eaf3b7cc4dd054cce617b3f498vboxsync/* vi: set tabstop=4 shiftwidth=4 expandtab: */