共用方式為


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