660 lines
20 KiB
Plaintext
660 lines
20 KiB
Plaintext
|
|
||
|
|
||
|
[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 "..">
|
||
|
WBEMPATH_INFO_NATIVE_PATH = 0X8000,
|
||
|
WBEMPATH_INFO_WMI_PATH = 0X10000,
|
||
|
WBEMPATH_INFO_PATH_HAD_SERVER = 0X20000, // server name is present and was not set by default
|
||
|
} 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;
|
||
|
|
||
|
// A flag of 0 will get the namespace and relative part
|
||
|
|
||
|
typedef [v1_enum] enum tag_WBEM_GET_TEXT_FLAGS
|
||
|
{
|
||
|
WBEMPATH_COMPRESSED = 0x1, // Obsolete, dont use
|
||
|
WBEMPATH_GET_RELATIVE_ONLY = 0X2, // gets relative path
|
||
|
WBEMPATH_GET_SERVER_TOO = 0X4, // gets everything
|
||
|
WBEMPATH_GET_SERVER_AND_NAMESPACE_ONLY = 0X8, // gets server and namespace
|
||
|
WBEMPATH_GET_NAMESPACE_ONLY = 0X10, // gets just namespace
|
||
|
WBEMPATH_GET_ORIGINAL = 0X20, // returns whatever was passed in
|
||
|
} 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
|
||
|
);
|
||
|
|
||
|
BOOL IsRelative(
|
||
|
[in, string] LPWSTR wszMachine,
|
||
|
[in, string] LPWSTR wszNamespace
|
||
|
);
|
||
|
|
||
|
BOOL IsRelativeOrChild(
|
||
|
[in, string] LPWSTR wszMachine,
|
||
|
[in, string] LPWSTR wszNamespace,
|
||
|
[in] long lFlags
|
||
|
);
|
||
|
|
||
|
BOOL IsLocal(
|
||
|
[in, string] LPCWSTR wszMachine
|
||
|
);
|
||
|
|
||
|
BOOL IsSameClassName(
|
||
|
[in, string] LPCWSTR wszClass
|
||
|
);
|
||
|
|
||
|
|
||
|
};
|
||
|
|
||
|
//***********************************************************************
|
||
|
//
|
||
|
|
||
|
[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_QUERY_TEXT = 0x4,
|
||
|
|
||
|
WMIQ_ANALYSIS_RESERVED = 0x8000000
|
||
|
|
||
|
} WMIQ_ANALYSIS_TYPE;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
// Group 1
|
||
|
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_UNDEFINED = 0,
|
||
|
WMIQ_RPN_OP_EQ = 1,
|
||
|
WMIQ_RPN_OP_NE = 2,
|
||
|
WMIQ_RPN_OP_GE = 3,
|
||
|
WMIQ_RPN_OP_LE = 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_CONST2 = 0x4,
|
||
|
WMIQ_RPN_CONST = 0x8,
|
||
|
WMIQ_RPN_RELOP = 0x10,
|
||
|
WMIQ_RPN_LEFT_FUNCTION = 0x20,
|
||
|
WMIQ_RPN_RIGHT_FUNCTION = 0x40,
|
||
|
|
||
|
// 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,
|
||
|
|
||
|
// Group 6 (FROM clause options)
|
||
|
WMIQ_RPN_FROM_UNARY = 0x1,
|
||
|
WMIQ_RPN_FROM_PATH = 0x2,
|
||
|
WMIQ_RPN_FROM_CLASS_LIST = 0x4
|
||
|
|
||
|
} WMIQ_RPN_TOKEN_FLAGS;
|
||
|
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
WMIQ_ASSOCQ_ASSOCIATORS = 0x1,
|
||
|
WMIQ_ASSOCQ_REFERENCES = 0x2,
|
||
|
|
||
|
WMIQ_ASSOCQ_RESULTCLASS = 0x4,
|
||
|
WMIQ_ASSOCQ_ASSOCCLASS = 0x8,
|
||
|
WMIQ_ASSOCQ_ROLE = 0x10,
|
||
|
WMIQ_ASSOCQ_RESULTROLE = 0x20,
|
||
|
WMIQ_ASSOCQ_REQUIREDQUALIFIER = 0x40,
|
||
|
WMIQ_ASSOCQ_REQUIREDASSOCQUALIFIER = 0x80,
|
||
|
|
||
|
WMIQ_ASSOCQ_CLASSDEFSONLY = 0x100,
|
||
|
WMIQ_ASSOCQ_KEYSONLY = 0x200,
|
||
|
WMIQ_ASSOCQ_SCHEMAONLY = 0x400,
|
||
|
WMIQ_ASSOCQ_CLASSREFSONLY = 0x800
|
||
|
|
||
|
} WMIQ_ASSOCQ_FLAGS;
|
||
|
|
||
|
|
||
|
// **********************************************************************
|
||
|
//
|
||
|
|
||
|
typedef struct tag_SWbemQueryQualifiedName
|
||
|
{
|
||
|
ULONG m_uVersion;
|
||
|
ULONG m_uTokenType;
|
||
|
|
||
|
ULONG m_uNameListSize;
|
||
|
LPCWSTR *m_ppszNameList;
|
||
|
|
||
|
BOOL m_bArraysUsed;
|
||
|
BOOL *m_pbArrayElUsed;
|
||
|
ULONG *m_puArrayIndex;
|
||
|
|
||
|
} SWbemQueryQualifiedName;
|
||
|
|
||
|
// **********************************************************************
|
||
|
//
|
||
|
typedef union tag_SWbemRpnConst
|
||
|
{
|
||
|
LPCWSTR m_pszStrVal; // VT_LPWSTR
|
||
|
BOOL m_bBoolVal; // VT_BOOL
|
||
|
LONG m_lLongVal; // VT_I4
|
||
|
ULONG m_uLongVal; // VT_UI4
|
||
|
double m_dblVal; // VT_R8
|
||
|
__int64 m_lVal64; // VT_I8
|
||
|
__int64 m_uVal64; // VT_UI8
|
||
|
|
||
|
} SWbemRpnConst;
|
||
|
|
||
|
// **********************************************************************
|
||
|
// RPN token for normal queries
|
||
|
|
||
|
typedef struct tag_SWbemRpnQueryToken
|
||
|
{
|
||
|
ULONG m_uVersion;
|
||
|
ULONG m_uTokenType;
|
||
|
|
||
|
ULONG m_uSubexpressionShape;
|
||
|
ULONG m_uOperator;
|
||
|
|
||
|
SWbemQueryQualifiedName *m_pRightIdent;
|
||
|
SWbemQueryQualifiedName *m_pLeftIdent;
|
||
|
|
||
|
ULONG m_uConstApparentType; // VT_
|
||
|
SWbemRpnConst m_Const;
|
||
|
|
||
|
// Const2 used only for BETWEEN
|
||
|
ULONG m_uConst2ApparentType; // VT_
|
||
|
SWbemRpnConst m_Const2;
|
||
|
|
||
|
LPCWSTR m_pszRightFunc;
|
||
|
LPCWSTR m_pszLeftFunc;
|
||
|
|
||
|
} SWbemRpnQueryToken;
|
||
|
|
||
|
|
||
|
typedef struct tag_SWbemRpnTokenList
|
||
|
{
|
||
|
ULONG m_uVersion;
|
||
|
ULONG m_uTokenType;
|
||
|
|
||
|
ULONG m_uNumTokens;
|
||
|
|
||
|
} 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_LF39_COUNT_COLUMN = 39,
|
||
|
WMIQ_LF40_BETWEEN = 40,
|
||
|
|
||
|
WMIQ_LF_LAST = 40
|
||
|
} 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_USED = 0x80, // *
|
||
|
WMIQ_RPNF_SYSPROP_CLASS_USED = 0x100, // *
|
||
|
WMIQ_RPNF_PROP_TO_PROP_TESTS = 0x200, // *
|
||
|
WMIQ_RPNF_ORDER_BY = 0x400, // *
|
||
|
WMIQ_RPNF_ISA_USED = 0x800, // *
|
||
|
WMIQ_RPNF_GROUP_BY_HAVING = 0x1000, // *
|
||
|
WMIQ_RPNF_ARRAY_ACCESS_USED = 0x2000, // *
|
||
|
|
||
|
} WMIQ_RPNF_FEATURE;
|
||
|
|
||
|
|
||
|
typedef struct tag_SWbemRpnEncodedQuery
|
||
|
{
|
||
|
ULONG m_uVersion;
|
||
|
ULONG m_uTokenType;
|
||
|
|
||
|
// General query features
|
||
|
// ======================
|
||
|
unsigned __int64 m_uParsedFeatureMask;
|
||
|
|
||
|
// 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_uSelectListSize;
|
||
|
SWbemQueryQualifiedName **m_ppSelectList;
|
||
|
|
||
|
// FROM clause
|
||
|
// ===========
|
||
|
|
||
|
ULONG m_uFromTargetType; // WMIQ_RPN_FROM_ constants
|
||
|
LPCWSTR m_pszOptionalFromPath; // NULL if not used
|
||
|
ULONG m_uFromListSize;
|
||
|
LPCWSTR *m_ppszFromList;
|
||
|
|
||
|
// Where clause
|
||
|
// ============
|
||
|
|
||
|
ULONG m_uWhereClauseSize;
|
||
|
SWbemRpnQueryToken **m_ppRpnWhereClause;
|
||
|
|
||
|
// WITHIN value
|
||
|
// ============
|
||
|
|
||
|
double m_dblWithinPolling;
|
||
|
double m_dblWithinWindow;
|
||
|
|
||
|
// ORDER BY
|
||
|
// ========
|
||
|
|
||
|
ULONG m_uOrderByListSize;
|
||
|
LPCWSTR *m_ppszOrderByList;
|
||
|
ULONG *m_uOrderDirectionEl;
|
||
|
|
||
|
} 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] ULONG uFlags,
|
||
|
[in] ULONG uArraySize,
|
||
|
[in] ULONG *puFeatures
|
||
|
);
|
||
|
// If not called, all features are supported
|
||
|
|
||
|
HRESULT TestLanguageFeatures(
|
||
|
[in] ULONG uFlags,
|
||
|
[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
|
||
|
);
|
||
|
};
|