次の方法で共有


IQueryAllWinSATAssessments::get_AllXML メソッド (winsatcominterfacei.h)

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

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

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

構文

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

パラメーター

xPath

namespaces

ppDomNodeList

戻り値

なし

解説

このメソッドを使用して、API で提供される概要情報で使用できない評価の詳細を取得できます。 評価で使用できるすべての情報の詳細については、 WinSAT スキーマに関するページを参照してください。

最初の正式な評価は、コンピューターを最初に設定したときに実行されます。 最初の評価は、データ ストアの有効期間中、データ ストアに残ります。 WinSAT データ ストアには、最大 100 個の正式な評価を含めることができます。 ストアが容量に達すると、WinSAT は、実行される新しい正式な評価ごとに、データ ストア内の最も古い評価 (最初の評価ではない) を削除します。

WinSAT データ ストアには、正式な評価のみが含まれています。 アドホック評価から評価データを取得する場合は、評価の実行時に結果を XML ファイルに保存する必要があります (詳細については 、-xml コマンド ライン引数を参照してください)。 その後、 IXMLDOMDocument2 インターフェイスのメンバーを使用して、アドホック評価のデータに対してクエリを実行できます。

評価が返される順序は任意です。

次の例は、XPath クエリを使用して、評価ストア内の正式な各評価からデータを取得する方法を示しています。

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

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー サポートなし
対象プラットフォーム Windows
ヘッダー winsatcominterfacei.h
[DLL] Winsatapi.dll

関連項目

IInitiateWinSATAssessment

IQueryAllWinSATAssessments

IQueryRecentWinSATAssessment::XML