VirtualBox

source: vbox/trunk/src/VBox/Main/include/RemoteUSBDeviceImpl.h@ 28398

Last change on this file since 28398 was 23223, checked in by vboxsync, 15 years ago

API: big medium handling change and lots of assorted other cleanups and fixes

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.2 KB
Line 
1/* $Id: RemoteUSBDeviceImpl.h 23223 2009-09-22 15:50:03Z vboxsync $ */
2
3/** @file
4 *
5 * VirtualBox IHostUSBDevice COM interface implementation
6 * for remote (VRDP) USB devices
7 */
8
9/*
10 * Copyright (C) 2006-2009 Sun Microsystems, Inc.
11 *
12 * This file is part of VirtualBox Open Source Edition (OSE), as
13 * available from http://www.virtualbox.org. This file is free software;
14 * you can redistribute it and/or modify it under the terms of the GNU
15 * General Public License (GPL) as published by the Free Software
16 * Foundation, in version 2 as it comes in the "COPYING" file of the
17 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
18 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
19 *
20 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
21 * Clara, CA 95054 USA or visit http://www.sun.com if you need
22 * additional information or have any questions.
23 */
24
25#ifndef ____H_REMOTEUSBDEVICEIMPL
26#define ____H_REMOTEUSBDEVICEIMPL
27
28#include "VirtualBoxBase.h"
29
30struct _VRDPUSBDEVICEDESC;
31typedef _VRDPUSBDEVICEDESC VRDPUSBDEVICEDESC;
32
33class ATL_NO_VTABLE RemoteUSBDevice :
34 public VirtualBoxBase,
35 public VirtualBoxSupportErrorInfoImpl<RemoteUSBDevice, IHostUSBDevice>,
36 public VirtualBoxSupportTranslation<RemoteUSBDevice>,
37 VBOX_SCRIPTABLE_IMPL(IHostUSBDevice)
38{
39public:
40
41 VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT (OUSBDevice)
42
43 DECLARE_NOT_AGGREGATABLE (RemoteUSBDevice)
44
45 DECLARE_PROTECT_FINAL_CONSTRUCT()
46
47 BEGIN_COM_MAP (RemoteUSBDevice)
48 COM_INTERFACE_ENTRY (ISupportErrorInfo)
49 COM_INTERFACE_ENTRY (IHostUSBDevice)
50 COM_INTERFACE_ENTRY (IUSBDevice)
51 COM_INTERFACE_ENTRY2 (IDispatch, IUSBDevice)
52 END_COM_MAP()
53
54 DECLARE_EMPTY_CTOR_DTOR (RemoteUSBDevice)
55
56 HRESULT FinalConstruct();
57 void FinalRelease();
58
59 // public initializer/uninitializer for internal purposes only
60 HRESULT init(uint32_t u32ClientId, VRDPUSBDEVICEDESC *pDevDesc);
61 void uninit();
62
63 // IUSBDevice properties
64 STDMETHOD(COMGETTER(Id)) (BSTR *aId);
65 STDMETHOD(COMGETTER(VendorId)) (USHORT *aVendorId);
66 STDMETHOD(COMGETTER(ProductId)) (USHORT *aProductId);
67 STDMETHOD(COMGETTER(Revision)) (USHORT *aRevision);
68 STDMETHOD(COMGETTER(Manufacturer)) (BSTR *aManufacturer);
69 STDMETHOD(COMGETTER(Product)) (BSTR *aProduct);
70 STDMETHOD(COMGETTER(SerialNumber)) (BSTR *aSerialNumber);
71 STDMETHOD(COMGETTER(Address)) (BSTR *aAddress);
72 STDMETHOD(COMGETTER(Port)) (USHORT *aPort);
73 STDMETHOD(COMGETTER(Version)) (USHORT *aVersion);
74 STDMETHOD(COMGETTER(PortVersion)) (USHORT *aPortVersion);
75 STDMETHOD(COMGETTER(Remote)) (BOOL *aRemote);
76
77 // IHostUSBDevice properties
78 STDMETHOD(COMGETTER(State)) (USBDeviceState_T *aState);
79
80 // public methods only for internal purposes
81 bool dirty (void) const { return mData.dirty; }
82 void dirty (bool aDirty) { mData.dirty = aDirty; }
83
84 uint16_t devId (void) const { return mData.devId; }
85 uint32_t clientId (void) { return mData.clientId; }
86
87 bool captured (void) const { return mData.state == USBDeviceState_Captured; }
88 void captured (bool aCaptured)
89 {
90 if (aCaptured)
91 {
92 Assert(mData.state == USBDeviceState_Available);
93 mData.state = USBDeviceState_Captured;
94 }
95 else
96 {
97 Assert(mData.state == USBDeviceState_Captured);
98 mData.state = USBDeviceState_Available;
99 }
100 }
101
102 // for VirtualBoxSupportErrorInfoImpl
103 static const wchar_t *getComponentName() { return L"RemoteUSBDevice"; }
104
105private:
106
107 struct Data
108 {
109 Data() : vendorId (0), productId (0), revision (0), port (0), version (1),
110 portVersion (1), dirty (FALSE), devId (0), clientId (0) {}
111
112 const Guid id;
113
114 const uint16_t vendorId;
115 const uint16_t productId;
116 const uint16_t revision;
117
118 const Bstr manufacturer;
119 const Bstr product;
120 const Bstr serialNumber;
121
122 const Bstr address;
123
124 const uint16_t port;
125 const uint16_t version;
126 const uint16_t portVersion;
127
128 USBDeviceState_T state;
129 bool dirty;
130
131 const uint16_t devId;
132 const uint32_t clientId;
133 };
134
135 Data mData;
136};
137
138#endif // ____H_REMOTEUSBDEVICEIMPL
139/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette