HostImpl.h revision 538ed51248ec8dbb4de3197f160656c43e88a5f1
78a072e1b56619e3230735ae073668311232ec94vboxsync * VirtualBox COM class implementation
85668909c68b5d0e67c89d6042535b41c4bffeccvboxsync * Copyright (C) 2006 InnoTek Systemberatung GmbH
2f139cbf73f9adba01382892f33558ad7bcb40cbvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
2f139cbf73f9adba01382892f33558ad7bcb40cbvboxsync * available from http://www.virtualbox.org. This file is free software;
2f139cbf73f9adba01382892f33558ad7bcb40cbvboxsync * you can redistribute it and/or modify it under the terms of the GNU
2f139cbf73f9adba01382892f33558ad7bcb40cbvboxsync * General Public License as published by the Free Software Foundation,
2f139cbf73f9adba01382892f33558ad7bcb40cbvboxsync * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
2f139cbf73f9adba01382892f33558ad7bcb40cbvboxsync * distribution. VirtualBox OSE is distributed in the hope that it will
2f139cbf73f9adba01382892f33558ad7bcb40cbvboxsync * be useful, but WITHOUT ANY WARRANTY of any kind.
78a072e1b56619e3230735ae073668311232ec94vboxsync * If you received this file as part of a commercial VirtualBox
78a072e1b56619e3230735ae073668311232ec94vboxsync * distribution, then only the terms of your commercial VirtualBox
78a072e1b56619e3230735ae073668311232ec94vboxsync * license agreement apply instead of the previous paragraph.
78a072e1b56619e3230735ae073668311232ec94vboxsync public VirtualBoxSupportErrorInfoImpl <Host, IHost>,
78a072e1b56619e3230735ae073668311232ec94vboxsync // public initializer/uninitializer for internal purposes only
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync // IHost properties
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync STDMETHOD(COMGETTER(DVDDrives))(IHostDVDDriveCollection **drives);
78a072e1b56619e3230735ae073668311232ec94vboxsync STDMETHOD(COMGETTER(FloppyDrives))(IHostFloppyDriveCollection **drives);
78a072e1b56619e3230735ae073668311232ec94vboxsync STDMETHOD(COMGETTER(USBDevices))(IHostUSBDeviceCollection **aUSBDevices);
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync STDMETHOD(COMGETTER(USBDeviceFilters))(IHostUSBDeviceFilterCollection ** aUSBDeviceFilters);
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync STDMETHOD(COMGETTER(NetworkInterfaces))(IHostNetworkInterfaceCollection **networkInterfaces);
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync STDMETHOD(COMGETTER(ProcessorCount))(ULONG *count);
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync STDMETHOD(COMGETTER(ProcessorSpeed))(ULONG *speed);
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync STDMETHOD(COMGETTER(ProcessorDescription))(BSTR *description);
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync STDMETHOD(COMGETTER(MemoryAvailable))(ULONG *available);
78a072e1b56619e3230735ae073668311232ec94vboxsync // IHost methods
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync STDMETHOD(CreateHostNetworkInterface) (INPTR BSTR aName,
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync STDMETHOD(RemoveHostNetworkInterface) (INPTR GUIDPARAM aId,
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync STDMETHOD(CreateUSBDeviceFilter) (INPTR BSTR aName, IHostUSBDeviceFilter **aFilter);
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync STDMETHOD(InsertUSBDeviceFilter) (ULONG aPosition, IHostUSBDeviceFilter *aFilter);
78a072e1b56619e3230735ae073668311232ec94vboxsync STDMETHOD(RemoveUSBDeviceFilter) (ULONG aPosition, IHostUSBDeviceFilter **aFilter);
78a072e1b56619e3230735ae073668311232ec94vboxsync // public methods only for internal purposes
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync HRESULT onUSBDeviceFilterChange (HostUSBDeviceFilter *aFilter,
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync HRESULT captureUSBDevice (SessionMachine *aMachine, INPTR GUIDPARAM aId,
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync HRESULT releaseUSBDevice (SessionMachine *aMachine, INPTR GUIDPARAM aId);
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync HRESULT autoCaptureUSBDevices (SessionMachine *aMachine,
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync HRESULT releaseAllUSBDevices (SessionMachine *aMachine);
af15e739afe91d46d418e5844cf3d4e540b9f74avboxsync void onUSBDeviceStateChanged (HostUSBDevice *aDevice);
78a072e1b56619e3230735ae073668311232ec94vboxsync /* must be called from under this object's lock */
78a072e1b56619e3230735ae073668311232ec94vboxsync USBProxyService *usbProxyService() { return mUSBProxyService; }
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync static int networkInterfaceHelperServer (SVCHlpClient *aClient,
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync // for VirtualBoxSupportErrorInfoImpl
da7dd3061cddf2c716ec50849c4f23a597e82f68vboxsync static const wchar_t *getComponentName() { return L"Host"; }
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync bool getDVDInfoFromHal(std::list <ComObjPtr <HostDVDDrive> > &list);
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync void parseMountTable(char *mountTable, std::list <ComObjPtr <HostDVDDrive> > &list);
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync bool validateDevice(const char *deviceNode, bool isCDROM);
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync /** specialization for IHostUSBDeviceFilter */
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync ComObjPtr <HostUSBDeviceFilter> getDependentChild (IHostUSBDeviceFilter *aFilter)
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync VirtualBoxBase *child = VirtualBoxBaseWithChildren::
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync return child ? dynamic_cast <HostUSBDeviceFilter *> (child)
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync HRESULT applyAllUSBFilters (ComObjPtr <HostUSBDevice> &aDevice,
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync void applyMachineUSBFilters (SessionMachine *aMachine,
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync static int createNetworkInterface (SVCHlpClient *aClient,
3b3bc8a9383a065307e540b83fc3a3d6c548a082vboxsync static int removeNetworkInterface (SVCHlpClient *aClient,
0614bee07b5f88aa8803df43fde6d7185a9a7fffvboxsync static HRESULT networkInterfaceHelperClient (SVCHlpClient *aClient,
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync typedef std::list <ComObjPtr <HostUSBDevice> > USBDeviceList;
78a072e1b56619e3230735ae073668311232ec94vboxsync typedef std::list <ComObjPtr <HostUSBDeviceFilter> > USBDeviceFilterList;
85668909c68b5d0e67c89d6042535b41c4bffeccvboxsync /** Pointer to the USBProxyService object. */
78a072e1b56619e3230735ae073668311232ec94vboxsync#endif // ____H_HOSTIMPL