Metodo IQueryAllWinSATAssessments::get_AllXML (winsatcominterfacei.h)
[IQueryAllWinSATAssessments::AllXML può essere modificato o non disponibile per le versioni dopo Windows 8.1.]
Recupera i dati dai documenti di valutazione XML formali utilizzando l'XPath specificato. La query viene eseguita su tutte le valutazioni formali nell'archivio dati WinSAT.
Questa proprietà è di sola lettura.
Sintassi
HRESULT get_AllXML(
BSTR xPath,
BSTR namespaces,
IXMLDOMNodeList **ppDomNodeList
);
Parametri
xPath
namespaces
ppDomNodeList
Valore restituito
nessuno
Osservazioni
È possibile usare questo metodo per recuperare i dettagli della valutazione che non sono disponibili nelle informazioni di riepilogo fornite tramite l'API. Per informazioni dettagliate su tutte le informazioni disponibili in una valutazione, vedere schema WinSAT.
La prima valutazione formale viene eseguita quando si configura inizialmente il computer. La valutazione iniziale rimarrà nell'archivio dati per la durata dell'archivio dati. L'archivio dati WinSAT può contenere fino a 100 valutazioni formali. Quando l'archivio raggiunge la capacità, WinSAT eliminerà la valutazione meno recente (ma non la valutazione iniziale) nell'archivio dati per ogni nuova valutazione formale eseguita.
L'archivio dati WinSAT contiene solo valutazioni formali. Se si desidera recuperare i dati di valutazione dalle valutazioni ad hoc, è necessario salvare i risultati in un file XML quando si esegue la valutazione (vedere l'argomento della riga di comando -xml per informazioni dettagliate). È quindi possibile usare i membri dell'interfaccia IXMLDOMDocument2 per eseguire query sui dati dalla valutazione ad hoc.
L'ordine in cui vengono restituite le valutazioni è arbitrario.
Esempio
Nell'esempio seguente viene illustrato come usare una query XPath per ottenere dati da ognuna delle valutazioni formali nell'archivio di valutazione.
#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();
}
Requisiti
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Nessuno supportato |
Piattaforma di destinazione | Windows |
Intestazione | winsatcominterfacei.h |
DLL | Winsatapi.dll |