IQueryRecentWinSATAssessment::get_XML 方法 (winsatcominterfacei.h)

[IQueryRecentWinSATAssessment::XML 在Windows 8.1后可能会更改或不可用于版本。]

使用指定的 XPath 从 XML 评估文档检索数据。 查询针对 WinSAT 数据存储中的最新正式评估运行。

此属性为只读。

语法

HRESULT get_XML(
  BSTR            xPath,
  BSTR            namespaces,
  IXMLDOMNodeList **ppDomNodeList
);

参数

xPath

namespaces

ppDomNodeList

返回值

备注

可以使用此方法检索通过 API 提供的摘要信息中未提供的评估详细信息。 有关评估中所有可用信息的详细信息,请参阅 WinSAT 架构

初始设置计算机时,将运行第一个正式评估。 初始评估将在数据存储的整个生命周期内保留在数据存储中。 WinSAT 数据存储最多可以包含 100 个正式评估。 当存储达到容量时,WinSAT 将删除最早的评估 (但不会删除数据存储中运行的每个新正式评估的初始评估) 。

WinSAT 数据存储仅包含正式评估。 如果要从临时评估中检索评估数据,则必须在运行评估时将结果保存到 XML 文件中 (查看 -xml 命令行参数以了解详细信息) 。 然后,可以使用 IXMLDOMDocument2 接口的成员从临时评估查询数据。

若要检索有关评估的摘要信息,请调用 IQueryRecentWinSATAssessment::get_Info 方法。 若要检索评估子组件的摘要信息,请调用 IProvideWinSATResultsInfo::GetAssessmentInfo 方法。

示例

以下示例演示如何使用 XPath 查询从最近的正式评估中获取数据。

#include <windows.h>
#include <stdio.h>
#include <winsatcominterfacei.h>

#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "oleaut32.lib")

void main(void)
{
    HRESULT hr = S_OK;
    IQueryRecentWinSATAssessment* pAssessment;
    IXMLDOMNodeList* pNodes = NULL;
    IXMLDOMNode* pNode = NULL;
    long NodeCount = 0;
    BSTR bstrXPath = SysAllocString(L"WinSAT/TotalRunTime/Description");
    BSTR bstrTime = NULL;

    hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);

    // Get an instance to the most recent formal assessment.
    hr = CoCreateInstance(__uuidof(CQueryWinSAT),
        NULL,
        CLSCTX_INPROC_SERVER,
        __uuidof(IQueryRecentWinSATAssessment),
        (void**)&pAssessment);

    if (FAILED(hr))
    {
        wprintf(L"Failed to create an instance of IQueryRecentWinSATAssessment. Failed with 0x%x.\n", hr);
        goto cleanup;
    }

    // Query the assessment for the nodes that match the XPath expression.
    hr = pAssessment->get_XML(bstrXPath, NULL, &pNodes);
    if (FAILED(hr))
    {
        wprintf(L"pAssessment->get_XML failed with 0x%x.\n", hr);
        goto cleanup;
    }

    hr = pNodes->get_length(&NodeCount);
    wprintf(L"There were %d results found for the XPath query.\n\n", NodeCount);

    // Loop through the results.
    for (long i = 0; i < NodeCount; i++)
    {
        hr = pNodes->nextNode(&pNode);
        if (pNode)
        {
            hr = pNode->get_text(&bstrTime);
            if (S_OK == hr)
            {
                wprintf(L"Total runtime of the assessment: %s\n", bstrTime);
                SysFreeString(bstrTime);
            }
            else
            {
                wprintf(L"pNode->get_text failed with 0x%x.\n", hr);
                goto cleanup;
            }

            pNode->Release();
            pNode = NULL;
        }
        else
        {
            wprintf(L"pNodes->nextNode failed with 0x%x.\n", hr);
            goto cleanup;
        }
    }

cleanup:

    if (pAssessment)
        pAssessment->Release();

    if (pNodes)
        pNodes->Release();

    if (bstrXPath)
        SysFreeString(bstrXPath);

    CoUninitialize();
}

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 无受支持的版本
目标平台 Windows
标头 winsatcominterfacei.h
DLL Winsatapi.dll

另请参阅

IInitiateWinSATAssessment

IQueryAllWinSATAssessments::AllXML

IQueryRecentWinSATAssessment