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.

343 lines
6.5 KiB

  1. /////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1999 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // objectpath.h
  7. //
  8. // Implementation File:
  9. // objectpath.cpp
  10. //
  11. // Description:
  12. // Definition of the CObjpath class and other common class.
  13. //
  14. // Author:
  15. // Henry Wang (Henrywa) March 8, 2000
  16. //
  17. // Notes:
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #pragma once
  21. #include "common.h"
  22. #include <list>
  23. #include <string>
  24. #include "genlex.h" //wbem sdk header
  25. #include "objpath.h" //wbem sdk header
  26. using namespace std;
  27. class CPropertyValue
  28. {
  29. public:
  30. CPropertyValue();
  31. CPropertyValue(
  32. const CPropertyValue&
  33. );
  34. CPropertyValue& operator=(
  35. const CPropertyValue&
  36. );
  37. virtual ~CPropertyValue();
  38. wstring m_PropName;
  39. VARIANT m_PropValue;
  40. wstring m_Operator;
  41. };
  42. /////////////////////////////////////////////////////////////////////////////
  43. //++
  44. //
  45. // class CObjPath
  46. //
  47. // Description:
  48. // CObjpath class make it easier to work with Object path string
  49. //
  50. // Inheritance:
  51. //
  52. //
  53. //--
  54. /////////////////////////////////////////////////////////////////////////////
  55. class CObjPath
  56. {
  57. public:
  58. wstring GetObjectPathString();
  59. BOOL SetProperty(
  60. const WCHAR * wszName,
  61. //string & strValue
  62. const WCHAR * wszValue
  63. );
  64. BOOL AddProperty(
  65. const WCHAR*,
  66. string&
  67. );
  68. BOOL AddProperty(
  69. const WCHAR * wszName,
  70. const WCHAR * wszValue
  71. );
  72. BOOL AddProperty(
  73. const WCHAR * wszName,
  74. VARIANT * pvValue
  75. );
  76. BOOL AddProperty(
  77. const WCHAR * wszName,
  78. WORD wValue
  79. );
  80. BOOL SetServer(
  81. const WCHAR *
  82. );
  83. BOOL SetNameSpace(
  84. const WCHAR *wszValue
  85. );
  86. BOOL SetClass(
  87. const WCHAR *wszValue
  88. );
  89. wstring GetStringValueForProperty(
  90. const WCHAR* str
  91. );
  92. BOOL GetNumericValueForProperty(
  93. const WCHAR * wszName,
  94. WORD * wValue
  95. );
  96. wstring GetClassName(void);
  97. BOOL Init(
  98. const WCHAR* szObjPath
  99. );
  100. /* wstring m_Server;
  101. wstring m_NameSpace;
  102. wstring m_Class;
  103. list<CPropertyValue> m_PropList;
  104. */
  105. CObjPath();
  106. CObjPath(
  107. const CObjPath&
  108. );
  109. virtual ~CObjPath();
  110. protected:
  111. wstring m_Server;
  112. wstring m_NameSpace;
  113. wstring m_Class;
  114. list<CPropertyValue> m_PropList;
  115. };
  116. class CDomainNode
  117. {
  118. public:
  119. wstring wstrZoneName;
  120. wstring wstrNodeName;
  121. wstring wstrChildName;
  122. CDomainNode();
  123. ~CDomainNode();
  124. CDomainNode(
  125. const CDomainNode&
  126. );
  127. };
  128. /////////////////////////////////////////////////////////////////////////////
  129. //++
  130. //
  131. // class CObjPath
  132. //
  133. // Description:
  134. // base provider exception class
  135. //
  136. // Inheritance:
  137. // exception
  138. //
  139. //--
  140. /////////////////////////////////////////////////////////////////////////////
  141. class CDnsProvException : public exception
  142. {
  143. public:
  144. CDnsProvException(
  145. const char* ,
  146. DWORD = 0);
  147. CDnsProvException();
  148. ~CDnsProvException();
  149. CDnsProvException(
  150. const CDnsProvException&
  151. )
  152. throw();
  153. CDnsProvException& operator=(
  154. const CDnsProvException&
  155. ) throw();
  156. const char *what() const throw();
  157. DWORD GetErrorCode(void);
  158. protected:
  159. string m_strError;
  160. DWORD m_dwCode;
  161. };
  162. /////////////////////////////////////////////////////////////////////////////
  163. //++
  164. //
  165. // class CObjPath
  166. //
  167. // Description:
  168. // exception class specialized for set value exception
  169. //
  170. // Inheritance:
  171. // CDnsProvException
  172. //
  173. //--
  174. /////////////////////////////////////////////////////////////////////////////
  175. class CDnsProvSetValueException : public CDnsProvException
  176. {
  177. public:
  178. CDnsProvSetValueException();
  179. ~CDnsProvSetValueException();
  180. CDnsProvSetValueException(
  181. const WCHAR*
  182. );
  183. CDnsProvSetValueException(
  184. const CDnsProvSetValueException& rhs
  185. ) throw();
  186. CDnsProvSetValueException& operator=(
  187. const CDnsProvSetValueException& rhs
  188. ) throw();
  189. };
  190. /////////////////////////////////////////////////////////////////////////////
  191. //++
  192. //
  193. // class CObjPath
  194. //
  195. // Description:
  196. // exception class specialized for get value exception
  197. //
  198. // Inheritance:
  199. // CDnsProvException
  200. //
  201. //--
  202. /////////////////////////////////////////////////////////////////////////////
  203. class CDnsProvGetValueException : public CDnsProvException
  204. {
  205. public:
  206. CDnsProvGetValueException();
  207. ~CDnsProvGetValueException();
  208. CDnsProvGetValueException(
  209. const WCHAR*
  210. );
  211. CDnsProvGetValueException(
  212. const CDnsProvGetValueException& rhs
  213. ) throw();
  214. CDnsProvGetValueException& operator=(
  215. const CDnsProvGetValueException& rhs
  216. ) throw();
  217. };
  218. /////////////////////////////////////////////////////////////////////////////
  219. //++
  220. //
  221. // class CWbemClassObject
  222. //
  223. // Description:
  224. // Wrap for IWbemClassObject
  225. //
  226. //
  227. // Inheritance:
  228. //
  229. //
  230. //--
  231. /////////////////////////////////////////////////////////////////////////////
  232. class CWbemClassObject
  233. {
  234. protected:
  235. IWbemClassObject* m_pClassObject;
  236. VARIANT m_v;
  237. public:
  238. CWbemClassObject();
  239. CWbemClassObject(IWbemClassObject*);
  240. virtual ~CWbemClassObject();
  241. IWbemClassObject** operator&();
  242. SCODE SetProperty(
  243. LPCSTR pszValue,
  244. LPCWSTR wszPropName
  245. );
  246. SCODE SetProperty(
  247. DWORD dwValue,
  248. LPCWSTR wszPropName
  249. );
  250. SCODE SetProperty(
  251. UCHAR ucValue,
  252. LPCWSTR wszPropName
  253. );
  254. SCODE SetProperty(
  255. LPCWSTR pszValue,
  256. LPCWSTR wszPropName
  257. );
  258. SCODE SetProperty(
  259. wstring & wstrValue,
  260. LPCWSTR wszPropName
  261. );
  262. SCODE SetProperty(
  263. SAFEARRAY * psa,
  264. LPCWSTR wszPropName
  265. );
  266. SCODE SetProperty(
  267. DWORD * pdwValue,
  268. DWORD dwSize,
  269. LPCWSTR wszPropName
  270. );
  271. SCODE GetProperty(
  272. DWORD * dwValue,
  273. LPCWSTR wszPropName
  274. );
  275. SCODE GetProperty(
  276. wstring & wsStr,
  277. LPCWSTR wszPropName
  278. );
  279. SCODE GetProperty(
  280. string & strStr,
  281. LPCWSTR wszPropName
  282. );
  283. SCODE GetProperty(
  284. BOOL * bValue,
  285. LPCWSTR szPropName
  286. );
  287. SCODE GetProperty(
  288. SAFEARRAY** ,
  289. LPCWSTR);
  290. SCODE GetProperty(
  291. DWORD ** ppValue,
  292. DWORD * dwSize,
  293. LPCWSTR szPropName
  294. );
  295. SCODE GetProperty(
  296. DWORD Value[],
  297. DWORD *dwSize,
  298. LPCWSTR szPropName
  299. );
  300. SCODE GetProperty(
  301. VARIANT * pv,
  302. LPCWSTR wszPropName
  303. );
  304. SCODE GetMethod(
  305. BSTR name,
  306. LONG lFlag,
  307. IWbemClassObject** ppIN,
  308. IWbemClassObject** ppOut
  309. );
  310. SCODE SpawnInstance(
  311. LONG,
  312. IWbemClassObject**);
  313. IWbemClassObject* data() { return m_pClassObject;};
  314. };