Метод IQueryAllWinSATAssessments::get_AllXML (winsatcominterfacei.h)
[IQueryAllWinSATAssessments::AllXML может быть изменен или недоступен для выпусков после Windows 8.1.]
Извлекает данные из официальных документов оценки XML с помощью указанного XPath. Запрос выполняется для всех формальных оценок в хранилище данных WinSAT.
Это свойство доступно только для чтения.
Синтаксис
HRESULT get_AllXML(
BSTR xPath,
BSTR namespaces,
IXMLDOMNodeList **ppDomNodeList
);
Параметры
xPath
namespaces
ppDomNodeList
Возвращаемое значение
None
Remarks
Этот метод можно использовать для получения сведений об оценке, которые недоступны в сводной информации, предоставленной через 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 |
Header | winsatcominterfacei.h |
DLL | Winsatapi.dll |