勇芳软件工作室.汉化:  Windows Management Instrumentation > COM API for WMI > Interfaces > IWbemQuery >

GetAnalysis Method

Previous pageReturn to chapter overviewNext page

描述

 

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。