windows-nt/Source/XPSP1/NT/admin/wmi/wbem/common/idl/wmiutils2.idl
2020-09-26 16:20:57 +08:00

625 lines
18 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[uuid(226c9290-dd96-11d3-a120-00105a1f515a)]
library WbemUtilities_v1
{
importlib("stdole32.tlb");
typedef [v1_enum] enum tag_WBEM_PATH_STATUS_FLAG
{
WBEMPATH_INFO_ANON_LOCAL_MACHINE = 0x1, // <path has \\. as server name>
WBEMPATH_INFO_HAS_MACHINE_NAME = 0x2, // <not a dot>
WBEMPATH_INFO_IS_CLASS_REF = 0x4, // <a path to a classs, not a path to an instance>
WBEMPATH_INFO_IS_INST_REF = 0x8, // <a path to an instance>
WBEMPATH_INFO_HAS_SUBSCOPES = 0x10, // <true if a subscope is present>
WBEMPATH_INFO_IS_COMPOUND = 0x20, // <true if compound key is used>
WBEMPATH_INFO_HAS_V2_REF_PATHS = 0x40, // <true if V2-style ref paths are used>
WBEMPATH_INFO_HAS_IMPLIED_KEY = 0x80, // <true if keynames are missing somewhere>
WBEMPATH_INFO_CONTAINS_SINGLETON = 0x100, // <true if one or more singletons>
WBEMPATH_INFO_V1_COMPLIANT = 0x200, // <true if path is WBEM-V1-compliant>
WBEMPATH_INFO_V2_COMPLIANT = 0x400, // <true if path is WBEM-V2-compliant>
WBEMPATH_INFO_CIM_COMPLIANT = 0x800, // <true if path is CIM-compliant>
WBEMPATH_INFO_IS_SINGLETON = 0x1000, // <a path to a singleton>
WBEMPATH_INFO_IS_PARENT = 0x2000, // <path is just "..">
WBEMPATH_INFO_SERVER_NAMESPACE_ONLY = 0x4000, // <path is just "..">
} tag_WBEM_PATH_STATUS_FLAG;
typedef [v1_enum] enum tag_WBEM_PATH_CREATE_FLAG
{
WBEMPATH_CREATE_ACCEPT_RELATIVE = 0x1,
WBEMPATH_CREATE_ACCEPT_ABSOLUTE = 0x2,
WBEMPATH_CREATE_ACCEPT_ALL = 0x4,
WBEMPATH_TREAT_SINGLE_IDENT_AS_NS = 0x8,
} tag_WBEM_PATH_CREATE_FLAG;
typedef [v1_enum] enum tag_WBEM_GET_TEXT_FLAGS
{
WBEMPATH_COMPRESSED = 0x1,
WBEMPATH_GET_RELATIVE_ONLY = 0X2,
WBEMPATH_GET_SERVER_TOO = 0X4,
WBEMPATH_GET_SERVER_AND_NAMESPACE_ONLY = 0X8,
} tag_WBEM_GET_TEXT_FLAGS;
typedef [v1_enum] enum tag_WBEM_GET_KEY_FLAGS
{
WBEMPATH_TEXT = 0x1,
WBEMPATH_QUOTEDTEXT = 0X2
} tag_WBEM_GET_KEY_FLAGS;
//*******************************************************************
// NOT CoCreatable; get this from IWbemPath
[local, object, uuid(9AE62877-7544-4bb0-AA26-A13824659ED6)]
interface IWbemPathKeyList : IUnknown
{
HRESULT GetCount(
[out] ULONG * puKeyCount
);
HRESULT SetKey(
[in, string] LPCWSTR wszName,
[in] ULONG uFlags, // Add flag for SINGLETON
[in] ULONG uCimType, // Implies the size
[in] LPVOID pKeyVal
);
HRESULT SetKey2(
[in, string] LPCWSTR wszName,
[in] ULONG uFlags, // Add flag for SINGLETON
[in] ULONG uCimType,
[in] VARIANT * pKeyVal
);
HRESULT GetKey(
[in] ULONG uKeyIx,
[in] ULONG uFlags, // Add flag for SINGLETON
[in,out] ULONG * puNameBufSize, // In bytes; must be large enough for UNICODE null
[in,out] LPWSTR pszKeyName, // May be NULL for implicit keys
[in,out] ULONG * puKeyValBufSize, // In Bytes, includes double NULL
[in,out] LPVOID pKeyVal, // Key Val
[out] ULONG *puApparentCimType // One of CIM_SINT32, CIM_SINT64, CIM_STRING, etc.
);
HRESULT GetKey2(
[in] ULONG uKeyIx,
[in] ULONG uFlags, // Add flag for SINGLETON
[in,out] ULONG * puNameBufSize, // In bytes; must be large enough for UNICODE null
[in,out] LPWSTR pszKeyName, // May be NULL for implicit keys
[in,out] VARIANT * pKeyValue, // In Bytes, includes double NULL
[out] ULONG *puApparentCimType // One of CIM_SINT32, CIM_SINT64, CIM_STRING, etc.
);
HRESULT RemoveKey(
[in, string] LPCWSTR wszName,
[in] ULONG uFlags
);
HRESULT RemoveAllKeys(
[in] ULONG uFlags
);
HRESULT MakeSingleton([in] boolean bSet);
// WBEMPATH_INFO_IS_COMPOUND <true if compound key is used
// WBEMPATH_INFO_HAS_V2_REF_PATHS <true if V2-style ref paths are used
// WBEMPATH_INFO_HAS_IMPLIED_KEY <true if keynames are missing somewhere
// WBEMPATH_INFO_CONTAINS_SINGLETON <true if one or more singletons
HRESULT GetInfo(
[in] ULONG uRequestedInfo,
[out] ULONGLONG *puResponse
);
HRESULT GetText(
[in] long lFlags, // tag_WBEM_GET_KEY_FLAGS
[in,out] ULONG * puBuffLength,
[in, out, string] LPWSTR pszText
);
};
//*******************************************************************
// CoCreatable
[local, object, uuid(3BC15AF2-736C-477e-9E51-238AF8667DCC)]
interface IWbemPath : IUnknown
{
HRESULT SetText(
[in] ULONG uMode, // see tag_WBEM_PATH_CREATE_FLAG
[in] LPCWSTR pszPath
);
HRESULT GetText(
[in] long lFlags, // see tag_WBEM_GET_TEXT_FLAGS
[in,out] ULONG * puBuffLength,
[in, out, string] LPWSTR pszText
);
// Path tests
// ==========
HRESULT GetInfo(
[in] ULONG uRequestedInfo, // zero for now
[out] ULONGLONG *puResponse // see tag_WBEM_PATH_STATUS_FLAG
);
// Server access
// =============
HRESULT SetServer(
[in, string] LPCWSTR Name
);
HRESULT GetServer(
[in,out] ULONG * puNameBufLength,
[in, out, string] LPWSTR pName
);
// Namespace access. Example, root\default, root is 0, 1 is def
// =============================================================
HRESULT GetNamespaceCount(
[out] ULONG* puCount
);
HRESULT SetNamespaceAt(
[in] ULONG uIndex,
[in, string] LPCWSTR pszName
);
HRESULT GetNamespaceAt(
[in] ULONG uIndex,
[in,out] ULONG * puNameBufLength,
[in, out, string] LPWSTR pName
);
HRESULT RemoveNamespaceAt(
[in] ULONG uIndex
);
HRESULT RemoveAllNamespaces(
);
//
// Scope manipulators. The leftmost scope is 0
// ============================================
HRESULT GetScopeCount(
[out] ULONG *puCount
);
HRESULT SetScope(
[in] ULONG uIndex,
[in] LPWSTR pszClass
);
HRESULT SetScopeFromText(
[in] ULONG uIndex,
[in] LPWSTR pszText
);
HRESULT GetScope(
[in] ULONG uIndex,
[in,out] ULONG * puClassNameBufSize,
[in,out] LPWSTR pszClass,
[out] IWbemPathKeyList **pKeyList
);
HRESULT GetScopeAsText(
[in] ULONG uIndex,
[in,out] ULONG * puTextBufSize,
[in,out] LPWSTR pszText
);
HRESULT RemoveScope(
[in] ULONG uIndex
);
HRESULT RemoveAllScopes(
);
// General class and key access routines
// =====================================
HRESULT SetClassName(
[in, string] LPCWSTR Name
);
HRESULT GetClassName(
[in,out] ULONG * puBuffLength,
[in, out, string] LPWSTR pszName
);
HRESULT GetKeyList(
[out] IWbemPathKeyList ** pOut
);
HRESULT CreateClassPart(
[in] long lFlags,
[in, string] LPCWSTR Name
);
HRESULT DeleteClassPart(
[in] long lFlags
);
};
//***********************************************************************
//
[restricted, uuid(cf4cc405-e2c5-4ddd-b3ce-5e7582d8c9fa)]
coclass WbemDefPath
{
interface IWbemPath;
};
interface IWbemQuery;
[uuid(EAC8A024-21E2-4523-AD73-A71A0AA2F56A)]
coclass WbemQuery
{
interface IWbemQuery;
};
};
//*******************************************************************
// Query parser & analysis interfaces
typedef enum
{
WMIQ_ANALYSIS_RPN_SEQUENCE = 0x1,
WMIQ_ANALYSIS_ASSOC_QUERY = 0x2,
WMIQ_ANALYSIS_PROP_ANALYSIS_MATRIX = 0x3
} WMIQ_ANALYSIS_TYPE;
typedef enum
{
// Group 1
// Returned by GetNodeType
WMIQ_RPN_TOKEN_EXPRESSION = 1,
WMIQ_RPN_TOKEN_AND = 2,
WMIQ_RPN_TOKEN_OR = 3,
WMIQ_RPN_TOKEN_NOT = 4,
// Group 2
WMIQ_RPN_OP_EQ = 1,
WMIQ_RPN_OP_NE = 2,
WMIQ_RPN_OP_EQGT = 3,
WMIQ_RPN_OP_EQLT = 4,
WMIQ_RPN_OP_LT = 5,
WMIQ_RPN_OP_GT = 6,
WMIQ_RPN_OP_LIKE = 7,
WMIQ_RPN_OP_ISA = 8,
WMIQ_RPN_OP_ISNOTA = 9,
// Group 3
WMIQ_RPN_LEFT_PROPERTY_NAME = 0x1,
WMIQ_RPN_RIGHT_PROPERTY_NAME = 0x2,
WMIQ_RPN_LEFT_CONST = 0x4,
WMIQ_RPN_RIGHT_CONST = 0x8,
WMIQ_RPN_RELOP = 0x10,
WMIQ_RPN_LEFT_FUNCTION = 0x20,
WMIQ_RPN_RIGHT_FUNCTION = 0x30,
// Group 4
WMIQ_RPN_GET_TOKEN_TYPE = 1, // Returns Group 1 ULONG value
WMIQ_RPN_GET_EXPR_SHAPE = 2, // Returns Group 3 ULONG mask
WMIQ_RPN_GET_LEFT_FUNCTION = 3, // Returns LPWSTR
WMIQ_RPN_GET_RIGHT_FUNCTION = 4, // Returns LPWSTR
WMIQ_RPN_GET_RELOP = 5, // Returns a Group 2 ULONG
// Group 5
WMIQ_RPN_NEXT_TOKEN = 1
} WMIQ_RPN_TOKEN_FLAGS;
typedef enum
{
WMIQ_ASSOCQ_ASSOCIATORS = 0x1,
WMIQ_ASSOCQ_REFERENCES = 0x2,
WMIQ_ASSOCQ_RESULTCLASS = 0x4,
WMIQ_ASSOCQ_ROLE = 0x8,
WMIQ_ASSOCQ_RESULTROLE = 0x10,
WMIQ_ASSOCQ_REQUIREDQUALIFIER = 0x20,
WMIQ_ASSOCQ_REQUIREDASSOCQUALIFIER = 0x40,
WMIQ_ASSOCQ_CLASSDEFSONLY = 0x80,
WMIQ_ASSOCQ_KEYSONLY = 0x100,
WMIQ_ASSOCQ_SCHEMAONLY = 0x200,
WMIQ_ASSOCQ_CLASSREFSONLY = 0x400
} WMIQ_ASSOCQ_FLAGS;
// **********************************************************************
//
typedef struct tag_SWmiQueryQualifiedName
{
ULONG m_uVersion;
ULONG m_uTokenType;
ULONG m_uNameCount;
LPCWSTR *m_pszNameList;
BOOL m_bArraysUsed;
BOOL *m_bArrayUsed;
ULONG *m_uArrayIndex;
} SWmiQueryQualifiedName;
// **********************************************************************
// RPN token for normal queries
typedef struct tag_SWbemRpnQueryToken
{
ULONG m_uVersion;
ULONG m_uTokenType;
ULONG m_uSubexpressionShape;
ULONG m_uOperator;
SWmiQueryQualifiedName *m_pRightIdent;
SWmiQueryQualifiedName *m_pLeftIdent;
ULONG m_uRightConstApparentType; // CIM_ type
LPVOID m_pRightConst;
LPVOID m_pLeftConst;
ULONG m_uLeftConstApparentType; // CIM_ type
LPCWSTR pszLeftFunc;
LPCWSTR pszRightFunc;
} SWbemRpnQueryToken;
typedef struct tag_SWbemRpnTokenList
{
ULONG m_uVersion;
ULONG m_uTokenType;
ULONG m_uNumTokens;
SWbemRpnQueryToken *m_pTokens;
} SWbemRpnTokenList;
typedef enum tag_WMIQ_LANGUAGE_FEATURES
{
// The LF1 corresponds to the integer value. Do not alter!
WMIQ_LF1_BASIC_SELECT = 1, // *
WMIQ_LF2_CLASS_NAME_IN_QUERY = 2, // *
WMIQ_LF3_STRING_CASE_FUNCTIONS = 3, // *
WMIQ_LF4_PROP_TO_PROP_TESTS = 4, // *
WMIQ_LF5_COUNT_STAR = 5,
WMIQ_LF6_ORDER_BY = 6, // *
WMIQ_LF7_DISTINCT = 7,
WMIQ_LF8_ISA = 8, // *
WMIQ_LF9_THIS = 9, // *
WMIQ_LF10_COMPEX_SUBEXPRESSIONS = 10,
WMIQ_LF11_ALIASING = 11,
WMIQ_LF12_GROUP_BY_HAVING = 12, // *
WMIQ_LF13_WMI_WITHIN = 13, // *
WMIQ_LF14_SQL_WRITE_OPERATIONS = 14,
WMIQ_LF15_GO = 15,
WMIQ_LF16_SINGLE_LEVEL_TRANSACTIONS = 16,
WMIQ_LF17_QUALIFIED_NAMES = 17, // *
WMIQ_LF18_ASSOCIATONS = 18, // *
WMIQ_LF19_SYSTEM_PROPERTIES = 19,
WMIQ_LF20_EXTENDED_SYSTEM_PROPERTIES = 20,
WMIQ_LF21_SQL89_JOINS = 21,
WMIQ_LF22_SQL92_JOINS = 22,
WMIQ_LF23_SUBSELECTS = 23,
WMIQ_LF24_UMI_EXTENSIONS = 24,
WMIQ_LF25_DATEPART = 25, // *
WMIQ_LF26_LIKE = 26, // *
WMIQ_LF27_CIM_TEMPORAL_CONSTRUCTS = 27, // *
WMIQ_LF28_STANDARD_AGGREGATES = 28,
WMIQ_LF29_MULTI_LEVEL_ORDER_BY = 29,
WMIQ_LF30_WMI_PRAGMAS = 30,
WMIQ_LF31_QUALIFIER_TESTS = 31,
WMIQ_LF32_SP_EXECUTE = 32,
WMIQ_LF33_ARRAY_ACCESS = 33, // *
WMIQ_LF34_UNION = 34,
WMIQ_LF35_COMPLEX_SELECT_TARGET = 35,
WMIQ_LF36_REFERENCE_TESTS = 36,
WMIQ_LF37_SELECT_INTO = 37,
WMIQ_LF38_BASIC_DATETIME_TESTS = 38,
WMIQ_LF_LAST = 39
} WMIQ_LANGUAGE_FEATURES;
typedef enum tag_WMIQ_RPNQ_FEATURE
{
WMIQ_RPNF_WHERE_CLAUSE_PRESENT = 0x1,
WMIQ_RPNF_QUERY_IS_CONJUNCTIVE = 0x2,
WMIQ_RPNF_QUERY_IS_DISJUNCTIVE = 0x4,
WMIQ_RPNF_PROJECTION = 0x8,
WMIQ_RPNF_FEATURE_SELECT_STAR = 0x10,
WMIQ_RPNF_EQUALITY_TESTS_ONLY = 0x20,
WMIQ_RPNF_COUNT_STAR = 0x40,
WMIQ_RPNF_QUALIFIED_NAMES_IN_SELECT = 0x80,
WMIQ_RPNF_QUALIFIED_NAMES_IN_WHERE = 0x100,
WMIQ_RPNF_PROP_TO_PROP_TESTS = 0x200,
WMIQ_RPNF_ORDER_BY = 0x400,
WMIQ_RPNF_ISA_USED = 0x800,
WMIQ_RPNF_ISNOTA_USED = 0x1000,
WMIQ_RPNF_GROUP_BY_HAVING = 0x2000,
WMIQ_RPNF_WITHIN_INTERVAL = 0x4000,
WMIQ_RPNF_WITHIN_AGGREGATE = 0x8000,
WMIQ_RPNF_SYSPROP_CLASS = 0x10000,
WMIQ_RPNF_REFERENCE_TESTS = 0x20000,
WMIQ_RPNF_DATETIME_TESTS = 0x40000,
WMIQ_RPNF_ARRAY_ACCESS = 0x80000,
WMIQ_RPNF_QUALIFIER_FILTER = 0x100000,
} WMIQ_RPNF_FEATURE;
typedef struct tag_SWbemRpnEncodedQuery
{
ULONG m_uVersion;
ULONG m_uTokenType;
// General query features
ULONGLONG m_uParsedFeatureMask; // 64-bit WMIQ_RPNF_ mask
// Overall language features encountered
ULONG m_uDetectedArraySize;
ULONG *m_puDetectedFeatures; // Array of LFn_ constants
// Values being selected if WMIQ_RPNF_PROJECTION is set
ULONG m_uSelectListLength;
SWmiQueryQualifiedName **m_pSelectList;
// Class being selected from
ULONG m_uSelectTargetType;
LPCWSTR m_pszSelectTarget;
// Where clause
SWbemRpnTokenList *m_pRpnWhereClause;
// WITHIN value
double m_dblWithinValue;
// ORDER BY
ULONG m_uOrderByListLength;
LPCWSTR *m_pszOrderByList;
} SWbemRpnEncodedQuery;
// **********************************************************************
typedef struct tag_SWbemAnalysisMatrix
{
ULONG m_uVersion;
ULONG m_uMatrixType;
LPCWSTR m_pszProperty;
ULONG m_uPropertyType;
ULONG m_uEntries;
LPVOID *m_pValues;
BOOL *m_pbTruthTable;
} SWbemAnalysisMatrix;
typedef struct tag_SWbemAnalysisMatrixList
{
ULONG m_uVersion;
ULONG m_uMatrixType;
ULONG m_uNumMatrices;
SWbemAnalysisMatrix *m_pMatrices;
} SWbemAnalysisMatrixList;
// **********************************************************************
// Associators/ References queries
typedef struct tag_SWbemAssocQueryInf
{
ULONG m_uVersion;
ULONG m_uAnalysisType;
ULONG m_uFeatureMask;
IWbemPath *m_pPath;
LPWSTR m_pszPath;
LPWSTR m_pszQueryText;
LPWSTR m_pszResultClass;
LPWSTR m_pszAssocClass;
LPWSTR m_pszRole;
LPWSTR m_pszResultRole;
LPWSTR m_pszRequiredQualifier;
LPWSTR m_pszRequiredAssocQualifier;
} SWbemAssocQueryInf;
[local, object, uuid(81166f58-dd98-11d3-a120-00105a1f515a)]
interface IWbemQuery : IUnknown
{
HRESULT Empty();
HRESULT SetLanguageFeatures(
[in] long lFlags,
[in] ULONG uArraySize,
[in] ULONG *puFeatures
);
HRESULT TestLanguageFeatures(
[in,out] ULONG *uArraySize,
[out] ULONG *puFeatures
);
HRESULT Parse(
[in] LPCWSTR pszLang,
[in] LPCWSTR pszQuery,
[in] ULONG uFlags
);
HRESULT GetAnalysis(
[in] ULONG uAnalysisType,
[in] ULONG uFlags,
[out] LPVOID *pAnalysis
);
HRESULT FreeMemory(
[in] LPVOID pMem
);
HRESULT GetQueryInfo(
[in] ULONG uAnalysisType,
[in] ULONG uInfoId,
[in] ULONG uBufSize,
[out] LPVOID pDestBuf
);
HRESULT AttachClassDef(
[in] REFIID riid,
[in, iid_is(riid)] LPVOID pClassDef
);
HRESULT TestObject(
[in] ULONG uTestType,
[in] ULONG uFlags,
[in] REFIID riid,
[in, iid_is(riid)] LPVOID pObj
);
HRESULT StringTest(
[in] ULONG uTestType,
[in] LPCWSTR pszTestStr,
[in] LPCWSTR pszExpr
);
};