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.

92 lines
3.7 KiB

  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1999-2001 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // NodeInformation.h
  7. //
  8. // Description:
  9. // CNodeInformation implementation.
  10. //
  11. // Maintained By:
  12. // Galen barbee (GalenB) 02-MAR-2000
  13. //
  14. //////////////////////////////////////////////////////////////////////////////
  15. #pragma once
  16. class CEnumNodeInformation;
  17. // CNodeInformation
  18. class CNodeInformation
  19. : public IExtendObjectManager
  20. , public IClusCfgNodeInfo
  21. , public IGatherData // internal
  22. {
  23. friend class CEnumNodeInformation;
  24. private:
  25. // IUnknown
  26. LONG m_cRef;
  27. // Async/IClusNodeInfo
  28. BSTR m_bstrName; // Name of the node
  29. BOOL m_fHasNameChanged; // If the node name was changed...
  30. BOOL m_fIsMember; // If the node is a member of a cluster...
  31. IClusCfgClusterInfo * m_pccci; // Interface to the node's cluster info (might not be the same as the cluster we are joining)
  32. DWORD m_dwHighestVersion; //
  33. DWORD m_dwLowestVersion; //
  34. DWORD m_dwMajorVersion; // OS Major version. See OSVERSIONINFOEX
  35. DWORD m_dwMinorVersion; // OS Minor version. See OSVERSIONINFOEX
  36. WORD m_wSuiteMask; // Product suite mask. See OSVERSIONINFOEX
  37. BYTE m_bProductType; // OS product type. See OSVERSIONINFOEX
  38. BSTR m_bstrCSDVersion; // Service pack info. See OSVERSIONINFOEX
  39. SDriveLetterMapping m_dlmDriveLetterMapping; // Drive letter mappings
  40. WORD m_wProcessorArchitecture; // Processor architecture, x86, IA64, etc.
  41. WORD m_wProcessorLevel; // Processor type, 386, 486, etc
  42. DWORD m_cMaxNodes; // Max node count for this node.
  43. // IExtendObjectManager
  44. private: // Methods
  45. CNodeInformation( void );
  46. ~CNodeInformation( void );
  47. STDMETHOD( HrInit )( void );
  48. public: // Methods
  49. static HRESULT S_HrCreateInstance( IUnknown ** ppunkOut );
  50. // IUnknown
  51. STDMETHOD( QueryInterface )( REFIID riidIn, LPVOID * ppvOut );
  52. STDMETHOD_( ULONG, AddRef )( void );
  53. STDMETHOD_( ULONG, Release )( void );
  54. // IClusCfgNodeInfo
  55. STDMETHOD( GetName )( BSTR * pbstrNameOut );
  56. STDMETHOD( SetName )( LPCWSTR bstrNameIn );
  57. STDMETHOD( IsMemberOfCluster )( void );
  58. STDMETHOD( GetClusterConfigInfo )( IClusCfgClusterInfo ** ppClusCfgClusterInfoOut );
  59. STDMETHOD( GetOSVersion )(
  60. DWORD * pdwMajorVersionOut,
  61. DWORD * pdwMinorVersionOut,
  62. WORD * pwSuiteMaskOut,
  63. BYTE * pbProductTypeOut,
  64. BSTR * pbstrCSDVersionOut
  65. );
  66. STDMETHOD( GetClusterVersion )( DWORD * pdwNodeHighestVersion, DWORD * pdwNodeLowestVersion );
  67. STDMETHOD( GetDriveLetterMappings )( SDriveLetterMapping * pdlmDriveLetterUsageOut );
  68. STDMETHOD( GetMaxNodeCount )( DWORD * pcMaxNodesOut );
  69. STDMETHOD( GetProcessorInfo )( WORD * pwProcessorArchitectureOut, WORD * wProcessorLevelOut );
  70. // IGatherData
  71. STDMETHOD( Gather )( OBJECTCOOKIE cookieParentIn, IUnknown * punkIn );
  72. // IExtendObjectManager
  73. STDMETHOD( FindObject )(
  74. OBJECTCOOKIE cookieIn
  75. , REFCLSID rclsidTypeIn
  76. , LPCWSTR pcszNameIn
  77. , LPUNKNOWN * ppunkOut
  78. );
  79. }; //*** class CNodeInformation