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.

103 lines
4.7 KiB

  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1999-2002 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // ManagedResource.h
  7. //
  8. // Description:
  9. // CManagedResource implementation.
  10. //
  11. // Maintained By:
  12. // Galen Barbee (GalenB) 22-NOV-1999
  13. //
  14. //////////////////////////////////////////////////////////////////////////////
  15. #pragma once
  16. class CEnumManageableResources;
  17. class CManagedResource
  18. : public IExtendObjectManager
  19. , public IClusCfgManagedResourceInfo
  20. , public IGatherData
  21. , public IClusCfgManagedResourceData
  22. , public IClusCfgVerifyQuorum
  23. {
  24. friend class CEnumManageableResources;
  25. private:
  26. // IUnknown
  27. LONG m_cRef;
  28. // Async/IClusCfgManagedResourceInfo
  29. BSTR m_bstrUID; // Unique Identifier
  30. BSTR m_bstrName; // Display Name
  31. BSTR m_bstrType; // Display Type Name
  32. BOOL m_fHasNameChanged; // Indicates the user changed the name
  33. BOOL m_fIsManaged; // Does the user want to manage this resource in the cluster?
  34. BOOL m_fIsManagedByDefault; // Should the resource be managed by default in the cluster?
  35. BOOL m_fIsQuorumResource; // If the user wants this device to be the quorum...
  36. BOOL m_fIsQuorumCapable; // If the device supports quorum...
  37. BOOL m_fIsQuorumResourceMultiNodeCapable; // Does the quorum capable device allow join.
  38. BYTE * m_pbPrivateData; // Buffer for the resource's private data.
  39. DWORD m_cbPrivateData; // size of the resource's private data.
  40. DWORD m_cookieResourcePrivateData; // Global Interface Table cookie -- server side IClusCfgManagedResourceData
  41. DWORD m_cookieVerifyQuorum; // Global Interface Table cookie -- server side IClusCfgVerifyQuorum
  42. IGlobalInterfaceTable * m_pgit; // Global Interface Table
  43. SDriveLetterMapping m_dlmDriveLetterMapping; // Drive letter representations hosted on this device.
  44. // IExtendObjectManager
  45. private: // Methods
  46. CManagedResource( void );
  47. ~CManagedResource( void );
  48. // Private copy constructor to prevent copying.
  49. CManagedResource( const CManagedResource & nodeSrc );
  50. // Private assignment operator to prevent copying.
  51. const CManagedResource & operator = ( const CManagedResource & nodeSrc );
  52. STDMETHOD( HrInit )( void );
  53. public: // Methods
  54. static HRESULT S_HrCreateInstance( IUnknown ** ppunkOut );
  55. // IUnknown
  56. STDMETHOD( QueryInterface )( REFIID riidIn, LPVOID * ppvOut );
  57. STDMETHOD_( ULONG, AddRef )( void );
  58. STDMETHOD_( ULONG, Release )( void );
  59. // IClusCfgManagedResourceInfo
  60. STDMETHOD( GetUID )( BSTR * pbstrUIDOut );
  61. STDMETHOD( GetName )( BSTR * pbstrNameOut );
  62. STDMETHOD( SetName )( LPCWSTR pcszNameIn );
  63. STDMETHOD( IsManaged )( void );
  64. STDMETHOD( SetManaged )( BOOL fIsManagedIn );
  65. STDMETHOD( IsQuorumResource )( void );
  66. STDMETHOD( SetQuorumResource )( BOOL fIsQuorumResourceIn );
  67. STDMETHOD( IsQuorumCapable )( void );
  68. STDMETHOD( SetQuorumCapable )( BOOL fIsQuorumCapableIn );
  69. STDMETHOD( GetDriveLetterMappings )( SDriveLetterMapping * pdlmDriveLetterMappingsOut );
  70. STDMETHOD( SetDriveLetterMappings )( SDriveLetterMapping dlmDriveLetterMappingsIn );
  71. STDMETHOD( IsManagedByDefault )( void );
  72. STDMETHOD( SetManagedByDefault )( BOOL fIsManagedByDefaultIn );
  73. // IGatherData
  74. STDMETHOD( Gather )( OBJECTCOOKIE cookieParentIn, IUnknown * punkIn );
  75. // IExtendOjectManager
  76. STDMETHOD( FindObject )( OBJECTCOOKIE cookieIn, REFCLSID rclsidTypeIn, LPCWSTR pcszNameIn, LPUNKNOWN * ppunkOut );
  77. // IClusCfgManagedResourceData
  78. STDMETHOD( GetResourcePrivateData )( BYTE * pbBufferOut, DWORD * pcbBufferInout );
  79. STDMETHOD( SetResourcePrivateData )( const BYTE * pcbBufferIn, DWORD cbBufferIn );
  80. // IClusCfgVerifyQuorum
  81. STDMETHOD( PrepareToHostQuorumResource )( void );
  82. STDMETHOD( Cleanup )( EClusCfgCleanupReason cccrReasonIn );
  83. STDMETHOD( IsMultiNodeCapable )( void );
  84. STDMETHOD( SetMultiNodeCapable )( BOOL fMultiNodeCapableIn );
  85. }; //*** class CManagedResource