Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

572 lines
12 KiB

  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 2000-2001 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // CResourcePhysicalDiskPartition.cpp
  7. //
  8. // Description:
  9. // CResourcePhysicalDiskPartition implementation.
  10. //
  11. // Maintained By:
  12. // Galen Barbee (GalenB) 02-AUG-2000
  13. //
  14. //////////////////////////////////////////////////////////////////////////////
  15. //////////////////////////////////////////////////////////////////////////////
  16. // Include Files
  17. //////////////////////////////////////////////////////////////////////////////
  18. #include "pch.h"
  19. #include "CResourcePhysicalDiskPartition.h"
  20. #include <ClusCfgPrivate.h>
  21. //////////////////////////////////////////////////////////////////////////////
  22. // Constant Definitions
  23. //////////////////////////////////////////////////////////////////////////////
  24. DEFINE_THISCLASS("CResourcePhysicalDiskPartition")
  25. //////////////////////////////////////////////////////////////////////////////
  26. //++
  27. //
  28. // CResourcePhysicalDiskPartition::S_HrCreateInitializedInstance()
  29. //
  30. // Description:
  31. // Create a CResourcePhysicalDiskPartition instance.
  32. //
  33. // Arguments:
  34. // ppunkOut
  35. //
  36. // Return Values:
  37. // S_OK
  38. // Success.
  39. //
  40. // E_POINTER
  41. // A passed in argument is NULL.
  42. //
  43. // E_OUTOFMEMORY
  44. // Out of memory.
  45. //
  46. // Other HRESULT error.
  47. //
  48. //--
  49. //////////////////////////////////////////////////////////////////////////////
  50. HRESULT
  51. CResourcePhysicalDiskPartition::S_HrCreateInstance(
  52. IUnknown ** ppunkOut
  53. )
  54. {
  55. TraceFunc( "" );
  56. HRESULT hr;
  57. CResourcePhysicalDiskPartition * pcc = NULL;
  58. if ( ppunkOut == NULL )
  59. goto InvalidPointer;
  60. pcc = new CResourcePhysicalDiskPartition;
  61. if ( pcc == NULL )
  62. goto OutOfMemory;
  63. hr = THR( pcc->HrInit( ) );
  64. if ( FAILED( hr ) )
  65. goto Cleanup;
  66. hr = THR( pcc->TypeSafeQI( IUnknown, ppunkOut ) );
  67. Cleanup:
  68. if ( pcc != NULL )
  69. {
  70. pcc->Release( );
  71. } // if:
  72. HRETURN( hr );
  73. InvalidPointer:
  74. hr = THR( E_POINTER );
  75. goto Cleanup;
  76. OutOfMemory:
  77. hr = E_OUTOFMEMORY;
  78. goto Cleanup;
  79. } //*** CResourcePhysicalDiskPartition::S_HrCreateInitializedInstance()
  80. //////////////////////////////////////////////////////////////////////////////
  81. //++
  82. //
  83. // CResourcePhysicalDiskPartition::CResourcePhysicalDiskPartition()
  84. //
  85. // Description:
  86. // Constructor of the CResourcePhysicalDiskPartition class. This initializes
  87. // the m_cRef variable to 1 instead of 0 to account of possible
  88. // QueryInterface failure in DllGetClassObject.
  89. //
  90. // Arguments:
  91. // None.
  92. //
  93. // Return Value:
  94. // None.
  95. //
  96. // Remarks:
  97. // None.
  98. //
  99. //--
  100. //////////////////////////////////////////////////////////////////////////////
  101. CResourcePhysicalDiskPartition::CResourcePhysicalDiskPartition( void )
  102. : m_cRef( 1 )
  103. {
  104. TraceFunc( "" );
  105. Assert( m_cRef == 1 );
  106. InterlockedIncrement( &g_cObjects );
  107. TraceFuncExit();
  108. } //*** CResourcePhysicalDiskPartition::CResourcePhysicalDiskPartition()
  109. //////////////////////////////////////////////////////////////////////////////
  110. //++
  111. //
  112. // CResourcePhysicalDiskPartition::~CResourcePhysicalDiskPartition()
  113. //
  114. // Description:
  115. // Destructor of the CResourcePhysicalDiskPartition class.
  116. //
  117. // Arguments:
  118. // None.
  119. //
  120. // Return Value:
  121. // None.
  122. //
  123. // Remarks:
  124. // None.
  125. //
  126. //--
  127. //////////////////////////////////////////////////////////////////////////////
  128. CResourcePhysicalDiskPartition::~CResourcePhysicalDiskPartition( void )
  129. {
  130. TraceFunc( "" );
  131. InterlockedDecrement( &g_cObjects );
  132. TraceFuncExit();
  133. } //*** CResourcePhysicalDiskPartition::~CResourcePhysicalDiskPartition()
  134. //
  135. //
  136. //
  137. HRESULT
  138. CResourcePhysicalDiskPartition::HrInit( void )
  139. {
  140. TraceFunc( "" );
  141. HRESULT hr = S_OK;
  142. HRETURN( hr );
  143. }
  144. //*************************************************************************//
  145. /////////////////////////////////////////////////////////////////////////////
  146. // CResourcePhysicalDiskPartition -- IUknkown interface.
  147. /////////////////////////////////////////////////////////////////////////////
  148. //////////////////////////////////////////////////////////////////////////////
  149. //++
  150. //
  151. // CResourcePhysicalDiskPartition:: [INKNOWN] QueryInterface()
  152. //
  153. // Description:
  154. // Query this object for the passed in interface.
  155. //
  156. // Arguments:
  157. // IN REFIID riid,
  158. // Id of interface requested.
  159. //
  160. // OUT void ** ppv
  161. // Pointer to the requested interface.
  162. //
  163. // Return Value:
  164. // S_OK
  165. // If the interface is available on this object.
  166. //
  167. // E_NOINTERFACE
  168. // If the interface is not available.
  169. //
  170. // Remarks:
  171. // None.
  172. //
  173. //--
  174. //////////////////////////////////////////////////////////////////////////////
  175. STDMETHODIMP
  176. CResourcePhysicalDiskPartition::QueryInterface( REFIID riid, LPVOID *ppv )
  177. {
  178. TraceQIFunc( riid, ppv );
  179. HRESULT hr = E_NOINTERFACE;
  180. if ( IsEqualIID( riid, IID_IUnknown ) )
  181. {
  182. *ppv = static_cast< IClusCfgPartitionInfo * >( this );
  183. hr = S_OK;
  184. } // if: IUnknown
  185. else if ( IsEqualIID( riid, IID_IClusCfgPartitionInfo) )
  186. {
  187. *ppv = TraceInterface( __THISCLASS__, IClusCfgPartitionInfo, this, 0 );
  188. hr = S_OK;
  189. } // else if: IID_IClusCfgPartitionInfo
  190. if ( SUCCEEDED( hr ) )
  191. {
  192. ((IUnknown*) *ppv)->AddRef( );
  193. } // if: success
  194. QIRETURN_IGNORESTDMARSHALLING( hr, riid );
  195. } //*** CResourcePhysicalDiskPartition::QueryInterface( )
  196. //////////////////////////////////////////////////////////////////////////////
  197. //++
  198. //
  199. // STDMETHODIMP_( ULONG )
  200. // CResourcePhysicalDiskPartition:: [IUNKNOWN] AddRef()
  201. //
  202. // Description:
  203. // Increment the reference count of this object by one.
  204. //
  205. // Arguments:
  206. // None.
  207. //
  208. // Return Value:
  209. // The new reference count.
  210. //
  211. // Remarks:
  212. // None.
  213. //
  214. //--
  215. //////////////////////////////////////////////////////////////////////////////
  216. STDMETHODIMP_(ULONG)
  217. CResourcePhysicalDiskPartition::AddRef( void )
  218. {
  219. TraceFunc( "[IUnknown]" );
  220. InterlockedIncrement( &m_cRef );
  221. RETURN( m_cRef );
  222. } //*** CResourcePhysicalDiskPartition::AddRef()
  223. //////////////////////////////////////////////////////////////////////////////
  224. //++
  225. //
  226. // STDMETHODIMP_( ULONG )
  227. // CResourcePhysicalDiskPartition:: [IUNKNOWN] Release()
  228. //
  229. // Description:
  230. // Decrement the reference count of this object by one.
  231. //
  232. // Arguments:
  233. // None.
  234. //
  235. // Return Value:
  236. // The new reference count.
  237. //
  238. // Remarks:
  239. // None.
  240. //
  241. //--
  242. //////////////////////////////////////////////////////////////////////////////
  243. STDMETHODIMP_(ULONG)
  244. CResourcePhysicalDiskPartition::Release( void )
  245. {
  246. TraceFunc( "[IUnknown]" );
  247. InterlockedDecrement( &m_cRef );
  248. if ( m_cRef )
  249. RETURN( m_cRef );
  250. TraceDo( delete this );
  251. RETURN( 0 );
  252. } //*** CResourcePhysicalDiskPartition::Release()
  253. //*************************************************************************//
  254. /////////////////////////////////////////////////////////////////////////////
  255. // CResourcePhysicalDiskPartition -- IClusCfgManagedResourceInfo interface.
  256. /////////////////////////////////////////////////////////////////////////////
  257. //////////////////////////////////////////////////////////////////////////////
  258. //++
  259. //
  260. // CResourcePhysicalDiskPartition::GetName()
  261. //
  262. // Description:
  263. //
  264. // Arguments:
  265. //
  266. // Return Value:
  267. //
  268. // Remarks:
  269. // None.
  270. //
  271. //--
  272. //////////////////////////////////////////////////////////////////////////////
  273. STDMETHODIMP
  274. CResourcePhysicalDiskPartition::GetName(
  275. BSTR * pbstrNameOut
  276. )
  277. {
  278. TraceFunc( "[IClusCfgManagedResourceInfo]" );
  279. HRESULT hr = THR( E_NOTIMPL );
  280. HRETURN( hr );
  281. } //*** CResourcePhysicalDiskPartition::GetName()
  282. //////////////////////////////////////////////////////////////////////////////
  283. //++
  284. //
  285. // CResourcePhysicalDiskPartition::GetDescription()
  286. //
  287. // Description:
  288. //
  289. // Arguments:
  290. //
  291. // Return Value:
  292. //
  293. // Remarks:
  294. // None.
  295. //
  296. //--
  297. //////////////////////////////////////////////////////////////////////////////
  298. STDMETHODIMP
  299. CResourcePhysicalDiskPartition::GetDescription(
  300. BSTR * pbstrDescOut
  301. )
  302. {
  303. TraceFunc( "[IClusCfgManagedResourceInfo]" );
  304. HRESULT hr = THR( E_NOTIMPL );
  305. HRETURN( hr );
  306. } //*** CResourcePhysicalDiskPartition::GetDescription()
  307. //////////////////////////////////////////////////////////////////////////////
  308. //++
  309. //
  310. // CResourcePhysicalDiskPartition::GetUID()
  311. //
  312. // Description:
  313. //
  314. // Arguments:
  315. //
  316. // Return Value:
  317. //
  318. // Remarks:
  319. // None.
  320. //
  321. //--
  322. //////////////////////////////////////////////////////////////////////////////
  323. STDMETHODIMP
  324. CResourcePhysicalDiskPartition::GetUID(
  325. BSTR * pbstrUIDOut
  326. )
  327. {
  328. TraceFunc( "[IClusCfgManagedResourceInfo]" );
  329. HRESULT hr = THR( E_NOTIMPL );
  330. HRETURN( hr );
  331. } //*** CResourcePhysicalDiskPartition::GetUID()
  332. //////////////////////////////////////////////////////////////////////////////
  333. //++
  334. //
  335. // CResourcePhysicalDiskPartition::GetSize()
  336. //
  337. // Description:
  338. //
  339. // Arguments:
  340. //
  341. // Return Value:
  342. //
  343. // Remarks:
  344. // None.
  345. //
  346. //--
  347. //////////////////////////////////////////////////////////////////////////////
  348. STDMETHODIMP
  349. CResourcePhysicalDiskPartition::GetSize(
  350. ULONG * pcMegaBytes
  351. )
  352. {
  353. TraceFunc( "[IClusCfgManagedResourceInfo]" );
  354. HRESULT hr = S_OK;
  355. if ( pcMegaBytes == NULL )
  356. goto InvalidPointer;
  357. *pcMegaBytes = 0;
  358. Cleanup:
  359. HRETURN( hr );
  360. InvalidPointer:
  361. hr = THR( E_POINTER );
  362. goto Cleanup;
  363. } //*** CResourcePhysicalDiskPartition::GetSize()
  364. //////////////////////////////////////////////////////////////////////////////
  365. //++
  366. //
  367. // CResourcePhysicalDiskPartition::GetDriveLetterMappings()
  368. //
  369. // Description:
  370. //
  371. // Arguments:
  372. //
  373. // Return Value:
  374. //
  375. // Remarks:
  376. // None.
  377. //
  378. //--
  379. //////////////////////////////////////////////////////////////////////////////
  380. STDMETHODIMP
  381. CResourcePhysicalDiskPartition::GetDriveLetterMappings(
  382. SDriveLetterMapping * pdlmDriveLetterUsageOut
  383. )
  384. {
  385. TraceFunc( "[IClusCfgManagedResourceInfo]" );
  386. HRESULT hr = S_FALSE;
  387. if ( pdlmDriveLetterUsageOut == NULL )
  388. goto InvalidPointer;
  389. ZeroMemory( pdlmDriveLetterUsageOut, sizeof(*pdlmDriveLetterUsageOut) );
  390. Cleanup:
  391. HRETURN( hr );
  392. InvalidPointer:
  393. hr = THR( E_POINTER );
  394. goto Cleanup;
  395. } //*** CResourcePhysicalDiskPartition::GetDriveLetterMappings()
  396. //////////////////////////////////////////////////////////////////////////////
  397. //++
  398. //
  399. // CResourcePhysicalDiskPartition::SetName()
  400. //
  401. // Description:
  402. //
  403. // Arguments:
  404. //
  405. // Return Value:
  406. //
  407. // Remarks:
  408. // None.
  409. //
  410. //--
  411. //////////////////////////////////////////////////////////////////////////////
  412. STDMETHODIMP
  413. CResourcePhysicalDiskPartition::SetName( LPCWSTR pcszNameIn )
  414. {
  415. TraceFunc( "[IClusCfgManagedResourceInfo]" );
  416. HRESULT hr = THR( E_NOTIMPL );
  417. HRETURN( hr );
  418. } //*** CResourcePhysicalDiskPartition::SetName()
  419. //////////////////////////////////////////////////////////////////////////////
  420. //++
  421. //
  422. // CResourcePhysicalDiskPartition::SetDescription()
  423. //
  424. // Description:
  425. //
  426. // Arguments:
  427. //
  428. // Return Value:
  429. //
  430. // Remarks:
  431. // None.
  432. //
  433. //--
  434. //////////////////////////////////////////////////////////////////////////////
  435. STDMETHODIMP
  436. CResourcePhysicalDiskPartition::SetDescription( LPCWSTR pcszDescriptionIn )
  437. {
  438. TraceFunc( "[IClusCfgManagedResourceInfo]" );
  439. HRESULT hr = THR( E_NOTIMPL );
  440. HRETURN( hr );
  441. } //*** CResourcePhysicalDiskPartition::SetDescription()
  442. //////////////////////////////////////////////////////////////////////////////
  443. //++
  444. //
  445. // CResourcePhysicalDiskPartition::SetDriveLetterMappings()
  446. //
  447. // Description:
  448. //
  449. // Arguments:
  450. //
  451. // Return Value:
  452. //
  453. // Remarks:
  454. // None.
  455. //
  456. //--
  457. //////////////////////////////////////////////////////////////////////////////
  458. STDMETHODIMP
  459. CResourcePhysicalDiskPartition::SetDriveLetterMappings(
  460. SDriveLetterMapping dlmDriveLetterMappingIn
  461. )
  462. {
  463. TraceFunc( "[IClusCfgManagedResourceInfo]" );
  464. HRESULT hr = THR( E_NOTIMPL );
  465. HRETURN( hr );
  466. } //*** CResourcePhysicalDiskPartition::SetDriveLetterMappings()