Condividi tramite


Metodo IQueryAllWinSATAssessments::get_AllXML (winsatcominterfacei.h)

[IQueryAllWinSATAssessments::AllXML può essere modificato o non disponibile per le versioni dopo Windows 8.1.]

Recupera i dati dai documenti di valutazione XML formali utilizzando l'XPath specificato. La query viene eseguita su tutte le valutazioni formali nell'archivio dati WinSAT.

Questa proprietà è di sola lettura.

Sintassi

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

Parametri

xPath

namespaces

ppDomNodeList

Valore restituito

nessuno

Osservazioni

È possibile usare questo metodo per recuperare i dettagli della valutazione che non sono disponibili nelle informazioni di riepilogo fornite tramite l'API. Per informazioni dettagliate su tutte le informazioni disponibili in una valutazione, vedere schema WinSAT.

La prima valutazione formale viene eseguita quando si configura inizialmente il computer. La valutazione iniziale rimarrà nell'archivio dati per la durata dell'archivio dati. L'archivio dati WinSAT può contenere fino a 100 valutazioni formali. Quando l'archivio raggiunge la capacità, WinSAT eliminerà la valutazione meno recente (ma non la valutazione iniziale) nell'archivio dati per ogni nuova valutazione formale eseguita.

L'archivio dati WinSAT contiene solo valutazioni formali. Se si desidera recuperare i dati di valutazione dalle valutazioni ad hoc, è necessario salvare i risultati in un file XML quando si esegue la valutazione (vedere l'argomento della riga di comando -xml per informazioni dettagliate). È quindi possibile usare i membri dell'interfaccia IXMLDOMDocument2 per eseguire query sui dati dalla valutazione ad hoc.

L'ordine in cui vengono restituite le valutazioni è arbitrario.

Esempio

Nell'esempio seguente viene illustrato come usare una query XPath per ottenere dati da ognuna delle valutazioni formali nell'archivio di valutazione.

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

Requisiti

   
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Nessuno supportato
Piattaforma di destinazione Windows
Intestazione winsatcominterfacei.h
DLL Winsatapi.dll

Vedi anche

IInitiateWinSATAssessment

IQueryAllWinSATAssessments

IQueryRecentWinSATAssessment::XML