WMI-запрос для Win32_BaseBoard не возвращает результатов - PullRequest
2 голосов
/ 31 марта 2009

Следующий код C ++ для получения информации о материнской плате через WMI работает на большинстве машин, кроме одного :

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
}

В частности, pEnumerator->Next() возвращает 0, и поэтому pclsObj остается NULL.

Вы когда-нибудь сталкивались с ситуацией, когда запрос WMI на Win32_BaseBoard не возвращает записей?

1 Ответ

1 голос
/ 06 сентября 2011

Моя чистая машина Windows XP SP3 / w .NET Framework 2.0 в виртуальной машине VirtualBox не возвращает никаких записей, как указано инструментом «wmic»:

wmic:root\cli>BASEBOARD
No Instance(s) Available

Так что это, кажется, нормальное обстоятельство, а не просто единичный случай. Я планировал бы, что никакие записи не могут появиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...