描述
IWbemQuery.GetAnalysis方法获取成功的查询解析结果。
C++ 语法
HRESULT GetAnalysis( [in] ULONG uAnalysisType, [in] ULONG uFlags, [out] LPVOID *pAnalysis ); |
PowerBASIC 语法
METHOD GetAnalysis ( _ BYVAL uAnalysisType AS DWORD, _ BYVAL uFlags AS DWORD, _ BYREF pAnalysis AS DWORD _ ) AS LONG |
参数
uAnalysisType
要得到的分析类型
分析类型(常数或值) |
含义 |
WMIQ_ANALYSIS_RPN_SEQUENCE 1 |
如果查询具有SELECT子句,则使用它。当使用此类型的分析时,pAnalysis指向SWbemRpnEncodedQuery结构。 |
WMIQ_ANALYSIS_ASSOC_QUERY 2 |
用于返回有关关联类型查询的信息。当使用这种类型的分析时,pAnalysis指向SWbemAssocQueryInf结构。 |
WMIQ_ANALYSIS_PROP_ANALYSIS_MATRIX 3 |
没用过。留作将来使用。 |
WMIQ_ANALYSIS_QUERY_TEXT 4 |
用于返回具有原始查询文本的文本字符串。如果使用这种类型的分析,pAnalysis指向包含原始查询文本的文本字符串。
如果将解析器对象传递给另一个方法,则可以使用此参数。 |
uFlags
留作将来使用。
pAnalysis
指向调用IWbemQuery.GetAnalysis生成的分析。通过调用IWbemQuery.FreeMemory来释放这个内存很重要。
返回值
此方法返回一个HRESULT,指示方法调用的状态。
退货代码 |
描述 |
WBEM_S_NO_ERROR |
方法成功分析查询。 |
WBEM_E_INVALID_OPERATION |
没有任何解析,或指定了不正确的分析类型。例如,请求关于非关联查询的关联信息。 |
WBEM_E_INVALID_QUERY |
查询无效。 |
WBEM_E_INVALID_PARAMETER |
uAnalysisType参数值无效。 |
WBEM_E_OUT_OF_MEMORY |
内存不足。 |
示例代码
以下代码示例显示了使用WMIQ_ANALYSIS_RPN_SEQUENCE进行的查询分析。
IWbemQuery *pQuery = NULL;
HRESULT hr = NULL;
hr = CoCreateInstance(CLSID_WbemQuery,
0,
CLSCTX_INPROC_SERVER,
IID_IWbemQuery,
(LPVOID *)&pQuery);
SWbemRpnEncodedQuery *pRpn = NULL;
hr = pQuery->GetAnalysis(WMIQ_ANALYSIS_RPN_SEQUENCE,
0,
(LPVOID *)&pRpn);
// -- do something
pQuery->FreeMemory(pRpn);
PowerBASIC
DIM pQuery AS IWbemQuery
DIM hr AS LONG
pQuery = NEWCOM CLSID $CLSID_WbemQuery
DIM pRgn AS SWbemRpnEncodedQuery PTR
hr = pQuery.GetAnalysis(%WMIQ_ANALYSIS_RPN_SEQUENCE, _
0, _
pRpn)
' // -- do something
pQuery.FreeMemory(pRpn)
以下代码示例使用WMIQ_ANALYSIS_ASSOC_QUERY显示查询分析。
IWbemQuery *pQuery = NULL;
HRESULT hr = NULL;
hr = CoCreateInstance(CLSID_WbemQuery,
0,
CLSCTX_INPROC_SERVER,
IID_IWbemQuery,
(LPVOID *)&pQuery);
SWbemAssocQueryInf *pAssoc = NULL;
hr = pQuery->GetAnalysis(WMIQ_ANALYSIS_ASSOC_QUERY,
0,
(LPVOID *)&pAssoc);
// -- do something
pQuery->FreeMemory(pAssoc);
PowerBASIC
DIM pQuery AS IWbemQuery
DIM hr AS LONG
pQuery = NEWCOM CLSID $CLSID_WbemQuery
DIM pAssoc AS SWbemAssocQueryInf PTR
hr = pQuery.GetAnalysis(%WMIQ_ANALYSIS_ASSOC_QUERY, _
0, _
pAssoc)
' // -- do something
pQuery.FreeMemory(pAssoc)
以下代码示例使用WMIQ_ANALYSIS_QUERY_TEXT显示查询分析。
IWbemQuery *pQuery = NULL;
HRESULT hr = NULL;
hr = CoCreateInstance(CLSID_WbemQuery,
0,
CLSCTX_INPROC_SERVER,
IID_IWbemQuery,
(LPVOID *)&pQuery);
WCHAR *pText = NULL;
hr = pQuery->GetAnalysis(WMIQ_ANALYSIS_QUERY_TEXT,
0,
(LPVOID *)&pText);
// -- do something
pQuery->FreeMemory(pText);
PowerBASIC
DIM pQuery AS IWbemQuery
DIM hr AS LONG
pQuery = NEWCOM CLSID $CLSID_WbemQuery
DIM pText AS WSTRINGZ PTR
hr = pQuery.GetAnalysis(%WMIQ_ANALYSIS_QUERY_TEXT, _
0, _
pText)
' // -- do something
pQuery.FreeMemory(pText)
备注
Windows 2000 / NT:需要WMI SDK Update或Microsoft .NET Framework SDK。
要求
客户 |
需要Windows Vista或Windows XP。 |
服务器 |
需要Windows Server 2008或Windows Server 2003。 |
可再发行 |
需要Windows 2000和Windows NT上的WMI可重新分发组件版本1.0。在Windows NT上,它也需要Microsoft .NET Framework。 |
头 |
在Wmiutils.inc中声明。 |
DLL |
需要Wmiutils.dll。 |