次の方法で共有


IQueryRecentWinSATAssessment::get_XML メソッド (winsatcominterfacei.h)

[IQueryRecentWinSATAssessment::XML は、Windows 8.1後のリリースで変更または使用できない可能性があります。]

指定した XPath を使用して、XML 評価ドキュメントからデータを取得します。 クエリは、WinSAT データ ストアの最新の正式な評価に対して実行されます。

このプロパティは読み取り専用です。

構文

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

パラメーター

xPath

namespaces

ppDomNodeList

戻り値

なし

解説

このメソッドを使用して、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
ヘッダー winsatcominterfacei.h
[DLL] Winsatapi.dll

こちらもご覧ください

IInitiateWinSATAssessment

IQueryAllWinSATAssessments::AllXML

IQueryRecentWinSATAssessment