Win32_BaseBoard的WMI查询不返回任何结果

时间:2009-03-31 13:08:27

标签: c++ wmi

以下用于通过WMI 检索主板信息的C ++代码适用于大多数计算机,除了一个

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。

您是否曾遇到Win32_BaseBoard上的WMI查询未返回任何条目的情况?

1 个答案:

答案 0 :(得分:1)

VirtualBox虚拟机中我干净的Windows XP SP3 / w .NET Framework 2.0计算机不会返回任何记录,如“wmic”工具所示:

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

所以这似乎是一种正常情况,而不仅仅是一个孤立的发病率。我会计划不会出现任何记录的可能性。