Le code C++ suivant pour récupérer les informations carte mère via WMI fonctionne sur la plupart des machines, sauf un:requête WMI pour Win32_BaseBoard Aucun résultat
IEnumWbemClassObject* pEnumerator = NULL;
hres = pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t("Select * from Win32_BaseBoard"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator);
if (FAILED(hres))
{
// handle error, exit
}
IWbemClassObject *pclsObj = NULL;
ULONG uReturn = 0;
while (pEnumerator)
{
HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,
&pclsObj, &uReturn);
if(0 == uReturn)
{
break;
}
VARIANT vtProp;
hr = pclsObj->Get(L"Product", 0, &vtProp, 0, 0);
std::wstring productNo = vtProp.bstrVal;
// do stuff with productNo
}
Plus précisément, pEnumerator->Next()
renvoie 0, et donc pclsObj
est à gauche NULL .
Avez-vous déjà rencontré une situation où une requête WMI sur Win32_BaseBoard
ne renvoie aucune entrée?
Salut pouvez-vous interroger d'autres classes et obtenir des résultats? Par exemple, que retourne Win32_BIOS? La pensée étant que cela pourrait être un problème avec WMI. – Fraser
Bonne réflexion. Je vais vérifier avec le client sur la machine à laquelle ce code est en cours d'exécution. –
Il existe un bug ouvert pour cela https://www.virtualbox.org/ticket/6361 – shoren