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.

659 lines
20 KiB

  1. [uuid(226c9290-dd96-11d3-a120-00105a1f515a)]
  2. library WbemUtilities_v1
  3. {
  4. importlib("stdole32.tlb");
  5. typedef [v1_enum] enum tag_WBEM_PATH_STATUS_FLAG
  6. {
  7. WBEMPATH_INFO_ANON_LOCAL_MACHINE = 0x1, // <path has \\. as server name>
  8. WBEMPATH_INFO_HAS_MACHINE_NAME = 0x2, // <not a dot>
  9. WBEMPATH_INFO_IS_CLASS_REF = 0x4, // <a path to a classs, not a path to an instance>
  10. WBEMPATH_INFO_IS_INST_REF = 0x8, // <a path to an instance>
  11. WBEMPATH_INFO_HAS_SUBSCOPES = 0x10, // <true if a subscope is present>
  12. WBEMPATH_INFO_IS_COMPOUND = 0x20, // <true if compound key is used>
  13. WBEMPATH_INFO_HAS_V2_REF_PATHS = 0x40, // <true if V2-style ref paths are used>
  14. WBEMPATH_INFO_HAS_IMPLIED_KEY = 0x80, // <true if keynames are missing somewhere>
  15. WBEMPATH_INFO_CONTAINS_SINGLETON = 0x100, // <true if one or more singletons>
  16. WBEMPATH_INFO_V1_COMPLIANT = 0x200, // <true if path is WBEM-V1-compliant>
  17. WBEMPATH_INFO_V2_COMPLIANT = 0x400, // <true if path is WBEM-V2-compliant>
  18. WBEMPATH_INFO_CIM_COMPLIANT = 0x800, // <true if path is CIM-compliant>
  19. WBEMPATH_INFO_IS_SINGLETON = 0x1000, // <a path to a singleton>
  20. WBEMPATH_INFO_IS_PARENT = 0x2000, // <path is just "..">
  21. WBEMPATH_INFO_SERVER_NAMESPACE_ONLY = 0x4000, // <path is just "..">
  22. WBEMPATH_INFO_NATIVE_PATH = 0X8000,
  23. WBEMPATH_INFO_WMI_PATH = 0X10000,
  24. WBEMPATH_INFO_PATH_HAD_SERVER = 0X20000, // server name is present and was not set by default
  25. } tag_WBEM_PATH_STATUS_FLAG;
  26. typedef [v1_enum] enum tag_WBEM_PATH_CREATE_FLAG
  27. {
  28. WBEMPATH_CREATE_ACCEPT_RELATIVE = 0x1,
  29. WBEMPATH_CREATE_ACCEPT_ABSOLUTE = 0x2,
  30. WBEMPATH_CREATE_ACCEPT_ALL = 0x4,
  31. WBEMPATH_TREAT_SINGLE_IDENT_AS_NS = 0x8,
  32. } tag_WBEM_PATH_CREATE_FLAG;
  33. // A flag of 0 will get the namespace and relative part
  34. typedef [v1_enum] enum tag_WBEM_GET_TEXT_FLAGS
  35. {
  36. WBEMPATH_COMPRESSED = 0x1, // Obsolete, dont use
  37. WBEMPATH_GET_RELATIVE_ONLY = 0X2, // gets relative path
  38. WBEMPATH_GET_SERVER_TOO = 0X4, // gets everything
  39. WBEMPATH_GET_SERVER_AND_NAMESPACE_ONLY = 0X8, // gets server and namespace
  40. WBEMPATH_GET_NAMESPACE_ONLY = 0X10, // gets just namespace
  41. WBEMPATH_GET_ORIGINAL = 0X20, // returns whatever was passed in
  42. } tag_WBEM_GET_TEXT_FLAGS;
  43. typedef [v1_enum] enum tag_WBEM_GET_KEY_FLAGS
  44. {
  45. WBEMPATH_TEXT = 0x1,
  46. WBEMPATH_QUOTEDTEXT = 0X2
  47. } tag_WBEM_GET_KEY_FLAGS;
  48. //*******************************************************************
  49. // NOT CoCreatable; get this from IWbemPath
  50. [local, object, uuid(9AE62877-7544-4bb0-AA26-A13824659ED6)]
  51. interface IWbemPathKeyList : IUnknown
  52. {
  53. HRESULT GetCount(
  54. [out] ULONG * puKeyCount
  55. );
  56. HRESULT SetKey(
  57. [in, string] LPCWSTR wszName,
  58. [in] ULONG uFlags, // Add flag for SINGLETON
  59. [in] ULONG uCimType, // Implies the size
  60. [in] LPVOID pKeyVal
  61. );
  62. HRESULT SetKey2(
  63. [in, string] LPCWSTR wszName,
  64. [in] ULONG uFlags, // Add flag for SINGLETON
  65. [in] ULONG uCimType,
  66. [in] VARIANT * pKeyVal
  67. );
  68. HRESULT GetKey(
  69. [in] ULONG uKeyIx,
  70. [in] ULONG uFlags, // Add flag for SINGLETON
  71. [in,out] ULONG * puNameBufSize, // In bytes; must be large enough for UNICODE null
  72. [in,out] LPWSTR pszKeyName, // May be NULL for implicit keys
  73. [in,out] ULONG * puKeyValBufSize, // In Bytes, includes double NULL
  74. [in,out] LPVOID pKeyVal, // Key Val
  75. [out] ULONG *puApparentCimType // One of CIM_SINT32, CIM_SINT64, CIM_STRING, etc.
  76. );
  77. HRESULT GetKey2(
  78. [in] ULONG uKeyIx,
  79. [in] ULONG uFlags, // Add flag for SINGLETON
  80. [in,out] ULONG * puNameBufSize, // In bytes; must be large enough for UNICODE null
  81. [in,out] LPWSTR pszKeyName, // May be NULL for implicit keys
  82. [in,out] VARIANT * pKeyValue, // In Bytes, includes double NULL
  83. [out] ULONG *puApparentCimType // One of CIM_SINT32, CIM_SINT64, CIM_STRING, etc.
  84. );
  85. HRESULT RemoveKey(
  86. [in, string] LPCWSTR wszName,
  87. [in] ULONG uFlags
  88. );
  89. HRESULT RemoveAllKeys(
  90. [in] ULONG uFlags
  91. );
  92. HRESULT MakeSingleton([in] boolean bSet);
  93. // WBEMPATH_INFO_IS_COMPOUND <true if compound key is used
  94. // WBEMPATH_INFO_HAS_V2_REF_PATHS <true if V2-style ref paths are used
  95. // WBEMPATH_INFO_HAS_IMPLIED_KEY <true if keynames are missing somewhere
  96. // WBEMPATH_INFO_CONTAINS_SINGLETON <true if one or more singletons
  97. HRESULT GetInfo(
  98. [in] ULONG uRequestedInfo,
  99. [out] ULONGLONG *puResponse
  100. );
  101. HRESULT GetText(
  102. [in] long lFlags, // tag_WBEM_GET_KEY_FLAGS
  103. [in,out] ULONG * puBuffLength,
  104. [in, out, string] LPWSTR pszText
  105. );
  106. };
  107. //*******************************************************************
  108. // CoCreatable
  109. [local, object, uuid(3BC15AF2-736C-477e-9E51-238AF8667DCC)]
  110. interface IWbemPath : IUnknown
  111. {
  112. HRESULT SetText(
  113. [in] ULONG uMode, // see tag_WBEM_PATH_CREATE_FLAG
  114. [in] LPCWSTR pszPath
  115. );
  116. HRESULT GetText(
  117. [in] long lFlags, // see tag_WBEM_GET_TEXT_FLAGS
  118. [in,out] ULONG * puBuffLength,
  119. [in, out, string] LPWSTR pszText
  120. );
  121. // Path tests
  122. // ==========
  123. HRESULT GetInfo(
  124. [in] ULONG uRequestedInfo, // zero for now
  125. [out] ULONGLONG *puResponse // see tag_WBEM_PATH_STATUS_FLAG
  126. );
  127. // Server access
  128. // =============
  129. HRESULT SetServer(
  130. [in, string] LPCWSTR Name
  131. );
  132. HRESULT GetServer(
  133. [in,out] ULONG * puNameBufLength,
  134. [in, out, string] LPWSTR pName
  135. );
  136. // Namespace access. Example, root\default, root is 0, 1 is def
  137. // =============================================================
  138. HRESULT GetNamespaceCount(
  139. [out] ULONG* puCount
  140. );
  141. HRESULT SetNamespaceAt(
  142. [in] ULONG uIndex,
  143. [in, string] LPCWSTR pszName
  144. );
  145. HRESULT GetNamespaceAt(
  146. [in] ULONG uIndex,
  147. [in,out] ULONG * puNameBufLength,
  148. [in, out, string] LPWSTR pName
  149. );
  150. HRESULT RemoveNamespaceAt(
  151. [in] ULONG uIndex
  152. );
  153. HRESULT RemoveAllNamespaces(
  154. );
  155. //
  156. // Scope manipulators. The leftmost scope is 0
  157. // ============================================
  158. HRESULT GetScopeCount(
  159. [out] ULONG *puCount
  160. );
  161. HRESULT SetScope(
  162. [in] ULONG uIndex,
  163. [in] LPWSTR pszClass
  164. );
  165. HRESULT SetScopeFromText(
  166. [in] ULONG uIndex,
  167. [in] LPWSTR pszText
  168. );
  169. HRESULT GetScope(
  170. [in] ULONG uIndex,
  171. [in,out] ULONG * puClassNameBufSize,
  172. [in,out] LPWSTR pszClass,
  173. [out] IWbemPathKeyList **pKeyList
  174. );
  175. HRESULT GetScopeAsText(
  176. [in] ULONG uIndex,
  177. [in,out] ULONG * puTextBufSize,
  178. [in,out] LPWSTR pszText
  179. );
  180. HRESULT RemoveScope(
  181. [in] ULONG uIndex
  182. );
  183. HRESULT RemoveAllScopes(
  184. );
  185. // General class and key access routines
  186. // =====================================
  187. HRESULT SetClassName(
  188. [in, string] LPCWSTR Name
  189. );
  190. HRESULT GetClassName(
  191. [in,out] ULONG * puBuffLength,
  192. [in, out, string] LPWSTR pszName
  193. );
  194. HRESULT GetKeyList(
  195. [out] IWbemPathKeyList ** pOut
  196. );
  197. HRESULT CreateClassPart(
  198. [in] long lFlags,
  199. [in, string] LPCWSTR Name
  200. );
  201. HRESULT DeleteClassPart(
  202. [in] long lFlags
  203. );
  204. BOOL IsRelative(
  205. [in, string] LPWSTR wszMachine,
  206. [in, string] LPWSTR wszNamespace
  207. );
  208. BOOL IsRelativeOrChild(
  209. [in, string] LPWSTR wszMachine,
  210. [in, string] LPWSTR wszNamespace,
  211. [in] long lFlags
  212. );
  213. BOOL IsLocal(
  214. [in, string] LPCWSTR wszMachine
  215. );
  216. BOOL IsSameClassName(
  217. [in, string] LPCWSTR wszClass
  218. );
  219. };
  220. //***********************************************************************
  221. //
  222. [restricted, uuid(cf4cc405-e2c5-4ddd-b3ce-5e7582d8c9fa)]
  223. coclass WbemDefPath
  224. {
  225. interface IWbemPath;
  226. };
  227. interface IWbemQuery;
  228. [uuid(EAC8A024-21E2-4523-AD73-A71A0AA2F56A)]
  229. coclass WbemQuery
  230. {
  231. interface IWbemQuery;
  232. };
  233. };
  234. //*******************************************************************
  235. // Query parser & analysis interfaces
  236. typedef enum
  237. {
  238. WMIQ_ANALYSIS_RPN_SEQUENCE = 0x1,
  239. WMIQ_ANALYSIS_ASSOC_QUERY = 0x2,
  240. WMIQ_ANALYSIS_PROP_ANALYSIS_MATRIX = 0x3,
  241. WMIQ_ANALYSIS_QUERY_TEXT = 0x4,
  242. WMIQ_ANALYSIS_RESERVED = 0x8000000
  243. } WMIQ_ANALYSIS_TYPE;
  244. typedef enum
  245. {
  246. // Group 1
  247. WMIQ_RPN_TOKEN_EXPRESSION = 1,
  248. WMIQ_RPN_TOKEN_AND = 2,
  249. WMIQ_RPN_TOKEN_OR = 3,
  250. WMIQ_RPN_TOKEN_NOT = 4,
  251. // Group 2
  252. WMIQ_RPN_OP_UNDEFINED = 0,
  253. WMIQ_RPN_OP_EQ = 1,
  254. WMIQ_RPN_OP_NE = 2,
  255. WMIQ_RPN_OP_GE = 3,
  256. WMIQ_RPN_OP_LE = 4,
  257. WMIQ_RPN_OP_LT = 5,
  258. WMIQ_RPN_OP_GT = 6,
  259. WMIQ_RPN_OP_LIKE = 7,
  260. WMIQ_RPN_OP_ISA = 8,
  261. WMIQ_RPN_OP_ISNOTA = 9,
  262. // Group 3
  263. WMIQ_RPN_LEFT_PROPERTY_NAME = 0x1,
  264. WMIQ_RPN_RIGHT_PROPERTY_NAME = 0x2,
  265. WMIQ_RPN_CONST2 = 0x4,
  266. WMIQ_RPN_CONST = 0x8,
  267. WMIQ_RPN_RELOP = 0x10,
  268. WMIQ_RPN_LEFT_FUNCTION = 0x20,
  269. WMIQ_RPN_RIGHT_FUNCTION = 0x40,
  270. // Group 4
  271. WMIQ_RPN_GET_TOKEN_TYPE = 1, // Returns Group 1 ULONG value
  272. WMIQ_RPN_GET_EXPR_SHAPE = 2, // Returns Group 3 ULONG mask
  273. WMIQ_RPN_GET_LEFT_FUNCTION = 3, // Returns LPWSTR
  274. WMIQ_RPN_GET_RIGHT_FUNCTION = 4, // Returns LPWSTR
  275. WMIQ_RPN_GET_RELOP = 5, // Returns a Group 2 ULONG
  276. // Group 5
  277. WMIQ_RPN_NEXT_TOKEN = 1,
  278. // Group 6 (FROM clause options)
  279. WMIQ_RPN_FROM_UNARY = 0x1,
  280. WMIQ_RPN_FROM_PATH = 0x2,
  281. WMIQ_RPN_FROM_CLASS_LIST = 0x4
  282. } WMIQ_RPN_TOKEN_FLAGS;
  283. typedef enum
  284. {
  285. WMIQ_ASSOCQ_ASSOCIATORS = 0x1,
  286. WMIQ_ASSOCQ_REFERENCES = 0x2,
  287. WMIQ_ASSOCQ_RESULTCLASS = 0x4,
  288. WMIQ_ASSOCQ_ASSOCCLASS = 0x8,
  289. WMIQ_ASSOCQ_ROLE = 0x10,
  290. WMIQ_ASSOCQ_RESULTROLE = 0x20,
  291. WMIQ_ASSOCQ_REQUIREDQUALIFIER = 0x40,
  292. WMIQ_ASSOCQ_REQUIREDASSOCQUALIFIER = 0x80,
  293. WMIQ_ASSOCQ_CLASSDEFSONLY = 0x100,
  294. WMIQ_ASSOCQ_KEYSONLY = 0x200,
  295. WMIQ_ASSOCQ_SCHEMAONLY = 0x400,
  296. WMIQ_ASSOCQ_CLASSREFSONLY = 0x800
  297. } WMIQ_ASSOCQ_FLAGS;
  298. // **********************************************************************
  299. //
  300. typedef struct tag_SWbemQueryQualifiedName
  301. {
  302. ULONG m_uVersion;
  303. ULONG m_uTokenType;
  304. ULONG m_uNameListSize;
  305. LPCWSTR *m_ppszNameList;
  306. BOOL m_bArraysUsed;
  307. BOOL *m_pbArrayElUsed;
  308. ULONG *m_puArrayIndex;
  309. } SWbemQueryQualifiedName;
  310. // **********************************************************************
  311. //
  312. typedef union tag_SWbemRpnConst
  313. {
  314. LPCWSTR m_pszStrVal; // VT_LPWSTR
  315. BOOL m_bBoolVal; // VT_BOOL
  316. LONG m_lLongVal; // VT_I4
  317. ULONG m_uLongVal; // VT_UI4
  318. double m_dblVal; // VT_R8
  319. __int64 m_lVal64; // VT_I8
  320. __int64 m_uVal64; // VT_UI8
  321. } SWbemRpnConst;
  322. // **********************************************************************
  323. // RPN token for normal queries
  324. typedef struct tag_SWbemRpnQueryToken
  325. {
  326. ULONG m_uVersion;
  327. ULONG m_uTokenType;
  328. ULONG m_uSubexpressionShape;
  329. ULONG m_uOperator;
  330. SWbemQueryQualifiedName *m_pRightIdent;
  331. SWbemQueryQualifiedName *m_pLeftIdent;
  332. ULONG m_uConstApparentType; // VT_
  333. SWbemRpnConst m_Const;
  334. // Const2 used only for BETWEEN
  335. ULONG m_uConst2ApparentType; // VT_
  336. SWbemRpnConst m_Const2;
  337. LPCWSTR m_pszRightFunc;
  338. LPCWSTR m_pszLeftFunc;
  339. } SWbemRpnQueryToken;
  340. typedef struct tag_SWbemRpnTokenList
  341. {
  342. ULONG m_uVersion;
  343. ULONG m_uTokenType;
  344. ULONG m_uNumTokens;
  345. } SWbemRpnTokenList;
  346. typedef enum tag_WMIQ_LANGUAGE_FEATURES
  347. {
  348. // The LF1 corresponds to the integer value. Do not alter!
  349. WMIQ_LF1_BASIC_SELECT = 1, // *
  350. WMIQ_LF2_CLASS_NAME_IN_QUERY = 2, // *
  351. WMIQ_LF3_STRING_CASE_FUNCTIONS = 3, // *
  352. WMIQ_LF4_PROP_TO_PROP_TESTS = 4, // *
  353. WMIQ_LF5_COUNT_STAR = 5,
  354. WMIQ_LF6_ORDER_BY = 6, // *
  355. WMIQ_LF7_DISTINCT = 7,
  356. WMIQ_LF8_ISA = 8, // *
  357. WMIQ_LF9_THIS = 9, // *
  358. WMIQ_LF10_COMPEX_SUBEXPRESSIONS = 10,
  359. WMIQ_LF11_ALIASING = 11,
  360. WMIQ_LF12_GROUP_BY_HAVING = 12, // *
  361. WMIQ_LF13_WMI_WITHIN = 13, // *
  362. WMIQ_LF14_SQL_WRITE_OPERATIONS = 14,
  363. WMIQ_LF15_GO = 15,
  364. WMIQ_LF16_SINGLE_LEVEL_TRANSACTIONS = 16,
  365. WMIQ_LF17_QUALIFIED_NAMES = 17, // *
  366. WMIQ_LF18_ASSOCIATONS = 18, // *
  367. WMIQ_LF19_SYSTEM_PROPERTIES = 19,
  368. WMIQ_LF20_EXTENDED_SYSTEM_PROPERTIES = 20,
  369. WMIQ_LF21_SQL89_JOINS = 21,
  370. WMIQ_LF22_SQL92_JOINS = 22,
  371. WMIQ_LF23_SUBSELECTS = 23,
  372. WMIQ_LF24_UMI_EXTENSIONS = 24,
  373. WMIQ_LF25_DATEPART = 25, // *
  374. WMIQ_LF26_LIKE = 26, // *
  375. WMIQ_LF27_CIM_TEMPORAL_CONSTRUCTS = 27, // *
  376. WMIQ_LF28_STANDARD_AGGREGATES = 28,
  377. WMIQ_LF29_MULTI_LEVEL_ORDER_BY = 29,
  378. WMIQ_LF30_WMI_PRAGMAS = 30,
  379. WMIQ_LF31_QUALIFIER_TESTS = 31,
  380. WMIQ_LF32_SP_EXECUTE = 32,
  381. WMIQ_LF33_ARRAY_ACCESS = 33, // *
  382. WMIQ_LF34_UNION = 34,
  383. WMIQ_LF35_COMPLEX_SELECT_TARGET = 35,
  384. WMIQ_LF36_REFERENCE_TESTS = 36,
  385. WMIQ_LF37_SELECT_INTO = 37,
  386. WMIQ_LF38_BASIC_DATETIME_TESTS = 38,
  387. WMIQ_LF39_COUNT_COLUMN = 39,
  388. WMIQ_LF40_BETWEEN = 40,
  389. WMIQ_LF_LAST = 40
  390. } WMIQ_LANGUAGE_FEATURES;
  391. typedef enum tag_WMIQ_RPNQ_FEATURE
  392. {
  393. WMIQ_RPNF_WHERE_CLAUSE_PRESENT = 0x1, // *
  394. WMIQ_RPNF_QUERY_IS_CONJUNCTIVE = 0x2, // *
  395. WMIQ_RPNF_QUERY_IS_DISJUNCTIVE = 0x4, // *
  396. WMIQ_RPNF_PROJECTION = 0x8, // *
  397. WMIQ_RPNF_FEATURE_SELECT_STAR = 0x10, // *
  398. WMIQ_RPNF_EQUALITY_TESTS_ONLY = 0x20, // *
  399. WMIQ_RPNF_COUNT_STAR = 0x40, // *
  400. WMIQ_RPNF_QUALIFIED_NAMES_USED = 0x80, // *
  401. WMIQ_RPNF_SYSPROP_CLASS_USED = 0x100, // *
  402. WMIQ_RPNF_PROP_TO_PROP_TESTS = 0x200, // *
  403. WMIQ_RPNF_ORDER_BY = 0x400, // *
  404. WMIQ_RPNF_ISA_USED = 0x800, // *
  405. WMIQ_RPNF_GROUP_BY_HAVING = 0x1000, // *
  406. WMIQ_RPNF_ARRAY_ACCESS_USED = 0x2000, // *
  407. } WMIQ_RPNF_FEATURE;
  408. typedef struct tag_SWbemRpnEncodedQuery
  409. {
  410. ULONG m_uVersion;
  411. ULONG m_uTokenType;
  412. // General query features
  413. // ======================
  414. unsigned __int64 m_uParsedFeatureMask;
  415. // Overall language features encountered
  416. // ======================================
  417. ULONG m_uDetectedArraySize;
  418. ULONG *m_puDetectedFeatures; // Array of LFn_ constants
  419. // Values being selected if WMIQ_RPNF_PROJECTION is set
  420. // =====================================================
  421. ULONG m_uSelectListSize;
  422. SWbemQueryQualifiedName **m_ppSelectList;
  423. // FROM clause
  424. // ===========
  425. ULONG m_uFromTargetType; // WMIQ_RPN_FROM_ constants
  426. LPCWSTR m_pszOptionalFromPath; // NULL if not used
  427. ULONG m_uFromListSize;
  428. LPCWSTR *m_ppszFromList;
  429. // Where clause
  430. // ============
  431. ULONG m_uWhereClauseSize;
  432. SWbemRpnQueryToken **m_ppRpnWhereClause;
  433. // WITHIN value
  434. // ============
  435. double m_dblWithinPolling;
  436. double m_dblWithinWindow;
  437. // ORDER BY
  438. // ========
  439. ULONG m_uOrderByListSize;
  440. LPCWSTR *m_ppszOrderByList;
  441. ULONG *m_uOrderDirectionEl;
  442. } SWbemRpnEncodedQuery;
  443. // **********************************************************************
  444. typedef struct tag_SWbemAnalysisMatrix
  445. {
  446. ULONG m_uVersion;
  447. ULONG m_uMatrixType;
  448. LPCWSTR m_pszProperty;
  449. ULONG m_uPropertyType;
  450. ULONG m_uEntries;
  451. LPVOID *m_pValues;
  452. BOOL *m_pbTruthTable;
  453. } SWbemAnalysisMatrix;
  454. typedef struct tag_SWbemAnalysisMatrixList
  455. {
  456. ULONG m_uVersion;
  457. ULONG m_uMatrixType;
  458. ULONG m_uNumMatrices;
  459. SWbemAnalysisMatrix *m_pMatrices;
  460. } SWbemAnalysisMatrixList;
  461. // **********************************************************************
  462. // Associators/ References queries
  463. typedef struct tag_SWbemAssocQueryInf
  464. {
  465. ULONG m_uVersion;
  466. ULONG m_uAnalysisType;
  467. ULONG m_uFeatureMask;
  468. IWbemPath *m_pPath;
  469. LPWSTR m_pszPath;
  470. LPWSTR m_pszQueryText;
  471. LPWSTR m_pszResultClass;
  472. LPWSTR m_pszAssocClass;
  473. LPWSTR m_pszRole;
  474. LPWSTR m_pszResultRole;
  475. LPWSTR m_pszRequiredQualifier;
  476. LPWSTR m_pszRequiredAssocQualifier;
  477. } SWbemAssocQueryInf;
  478. [local, object, uuid(81166f58-dd98-11d3-a120-00105a1f515a)]
  479. interface IWbemQuery : IUnknown
  480. {
  481. HRESULT Empty();
  482. HRESULT SetLanguageFeatures(
  483. [in] ULONG uFlags,
  484. [in] ULONG uArraySize,
  485. [in] ULONG *puFeatures
  486. );
  487. // If not called, all features are supported
  488. HRESULT TestLanguageFeatures(
  489. [in] ULONG uFlags,
  490. [in,out] ULONG *uArraySize,
  491. [out] ULONG *puFeatures
  492. );
  493. HRESULT Parse(
  494. [in] LPCWSTR pszLang,
  495. [in] LPCWSTR pszQuery,
  496. [in] ULONG uFlags
  497. );
  498. HRESULT GetAnalysis(
  499. [in] ULONG uAnalysisType,
  500. [in] ULONG uFlags,
  501. [out] LPVOID *pAnalysis
  502. );
  503. HRESULT FreeMemory(
  504. [in] LPVOID pMem
  505. );
  506. HRESULT GetQueryInfo(
  507. [in] ULONG uAnalysisType,
  508. [in] ULONG uInfoId,
  509. [in] ULONG uBufSize,
  510. [out] LPVOID pDestBuf
  511. );
  512. };