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 |