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 |