如何提高查询WmiMonitorBrightness的性能?

时间:2017-10-31 06:11:09

标签: c wmi

我有一个用于通过使用WMI控制集成显示器亮度的DLL 我遇到了一个麻烦,有时查询方法需要超过600毫秒才能获得IWbemClassObject。正常情况不到50毫秒。

HRESULT WMIQueryBrightness()
{
    HRESULT hr;
    BSTR QueryLanguage = SysAllocString(L"WQL");
    BSTR QueryTarget = SysAllocString(L"SELECT * FROM WmiMonitorBrightness");

    ULONG uReturn = 0;

    hr = pSvc->ExecQuery(
        QueryLanguage,
        QueryTarget,
        WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
        NULL,
        &pEnum);

    if (FAILED(hr))
    {
        WMIDestroy();

        return hr;
    }

    hr = pEnum->Next(WBEM_INFINITE, 1, &pClsWmiMonitorBrightness, &uReturn);

    if (FAILED(hr))
    {
        WMIDestroy();

        return hr;
    }

    SysFreeString(QueryLanguage);
    SysFreeString(QueryTarget);

    return S_OK;
}

我试图澄清哪个函数需要花费太多时间,并发现pEnum-> Next()有时需要超过500毫秒。但是,我不知道如何改善这种情况 你能给我一些解决这个问题的想法吗?

1 个答案:

答案 0 :(得分:0)

配置系统。您正在访问多任务系统上的共享资源。