Configure um alerta do Monitor de desempenho para um processo executado ocasionalmente?

1

Eu tenho jogado com o Performance Monitor no Windows 7 e consegui criar um conjunto de coletores de dados que monitora um processo e registra um alerta quando o Bytes particulares excede algum limite. Eu quero usar isso quando executarmos alguns testes como uma captura bruta para grandes vazamentos de memória.

Parece que tenho que iniciar meu aplicativo e iniciar manualmente o conjunto de coleta de dados. Existe alguma maneira que o conjunto de coleta de dados pode ficar em execução, mesmo quando o processo monitorado não está em execução? Se isso não for possível, existe uma maneira de vincular o início do conjunto de coleta de dados ao início do meu aplicativo?

    
por CoryR 22.02.2013 / 18:33

1 resposta

0

Depois de pesquisar, descobri que posso iniciar programaticamente o conjunto de coleta de dados. Meu código é parecido com isto:

#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();
}
    
por 22.02.2013 / 19:49