Partager via


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

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

Récupère les données du document d’évaluation XML à l’aide du XPath spécifié. La requête est exécutée par rapport à l’évaluation formelle la plus récente dans le magasin de données WinSAT.

Cette propriété est en lecture seule.

Syntaxe

HRESULT get_XML(
  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.

Pour récupérer des informations récapitulatives sur l’évaluation, appelez la méthode IQueryRecentWinSATAssessment ::get_Info . Pour récupérer des informations récapitulatives pour un sous-composant de l’évaluation, appelez la méthode IProvideWinSATResultsInfo ::GetAssessmentInfo .

Exemples

L’exemple suivant montre comment utiliser une requête XPath pour obtenir des données à partir de l’évaluation formelle la plus récente.

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

Configuration requise

Condition requise Valeur
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 ::AllXML

IQueryRecentWinSATAssessment