Compartir a través de


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

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

Recupera datos de los documentos de evaluación XML formales mediante el XPath especificado. La consulta se ejecuta en todas las evaluaciones formales del almacén de datos winSAT.

Esta propiedad es de solo lectura.

Sintaxis

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

El orden en que se devuelven las evaluaciones es arbitrario.

Ejemplos

En el ejemplo siguiente se muestra cómo usar una consulta XPath para obtener datos de cada una de las evaluaciones formales del almacén de evaluación.

#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 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

IQueryRecentWinSATAssessment::XML