Share via


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

[IQueryAllWinSATAssessments::AllXML peut être modifié ou indisponible pour les versions après Windows 8.1.]

Récupère les données des documents d’évaluation XML formels à l’aide du XPath spécifié. La requête est exécutée sur toutes les évaluations formelles dans le magasin de données WinSAT.

Cette propriété est en lecture seule.

Syntaxe

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

Paramètres

xPath

namespaces

ppDomNodeList

Valeur de retour

None

Remarques

Vous pouvez utiliser cette méthode pour récupérer les détails de l’évaluation qui ne sont pas disponibles dans les informations récapitulatives fournies par le biais de l’API. Pour plus d’informations sur toutes les informations disponibles dans une évaluation, consultez le schéma WinSAT.

La première évaluation formelle est exécutée lorsque vous configurez initialement votre ordinateur. L’évaluation initiale restera dans le magasin de données pendant toute la durée de vie du magasin de données. Le magasin de données WinSAT peut contenir jusqu’à 100 évaluations formelles. Lorsque le magasin atteint sa capacité, WinSAT supprime l’évaluation la plus ancienne (mais pas l’évaluation initiale) dans le magasin de données pour chaque nouvelle évaluation formelle exécutée.

Le magasin de données WinSAT contient uniquement des évaluations formelles. Si vous souhaitez récupérer des données d’évaluation à partir d’évaluations ad hoc, vous devez enregistrer les résultats dans un fichier XML lorsque vous exécutez l’évaluation (pour plus d’informations, consultez l’argument de ligne de commande -xml ). Vous pouvez ensuite utiliser les membres de l’interface IXMLDOMDocument2 pour interroger des données à partir de l’évaluation ad hoc.

L’ordre dans lequel les évaluations sont retournées est arbitraire.

Exemples

L’exemple suivant montre comment utiliser une requête XPath pour obtenir des données à partir de chacune des évaluations formelles dans le magasin d’évaluation.

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

Configuration requise

   
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Aucun pris en charge
Plateforme cible Windows
En-tête winsatcominterfacei.h
DLL Winsatapi.dll

Voir aussi

IInitiateWinSATAssessment

IQueryAllWinSATAssessments

IQueryRecentWinSATAssessment::XML