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