VirtualBox

source: vbox/trunk/src/VBox/Frontends/VBoxBFE/HostUSBDeviceImpl.h@ 4071

Last change on this file since 4071 was 4071, checked in by vboxsync, 17 years ago

Biggest check-in ever. New source code headers for all (C) innotek files.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.9 KB
Line 
1/** @file
2 *
3 * VBox frontends: Basic Frontend (BFE):
4 * Declaration of HostUSBDevice
5 */
6
7/*
8 * Copyright (C) 2006-2007 innotek GmbH
9 *
10 * This file is part of VirtualBox Open Source Edition (OSE), as
11 * available from http://www.virtualbox.org. This file is free software;
12 * you can redistribute it and/or modify it under the terms of the GNU
13 * General Public License as published by the Free Software Foundation,
14 * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
15 * distribution. VirtualBox OSE is distributed in the hope that it will
16 * be useful, but WITHOUT ANY WARRANTY of any kind.
17 */
18
19#ifndef ____H_HOSTUSBDEVICEIMPL
20#define ____H_HOSTUSBDEVICEIMPL
21
22#ifndef VBOXBFE_WITH_USB
23# error "misconfiguration VBOXBFE_WITH_USB isn't defined and HostUSBDeviceImpl.h was included."
24#endif
25#include <string>
26
27#include "VirtualBoxBase.h"
28// #include "USBDeviceFilterImpl.h"
29/* #include "USBProxyService.h" circular on Host/HostUSBDevice, the includer must include this. */
30// #include "Collection.h"
31
32#include <VBox/usb.h>
33#include <iprt/uuid.h>
34
35class USBProxyService;
36
37/**
38 * The state of a given USB device in the host and in the guest.
39 * Originally part of the COM interface.
40 */
41typedef enum {
42 /** Not supported by the VirtualBox server, not available to
43 guests. */
44 USBDeviceState_USBDeviceNotSupported,
45 /** Being used by the host computer exclusively, not available
46 to guests. */
47 USBDeviceState_USBDeviceUnavailable,
48 /** Being used by the host computer, potentially available to
49 guests. */
50 USBDeviceState_USBDeviceBusy,
51 /** Not used by the host computer, available to guests. The
52 host computer can also start using the device at any time. */
53 USBDeviceState_USBDeviceAvailable,
54 /** Held by the VirtualBox server (ignored by the host computer),
55 available to guests. */
56 USBDeviceState_USBDeviceHeld,
57 /** Captured by one of the guest computers, not available to
58 anybody else. */
59 USBDeviceState_USBDeviceCaptured
60} USBDeviceState_T;
61
62/**
63 * Object class used for the Host USBDevices property.
64 */
65class HostUSBDevice : public VirtualBoxBase
66{
67public:
68
69 HostUSBDevice();
70 virtual ~HostUSBDevice();
71
72 // public initializer/uninitializer for internal purposes only
73 HRESULT init(PUSBDEVICE aUsb, USBProxyService *aUSBProxyService);
74
75 // IUSBDevice properties
76 STDMETHOD(COMGETTER(Id))(RTUUID &aId);
77 STDMETHOD(COMGETTER(VendorId))(USHORT *aVendorId);
78 STDMETHOD(COMGETTER(ProductId))(USHORT *aProductId);
79 STDMETHOD(COMGETTER(Revision))(USHORT *aRevision);
80 STDMETHOD(COMGETTER(Manufacturer))(std::string *aManufacturer);
81 STDMETHOD(COMGETTER(Product))(std::string *aProduct);
82 STDMETHOD(COMGETTER(SerialNumber))(std::string *aSerialNumber);
83 STDMETHOD(COMGETTER(Address))(std::string *aAddress);
84 STDMETHOD(COMGETTER(Port))(USHORT *aPort);
85 STDMETHOD(COMGETTER(Remote))(BOOL *aRemote);
86
87 // IHostUSBDevice properties
88 STDMETHOD(COMGETTER(State))(USBDeviceState_T *aState);
89
90 // public methods only for internal purposes
91
92 const RTUUID &id() { return mId; }
93 USBDeviceState_T state() { return mState; }
94 bool isIgnored() { return mIgnored; }
95
96 void setIgnored();
97 void setCaptured ();
98 bool isCaptured()
99 { return mState == USBDeviceState_USBDeviceCaptured; }
100 int setHostDriven();
101 int reset();
102
103 void setHostState (USBDeviceState_T aState);
104
105 int compare (PCUSBDEVICE pDev2);
106 static int compare (PCUSBDEVICE pDev1, PCUSBDEVICE pDev2);
107
108 bool updateState (PCUSBDEVICE aDev);
109
110 // for VirtualBoxSupportErrorInfoImpl
111 static const wchar_t *getComponentName() { return L"HostUSBDevice"; }
112
113private:
114
115 RTUUID mId;
116 USBDeviceState_T mState;
117 bool mIgnored;
118 /** Pointer to the USB Proxy Service instance. */
119 USBProxyService *mUSBProxyService;
120
121 /** Pointer to the USB Device structure owned by this device.
122 * Only used for host devices. */
123 PUSBDEVICE m_pUsb;
124};
125
126#endif // ____H_HOSTUSBDEVICEIMPL
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