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.

173 lines
3.6 KiB

  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1999-2000 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // CProvBase.cpp
  7. //
  8. // Description:
  9. // Implementation of CProvBase class
  10. //
  11. // Author:
  12. // Henry Wang (HenryWa) 24-AUG-1999
  13. //
  14. //
  15. //////////////////////////////////////////////////////////////////////////////
  16. #include "Pch.h"
  17. #include "ProvBase.h"
  18. //****************************************************************************
  19. //
  20. // CProvBase
  21. //
  22. //****************************************************************************
  23. //////////////////////////////////////////////////////////////////////////////
  24. //++
  25. //
  26. // CProvBase::CProvBase(
  27. // LPCWSTR pwszNameIn,
  28. // CWbemServices * pNamespaceIn
  29. // )
  30. //
  31. // Description:
  32. // Constructor.
  33. //
  34. // Arguments:
  35. // pwszNameIn -- Class name
  36. // pNamespaceIn -- Namespace
  37. //
  38. // Return Values:
  39. // None.
  40. //
  41. //--
  42. //////////////////////////////////////////////////////////////////////////////
  43. CProvBase::CProvBase(
  44. LPCWSTR pwszNameIn,
  45. CWbemServices * pNamespaceIn
  46. )
  47. : m_pNamespace( NULL )
  48. , m_pClass( NULL )
  49. {
  50. SCODE sc;
  51. m_pNamespace = pNamespaceIn;
  52. m_bstrClassName = pwszNameIn;
  53. sc = m_pNamespace->GetObject(
  54. m_bstrClassName,
  55. 0,
  56. 0,
  57. &m_pClass,
  58. NULL
  59. );
  60. // failed to construct object,
  61. if ( FAILED( sc ) )
  62. {
  63. throw CProvException( sc );
  64. }
  65. } //*** CProvBase::CProvBase()
  66. //////////////////////////////////////////////////////////////////////////////
  67. //++
  68. //
  69. // CProvBase::~CProvBase( void )
  70. //
  71. // Description:
  72. // Destructor.
  73. //
  74. // Arguments:
  75. // None.
  76. //
  77. // Return Values:
  78. // None.
  79. //
  80. //--
  81. //////////////////////////////////////////////////////////////////////////////
  82. CProvBase::~CProvBase( void )
  83. {
  84. if ( m_pClass != NULL )
  85. {
  86. m_pClass->Release();
  87. }
  88. } //*** CProvBase::~CProvBase()
  89. //****************************************************************************
  90. //
  91. // CProvBaseAssociation
  92. //
  93. //****************************************************************************
  94. //////////////////////////////////////////////////////////////////////////////
  95. //++
  96. //
  97. // void
  98. // CProvBaseAssociation::GetTypeName(
  99. // _bstr_t & rbstrClassNameOut,
  100. // _bstr_t bstrPropertyIn
  101. // )
  102. //
  103. // Description:
  104. // Get the type of a property.
  105. //
  106. // Arguments:
  107. // rbstrClassNameOut -- Receives type name string.
  108. // bstrPropertyIn -- Property name.
  109. //
  110. // Return Values:
  111. // None.
  112. //
  113. //--
  114. //////////////////////////////////////////////////////////////////////////////
  115. void
  116. CProvBaseAssociation::GetTypeName(
  117. _bstr_t & rbstrClassNameOut,
  118. _bstr_t bstrPropertyIn
  119. )
  120. {
  121. CError er;
  122. IWbemQualifierSet * pQualifier;
  123. _variant_t var;
  124. _bstr_t bstrTemp;
  125. LPCWSTR pwsz, pwsz1;
  126. er = m_pClass->GetPropertyQualifierSet(
  127. bstrPropertyIn,
  128. &pQualifier
  129. );
  130. if ( er != WBEM_S_NO_ERROR ) {
  131. return;
  132. }
  133. er = pQualifier->Get(
  134. PVD_WBEM_QUA_CIMTYPE,
  135. 0,
  136. &var,
  137. NULL
  138. );
  139. if ( er != WBEM_S_NO_ERROR ) {
  140. goto ERROR_EXIT;
  141. }
  142. bstrTemp = var;
  143. pwsz1 = bstrTemp;
  144. if (pwsz1==NULL)
  145. goto ERROR_EXIT;
  146. pwsz = wcschr( bstrTemp, L':' );
  147. if ( pwsz != NULL)
  148. {
  149. pwsz++;
  150. rbstrClassNameOut = pwsz;
  151. }
  152. ERROR_EXIT:
  153. pQualifier->Release();
  154. return;
  155. } //*** CProvBaseAssociation::GetTypeName()