为偶尔运行的进程配置性能监视器警报?

为偶尔运行的进程配置性能监视器警报?

我一直在使用 Windows 7 中的性能监视器,并能够创建一个数据收集器集来监视进程,并在专用字节超过某个阈值时记录警报。当我们运行某些测试时,我想使用它来粗略地捕获主要内存泄漏。

似乎我必须先启动应用程序,然后手动启动数据收集集。有没有办法让数据收集集保持运行,即使它监视的进程没有运行?如果这不可能,有没有办法将数据收集集的启动与应用程序的启动联系起来?

答案1

经过一番探索,我发现我可以通过编程启动数据收集集。我的代码如下所示:

#include <pla.h>

void start_perfmon_data_collection_set(const wchar_t* dcs_name) 
{
    IDataCollectorSet* pdcs;
    HRESULT hr = CoCreateInstance(__uuidof(DataCollectorSet), 
                                  NULL, 
                                  CLSCTX_SERVER,
                                  __uuidof(IDataCollectorSet),
                                  (void**) &pdcs);

    if (FAILED(hr))
    {
        TRACE(L"CoCreateInstance(__uuidof(DataCollectorSet) failed with 0x%x.\n", hr);
        return;
    }

    if (FAILED(pdcs->Query(dcs_name, NULL)))
    {
        TRACE(L"unable to query %s\n", dcs_name);
    }
    else
    {
        if (FAILED(pdcs->Start(false)))
        {
            DataCollectorSetStatus status;
            pdcs->get_Status(&status);
            TRACE(L"status = %d\n", status);
        }
    }
    pdcs->Release();
}

相关内容