Leaked source code of windows server 2003
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.

107 lines
2.6 KiB

  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 2001 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // CIndexedDisk.cpp
  7. //
  8. // Description:
  9. // This file contains the definition of the CIndexedDisk class.
  10. //
  11. // The CIndexedDisk structure associates a pointer to a disk object with
  12. // the disk object's Index property.
  13. //
  14. // Maintained By:
  15. // John Franco (jfranco) 1-JUN-2001
  16. //
  17. //////////////////////////////////////////////////////////////////////////////
  18. //////////////////////////////////////////////////////////////////////////////
  19. // Include Files
  20. //////////////////////////////////////////////////////////////////////////////
  21. #include "Pch.h"
  22. #include "CIndexedDisk.h"
  23. #include "PrivateInterfaces.h"
  24. //////////////////////////////////////////////////////////////////////////////
  25. // Constant Definitions
  26. //////////////////////////////////////////////////////////////////////////////
  27. DEFINE_THISCLASS( "CIndexedDisk" );
  28. //*************************************************************************//
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CIndexedDisk class
  31. /////////////////////////////////////////////////////////////////////////////
  32. //////////////////////////////////////////////////////////////////////////////
  33. //++
  34. //
  35. // CIndexedDisk::HrInit
  36. //
  37. // Description:
  38. // Initialize this instance from a disk object; punkDiskIn must
  39. // support the IClusCfgPhysicalDiskProperties interface.
  40. //
  41. // Arguments:
  42. // punkDiskIn - the disk object for initialization.
  43. //
  44. // Return Values:
  45. // S_OK - success.
  46. //
  47. // Error codes from called functions.
  48. //
  49. //--
  50. //////////////////////////////////////////////////////////////////////////////
  51. HRESULT
  52. CIndexedDisk::HrInit( IUnknown * punkDiskIn )
  53. {
  54. TraceFunc( "" );
  55. HRESULT hr = S_OK;
  56. IClusCfgPhysicalDiskProperties * pccpdp = NULL;
  57. if ( punkDiskIn == NULL )
  58. {
  59. hr = THR( E_POINTER );
  60. goto Cleanup;
  61. }
  62. // QI for IClusCfgPhysicalDiskProperties
  63. hr = THR( punkDiskIn->TypeSafeQI( IClusCfgPhysicalDiskProperties, &pccpdp ) );
  64. if ( FAILED( hr ) )
  65. {
  66. goto Cleanup;
  67. }
  68. // get index from IClusCfgPhysicalDiskProperties
  69. hr = THR( pccpdp->HrGetDeviceIndex( &idxDisk ) );
  70. if ( FAILED( hr ) )
  71. {
  72. goto Cleanup;
  73. }
  74. punkDisk = punkDiskIn;
  75. Cleanup:
  76. if ( pccpdp != NULL )
  77. {
  78. pccpdp->Release();
  79. }
  80. HRETURN( hr );
  81. } //*** CIndexedDisk::HrInit