Compartilhar via


Método IQueryAllWinSATAssessments::get_AllXML (winsatcominterfacei.h)

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

Recupera dados dos documentos formais de avaliação XML usando o XPath especificado. A consulta é executada em todas as avaliações formais no armazenamento de dados WinSAT.

Esta propriedade é somente para leitura.

Sintaxe

HRESULT get_AllXML(
  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 inicialmente o computador. 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.

A ordem na qual as avaliações são retornadas é arbitrária.

Exemplos

O exemplo a seguir mostra como usar uma consulta XPath para obter dados de cada uma das avaliações formais no repositório de avaliação.

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

#pragma comment(lib, "comsupp.lib") // For _bstr_t

void main(void)
{
    HRESULT hr = S_OK;
    IQueryAllWinSATAssessments* pAssessment;
    IXMLDOMNodeList* pNodes = NULL;
    IXMLDOMNode* pMemory = NULL;
    IXMLDOMNode* pNode = NULL;
    _bstr_t bstrXPath = L"WinsatAssessments/WinSAT/SystemConfig/Memory";
    _bstr_t bstrAvailableRAM;
    _bstr_t bstrTotalRAM;

    hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);

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

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

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

    hr = pNodes->nextNode(&pMemory);

    // Loop through the memory nodes and get available and total memory size
    // values and print them.
    while (pMemory)
    {
        hr = pMemory->selectSingleNode(L"TotalPhysical/Size", &pNode);
        if (FAILED(hr))
        {
            wprintf(L"pMemory->selectSingleNode(TotalPhysical/Size) failed with 0x%x.\n", hr);
            goto cleanup;
        }

        hr = pNode->get_text(bstrTotalRAM.GetAddress());
        if (FAILED(hr))
        {
            wprintf(L"pNode->get_text(bstrTotalRAM) failed with 0x%x.\n", hr);
            goto cleanup;
        }

        pNode->Release();
        pNode = NULL;

        hr = pMemory->selectSingleNode(L"AvailablePhysical/Size", &pNode);
        if (FAILED(hr))
        {
            wprintf(L"pMemory->selectSingleNode(AvailablePhysical/Size) failed with 0x%x.\n", hr);
            goto cleanup;
        }

        hr = pNode->get_text(bstrAvailableRAM.GetAddress());
        if (FAILED(hr))
        {
            wprintf(L"pNode->get_text(bstrAvailableRAM) failed with 0x%x.\n", hr);
            goto cleanup;
        }

        pNode->Release();
        pNode = NULL;

        wprintf(L"Available RAM: %s of %s\n", bstrAvailableRAM.GetBSTR(), bstrTotalRAM.GetBSTR());

        pMemory->Release();
        pMemory = NULL;

        hr = pNodes->nextNode(&pMemory);
    }

cleanup:

    if (pAssessment)
        pAssessment->Release();

    if (pNodes)
        pNodes->Release();

    if (pMemory)
        pMemory->Release();

    if (pNode)
        pNode->Release();

    CoUninitialize();
}

Requisitos

   
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

IQueryRecentWinSATAssessment::XML