sbIPDSysDevice.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-2009 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_IPD_SYS_DEVICE_H__
28 #define __SB_IPD_SYS_DEVICE_H__
29 
30 //------------------------------------------------------------------------------
31 //------------------------------------------------------------------------------
32 //
33 // iPod system dependent device services defs.
34 //
35 //------------------------------------------------------------------------------
36 //------------------------------------------------------------------------------
37 
43 //------------------------------------------------------------------------------
44 //
45 // iPod system dependent device imported services.
46 //
47 //------------------------------------------------------------------------------
48 
49 // Local imports.
50 #include "sbIPDDevice.h"
51 
52 /* Win32 imports. */
53 #include <windows.h>
54 
55 #include <cfgmgr32.h>
56 #include <setupapi.h>
57 
58 
59 //------------------------------------------------------------------------------
60 //
61 // iPod system dependent device services classes.
62 //
63 // All fields and methods are in the "not locked" category with respect to
64 // threading.
65 //
66 //------------------------------------------------------------------------------
67 
72 class sbIPDSysDevice : public sbIPDDevice
73 {
74  //----------------------------------------------------------------------------
75  //
76  // Public interface.
77  //
78  //----------------------------------------------------------------------------
79 
80 public:
81 
82  //
83  // sbIDevice services.
84  //
85 
86  NS_SCRIPTABLE NS_IMETHOD Eject(void);
87 
88 
89  //
90  // Constructors/destructors.
91  //
92 
93  sbIPDSysDevice(const nsID& aControllerID,
94  nsIPropertyBag* aProperties);
95 
97 
98  nsresult Initialize();
99 
100  void Finalize();
101 
102 
103  //----------------------------------------------------------------------------
104  //
105  // Public interface.
106  //
107  //----------------------------------------------------------------------------
108 
109 private:
110 
111  //
112  // Internal services fields.
113  //
114  // mProperties Set of device properties.
115  // mDevInst Win32 device instance.
116  //
117 
118  nsCOMPtr<nsIPropertyBag> mProperties;
119  DEVINST mDevInst;
120 
121 
122  //
123  // Internal services.
124  //
125 
126  nsresult GetFirewireGUID(nsAString& aFirewireGUID);
127 
128  nsresult GetDevInst(char aDriveLetter,
129  DEVINST* aDevInst);
130 
131  nsresult GetDevNum(LPCTSTR aDevPath,
132  ULONG* aDevNum);
133 
134  nsresult GetDevDetail(PSP_DEVICE_INTERFACE_DETAIL_DATA* aDevIfDetailData,
135  SP_DEVINFO_DATA* aDevInfoData,
136  HDEVINFO aDevInfo,
137  GUID* aGUID,
138  DWORD aDevIndex);
139 };
140 
141 
142 //
143 // Auto-disposal class wrappers.
144 //
145 // sbIPDAutoDevInfo Wrapper to auto-destroy Win32 device info lists.
146 // sbIPDAutoFile Wrapper to auto-close Win32 files.
147 //
148 
149 SB_AUTO_CLASS(sbIPDAutoDevInfo,
150  HDEVINFO,
151  mValue != INVALID_HANDLE_VALUE,
152  SetupDiDestroyDeviceInfoList(mValue),
153  mValue = INVALID_HANDLE_VALUE);
154 SB_AUTO_CLASS(sbIPDAutoFile,
155  HANDLE,
156  mValue != INVALID_HANDLE_VALUE,
157  CloseHandle(mValue),
158  mValue = INVALID_HANDLE_VALUE);
159 
160 
161 #endif // __SB_IPD_SYS_DEVICE_H__
162 
SB_AUTO_CLASS(sbIPDAutoDevInfo, HDEVINFO, mValue!=INVALID_HANDLE_VALUE, SetupDiDestroyDeviceInfoList(mValue), mValue=INVALID_HANDLE_VALUE)
sbIPDSysDevice(const nsID &aControllerID, nsIPropertyBag *aProperties)
Songbird iPod Device Definitions.
nsresult Eject()
nsresult Initialize()