Compartir a través de


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

[IQueryRecentWinSATAssessment::XML puede modificarse o no estar disponible para las versiones después de Windows 8.1.]

Recupera datos del documento de evaluación XML mediante el XPath especificado. La consulta se ejecuta en la evaluación formal más reciente en el almacén de datos winSAT.

Esta propiedad es de solo lectura.

Sintaxis

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

Parámetros

xPath

namespaces

ppDomNodeList

Valor devuelto

None

Observaciones

Puede usar este método para recuperar los detalles de la evaluación que no están disponibles en la información de resumen proporcionada a través de la API. Para obtener más información sobre toda la información disponible en una evaluación, consulte El esquema winSAT.

La primera evaluación formal se ejecuta al configurar inicialmente el equipo. La evaluación inicial permanecerá en el almacén de datos durante la vida útil del almacén de datos. El almacén de datos winSAT puede contener hasta 100 evaluaciones formales. Cuando el almacén alcanza la capacidad, WinSAT eliminará la evaluación más antigua (pero no la evaluación inicial) en el almacén de datos para cada nueva evaluación formal que se ejecute.

El almacén de datos winSAT solo contiene evaluaciones formales. Si desea recuperar datos de evaluación de evaluaciones ad hoc, debe guardar los resultados en un archivo XML al ejecutar la evaluación (consulte el argumento de línea de comandos -xml para obtener más información). A continuación, puede usar los miembros de la interfaz IXMLDOMDocument2 para consultar datos de la evaluación ad hoc.

Para recuperar información de resumen sobre la evaluación, llame al método IQueryRecentWinSATAssessment::get_Info . Para recuperar información de resumen de un subcomponente de la evaluación, llame al método IProvideWinSATResultsInfo::GetAssessmentInfo .

Ejemplos

En el ejemplo siguiente se muestra cómo usar una consulta XPath para obtener datos de la evaluación formal más reciente.

#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 Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible No se admite ninguno
Plataforma de destino Windows
Encabezado winsatcominterfacei.h
Archivo DLL Winsatapi.dll

Consulte también

IInitiateWinSATAssessment

IQueryAllWinSATAssessments::AllXML

IQueryRecentWinSATAssessment