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.

665 lines
21 KiB

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