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();
}