sbWindowsUSBDeviceUtils.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set sw=2 :miv */
3 /*
4  *=BEGIN SONGBIRD GPL
5  *
6  * This file is part of the Songbird web player.
7  *
8  * Copyright(c) 2005-2010 POTI, Inc.
9  * http://www.songbirdnest.com
10  *
11  * This file may be licensed under the terms of of the
12  * GNU General Public License Version 2 (the ``GPL'').
13  *
14  * Software distributed under the License is distributed
15  * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
16  * express or implied. See the GPL for the specific language
17  * governing rights and limitations.
18  *
19  * You should have received a copy of the GPL along with this
20  * program. If not, go to http://www.gnu.org/licenses/gpl.html
21  * or write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23  *
24  *=END SONGBIRD GPL
25  */
26 
27 #ifndef SB_WINDOWS_USB_DEVICE_UTILS_H_
28 #define SB_WINDOWS_USB_DEVICE_UTILS_H_
29 
30 //------------------------------------------------------------------------------
31 //------------------------------------------------------------------------------
32 //
33 // Songbird Windows USB device utilities defs.
34 //
35 //------------------------------------------------------------------------------
36 //------------------------------------------------------------------------------
37 
43 //------------------------------------------------------------------------------
44 //
45 // Songbird Windows USB device utilities imported services.
46 //
47 //------------------------------------------------------------------------------
48 
49 // Local imports.
50 #include "sbUSBDeviceUtils.h"
51 
52 // Songbird imports.
53 #include <sbMemoryUtils.h>
54 
55 // Windows imports.
56 #include <windows.h>
57 
58 #include <cfgmgr32.h>
59 
60 
61 //------------------------------------------------------------------------------
62 //
63 // Songbird Windows device utilities classes.
64 //
65 //------------------------------------------------------------------------------
66 
72 {
73 public:
74  //
75  // devInst USB device instance.
76  // hubFile USB hub file for device.
77  // portIndex USB hub port index for device.
78  //
79 
80  DEVINST devInst;
81  HANDLE hubFile;
82  ULONG portIndex;
83 
85  devInst(NULL),
86  hubFile(INVALID_HANDLE_VALUE) {}
87 };
88 
89 
90 //------------------------------------------------------------------------------
91 //
92 // Songbird Windows USB device services.
93 //
94 //------------------------------------------------------------------------------
95 
96 nsresult sbWinUSBDeviceOpenRef(DEVINST aDevInst,
97  sbWinUSBDeviceRef* aDeviceInfo);
98 
99 nsresult sbWinUSBDeviceCloseRef(sbWinUSBDeviceRef* aDeviceInfo);
100 
101 nsresult sbWinUSBDeviceGetHubAndPort(DEVINST aDevInst,
102  HANDLE* aHubFile,
103  ULONG* aPortIndex);
104 
105 nsresult sbWinUSBHubFindDevicePort(HANDLE aHubFile,
106  DEVINST aDevInst,
107  ULONG* aPortIndex);
108 
109 nsresult sbWinUSBHubGetPortDriverKey(HANDLE aHubFile,
110  ULONG aPortIndex,
111  nsAString& aDriverKey);
112 
113 
114 //------------------------------------------------------------------------------
115 //
116 // Songbird Windows USB MSC device services.
117 //
118 //------------------------------------------------------------------------------
119 
120 nsresult sbWinUSBMSCGetLUN(DEVINST aDevInst,
121  PRUint32* aLUN);
122 
123 
124 //------------------------------------------------------------------------------
125 //
126 // Songbird Windows USB device utilities classes.
127 //
128 // These classes may depend upon function prototypes.
129 //
130 //------------------------------------------------------------------------------
131 
132 //
133 // Auto-disposal class wrappers.
134 //
135 // sbAutoWinUSBDeviceRef Wrapper to auto-close Windows USB device
136 // reference objects.
137 //
138 
139 SB_AUTO_NULL_CLASS(sbAutoWinUSBDeviceRef,
141  sbWinUSBDeviceCloseRef(mValue));
142 
143 
144 #endif // SB_WINDOWS_USB_DEVICE_UTILS_H_
145 
nsresult sbWinUSBHubGetPortDriverKey(HANDLE aHubFile, ULONG aPortIndex, nsAString &aDriverKey)
SB_AUTO_NULL_CLASS(sbAutoWinUSBDeviceRef, sbWinUSBDeviceRef *, sbWinUSBDeviceCloseRef(mValue))
nsresult sbWinUSBMSCGetLUN(DEVINST aDevInst, PRUint32 *aLUN)
nsresult sbWinUSBDeviceOpenRef(DEVINST aDevInst, sbWinUSBDeviceRef *aDeviceInfo)
nsresult sbWinUSBHubFindDevicePort(HANDLE aHubFile, DEVINST aDevInst, ULONG *aPortIndex)
nsresult sbWinUSBDeviceCloseRef(sbWinUSBDeviceRef *aDeviceInfo)
Songbird USB Device Utilities Definitions.
nsresult sbWinUSBDeviceGetHubAndPort(DEVINST aDevInst, HANDLE *aHubFile, ULONG *aPortIndex)