730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync/* $Id$ */
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync/** @file
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync * Declaration of USBDeviceFilter and HostUSBDeviceFilter.
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync */
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync/*
d7a2c5e4cc83588b277fd8f28a288773173c3638vboxsync * Copyright (C) 2006-2014 Oracle Corporation
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync *
b52c24239bed9dc9f284d829b6059073afcb1894vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
b52c24239bed9dc9f284d829b6059073afcb1894vboxsync * available from http://www.virtualbox.org. This file is free software;
b52c24239bed9dc9f284d829b6059073afcb1894vboxsync * you can redistribute it and/or modify it under the terms of the GNU
b52c24239bed9dc9f284d829b6059073afcb1894vboxsync * General Public License (GPL) as published by the Free Software
b52c24239bed9dc9f284d829b6059073afcb1894vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
b52c24239bed9dc9f284d829b6059073afcb1894vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
b52c24239bed9dc9f284d829b6059073afcb1894vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync */
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync#ifndef ____H_USBDEVICEFILTERIMPL
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync#define ____H_USBDEVICEFILTERIMPL
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync#include "Matching.h"
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync#include <VBox/usbfilter.h>
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync#include "USBDeviceFilterWrap.h"
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
8d2c7dec46677bbd72336d406d2644e578045dd9vboxsyncclass USBDeviceFilters;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsyncclass Host;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsyncnamespace settings
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync{
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync struct USBDeviceFilter;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync}
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync// USBDeviceFilter
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync////////////////////////////////////////////////////////////////////////////////
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsyncclass ATL_NO_VTABLE USBDeviceFilter :
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync public USBDeviceFilterWrap
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync{
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsyncpublic:
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync struct Data
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync {
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync typedef matching::Matchable <matching::ParsedBoolFilter> BOOLFilter;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync Data() : mActive (FALSE), mMaskedIfs (0), mId (NULL) {}
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync Data (const Data &aThat) : mName (aThat.mName), mActive (aThat.mActive),
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync mRemote (aThat.mRemote), mMaskedIfs (aThat.mMaskedIfs) , mId (aThat.mId)
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync {
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync USBFilterClone (&mUSBFilter, &aThat.mUSBFilter);
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync }
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync /** The filter name. */
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync Bstr mName;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync /** Indicates whether the filter is active or not. */
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync BOOL mActive;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync /** Remote or local matching criterion. */
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync BOOLFilter mRemote;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync /** The filter data blob. */
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync USBFILTER mUSBFilter;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync /** Interface masking bit mask that should be applied to matching devices. */
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync ULONG mMaskedIfs;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync /** Arbitrary ID field (not used by the class itself) */
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync void *mId;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync };
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync DECLARE_EMPTY_CTOR_DTOR(USBDeviceFilter)
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync HRESULT FinalConstruct();
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync void FinalRelease();
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync // public initializer/uninitializer for internal purposes only
8d2c7dec46677bbd72336d406d2644e578045dd9vboxsync HRESULT init(USBDeviceFilters *aParent,
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync const settings::USBDeviceFilter &data);
8d2c7dec46677bbd72336d406d2644e578045dd9vboxsync HRESULT init(USBDeviceFilters *aParent, IN_BSTR aName);
8d2c7dec46677bbd72336d406d2644e578045dd9vboxsync HRESULT init(USBDeviceFilters *aParent, USBDeviceFilter *aThat,
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync bool aReshare = false);
8d2c7dec46677bbd72336d406d2644e578045dd9vboxsync HRESULT initCopy(USBDeviceFilters *aParent, USBDeviceFilter *aThat);
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync void uninit();
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync // public methods only for internal purposes
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync bool i_isModified();
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync void i_rollback();
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync void i_commit();
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync void unshare();
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync // public methods for internal purposes only
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync // (ensure there is a caller and a read lock before calling them!)
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync void *& i_getId() { return mData.data()->mId; }
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync const Data& i_getData() { return *mData.data(); }
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync ComObjPtr<USBDeviceFilter> i_peer() { return mPeer; }
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync // tr() wants to belong to a class it seems, thus this one here.
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync static HRESULT i_usbFilterFieldFromString(PUSBFILTER aFilter,
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync USBFILTERIDX aIdx,
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync const Utf8Str &aValue,
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync Utf8Str &aErrStr);
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync static const char* i_describeUSBFilterIdx(USBFILTERIDX aIdx);
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsyncprivate:
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync // wrapped IUSBDeviceFilter properties
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getName(com::Utf8Str &aName);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setName(const com::Utf8Str &aName);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getActive(BOOL *aActive);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setActive(BOOL aActive);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getVendorId(com::Utf8Str &aVendorId);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setVendorId(const com::Utf8Str &aVendorId);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getProductId(com::Utf8Str &aProductId);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setProductId(const com::Utf8Str &aProductId);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getRevision(com::Utf8Str &aRevision);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setRevision(const com::Utf8Str &aRevision);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getManufacturer(com::Utf8Str &aManufacturer);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setManufacturer(const com::Utf8Str &aManufacturer);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getProduct(com::Utf8Str &aProduct);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setProduct(const com::Utf8Str &aProduct);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getSerialNumber(com::Utf8Str &aSerialNumber);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setSerialNumber(const com::Utf8Str &aSerialNumber);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getPort(com::Utf8Str &aPort);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setPort(const com::Utf8Str &aPort);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getRemote(com::Utf8Str &aRemote);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setRemote(const com::Utf8Str &aRemote);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getMaskedInterfaces(ULONG *aMaskedInterfaces);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setMaskedInterfaces(ULONG aMaskedInterfaces);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync // wrapped IUSBDeviceFilter methods
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT i_usbFilterFieldGetter(USBFILTERIDX aIdx, com::Utf8Str &aStr);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT i_usbFilterFieldSetter(USBFILTERIDX aIdx, const com::Utf8Str &strNew);
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
8d2c7dec46677bbd72336d406d2644e578045dd9vboxsync USBDeviceFilters * const mParent;
8d2c7dec46677bbd72336d406d2644e578045dd9vboxsync USBDeviceFilter * const mPeer;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync Backupable<Data> mData;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync bool m_fModified;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync /** Used externally to indicate this filter is in the list
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync (not touched by the class itself except that in init()/uninit()) */
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync bool mInList;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
8d2c7dec46677bbd72336d406d2644e578045dd9vboxsync friend class USBDeviceFilters;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync};
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync#include "HostUSBDeviceFilterWrap.h"
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync// HostUSBDeviceFilter
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync////////////////////////////////////////////////////////////////////////////////
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsyncclass ATL_NO_VTABLE HostUSBDeviceFilter :
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync public HostUSBDeviceFilterWrap
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync{
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsyncpublic:
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync struct Data : public USBDeviceFilter::Data
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync {
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync Data() {}
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync };
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync DECLARE_EMPTY_CTOR_DTOR (HostUSBDeviceFilter)
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync HRESULT FinalConstruct();
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync void FinalRelease();
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync // public initializer/uninitializer for internal purposes only
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync HRESULT init(Host *aParent,
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync const settings::USBDeviceFilter &data);
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync HRESULT init(Host *aParent, IN_BSTR aName);
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync void uninit();
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync // public methods for internal purposes only
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync // (ensure there is a caller and a read lock before calling them!)
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync void i_saveSettings(settings::USBDeviceFilter &data);
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync void*& i_getId() { return mData.data()->mId; }
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync const Data& i_getData() { return *mData.data(); }
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync // util::Lockable interface
d7a2c5e4cc83588b277fd8f28a288773173c3638vboxsync RWLockHandle *lockHandle() const;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsyncprivate:
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync // wrapped IHostUSBDeviceFilter properties
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getName(com::Utf8Str &aName);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setName(const com::Utf8Str &aName);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getActive(BOOL *aActive);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setActive(BOOL aActive);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getVendorId(com::Utf8Str &aVendorId);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setVendorId(const com::Utf8Str &aVendorId);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getProductId(com::Utf8Str &aProductId);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setProductId(const com::Utf8Str &aProductId);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getRevision(com::Utf8Str &aRevision);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setRevision(const com::Utf8Str &aRevision);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getManufacturer(com::Utf8Str &aManufacturer);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setManufacturer(const com::Utf8Str &aManufacturer);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getProduct(com::Utf8Str &aProduct);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setProduct(const com::Utf8Str &aProduct);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getSerialNumber(com::Utf8Str &aSerialNumber);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setSerialNumber(const com::Utf8Str &aSerialNumber);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getPort(com::Utf8Str &aPort);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setPort(const com::Utf8Str &aPort);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getRemote(com::Utf8Str &aRemote);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setRemote(const com::Utf8Str &aRemote);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getMaskedInterfaces(ULONG *aMaskedInterfaces);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setMaskedInterfaces(ULONG aMaskedInterfaces);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync // wrapped IHostUSBDeviceFilter properties
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT getAction(USBDeviceFilterAction_T *aAction);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT setAction(USBDeviceFilterAction_T aAction);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT i_usbFilterFieldGetter(USBFILTERIDX aIdx, com::Utf8Str &aStr);
dc8bfd15c7bcc2d2b4ff4f397637839b36d4713avboxsync HRESULT i_usbFilterFieldSetter(USBFILTERIDX aIdx, const com::Utf8Str &aStr);
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync Host * const mParent;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync Backupable<Data> mData;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync /** Used externally to indicate this filter is in the list
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync (not touched by the class itself except that in init()/uninit()) */
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync bool mInList;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync friend class Host;
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync};
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync#endif // ____H_USBDEVICEFILTERIMPL
730b109e93240f48a2fc4ca97c05e5f347f71ec9vboxsync/* vi: set tabstop=4 shiftwidth=4 expandtab: */