Поделиться через


Метод IQueryRecentWinSATAssessment::get_XML (winsatcominterfacei.h)

[IQueryRecentWinSATAssessment::XML может быть изменен или недоступен для выпусков после Windows 8.1.]

Извлекает данные из документа оценки XML с помощью указанного XPath. Запрос выполняется для последней официальной оценки в хранилище данных WinSAT.

Это свойство доступно только для чтения.

Синтаксис

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

Параметры

xPath

namespaces

ppDomNodeList

Возвращаемое значение

None

Remarks

Этот метод можно использовать для получения сведений об оценке, которые недоступны в сводной информации, предоставленной через API. Дополнительные сведения обо всех данных, доступных в оценке, см. в разделе Схема WinSAT.

Первая официальная оценка выполняется при первоначальной настройке компьютера. Первоначальная оценка будет оставаться в хранилище данных в течение всего срока его существования. Хранилище данных WinSAT может содержать до 100 формальных оценок. Когда хранилище достигнет емкости, WinSAT удалит старую оценку (но не начальную) в хранилище данных для каждой новой официальной оценки, которая выполняется.

Хранилище данных WinSAT содержит только формальные оценки. Если вы хотите получить данные оценки из нерегламентированных оценок, необходимо сохранить результаты в XML-файл при выполнении оценки (дополнительные сведения см. в аргументе командной строки -xml ). Затем можно использовать члены интерфейса IXMLDOMDocument2 для запроса данных из специальной оценки.

Чтобы получить сводные сведения об оценке, вызовите метод IQueryRecentWinSATAssessment::get_Info . Чтобы получить сводные сведения для подкомпонента оценки, вызовите метод IProvideWinSATResultsInfo::GetAssessmentInfo .

Примеры

В следующем примере показано, как использовать запрос XPath для получения данных из последней официальной оценки.

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

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Ни одна версия не поддерживается
Целевая платформа Windows
Header winsatcominterfacei.h
DLL Winsatapi.dll

См. также раздел

IInitiateWinSATAssessment

IQueryAllWinSATAssessments::AllXML

IQueryRecentWinSATAssessment