Compartilhar via


Método IQueryRecentWinSATAssessment::get_XML (winsatcominterfacei.h)

[IQueryRecentWinSATAssessment::XML pode ser alterado ou indisponível para versões após Windows 8.1.]

Recupera dados do documento de avaliação XML usando o XPath especificado. A consulta é executada na avaliação formal mais recente no armazenamento de dados WinSAT.

Esta propriedade é somente para leitura.

Sintaxe

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

Parâmetros

xPath

namespaces

ppDomNodeList

Valor retornado

Nenhum

Comentários

Você pode usar esse método para recuperar detalhes da avaliação que não estão disponíveis nas informações resumidas fornecidas por meio da API. Para obter detalhes sobre todas as informações disponíveis em uma avaliação, consulte o Esquema WinSAT.

A primeira avaliação formal é executada quando você configura seu computador inicialmente. A avaliação inicial permanecerá no armazenamento de dados durante a vida útil do armazenamento de dados. O armazenamento de dados WinSAT pode conter até 100 avaliações formais. Quando o repositório atingir a capacidade, o WinSAT excluirá a avaliação mais antiga (mas não a avaliação inicial) no armazenamento de dados para cada nova avaliação formal executada.

O armazenamento de dados WinSAT contém apenas avaliações formais. Se você quiser recuperar dados de avaliação de avaliações ad hoc, deverá salvar os resultados em um arquivo XML ao executar a avaliação (consulte o argumento de linha de comando -xml para obter detalhes). Em seguida, você pode usar os membros da interface IXMLDOMDocument2 para consultar dados da avaliação ad hoc.

Para recuperar informações resumidas sobre a avaliação, chame o método IQueryRecentWinSATAssessment::get_Info . Para recuperar informações resumidas para um subcomponente da avaliação, chame o método IProvideWinSATResultsInfo::GetAssessmentInfo .

Exemplos

O exemplo a seguir mostra como usar uma consulta XPath para obter dados da avaliação formal mais recente.

#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();
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Nenhum compatível
Plataforma de Destino Windows
Cabeçalho winsatcominterfacei.h
DLL Winsatapi.dll

Confira também

IInitiateWinSATAssessment

IQueryAllWinSATAssessments::AllXML

IQueryRecentWinSATAssessment