|
|
|
/* This file was auto-generated from src\res\node_perfctr_provider.man by ctrpp.exe */
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
EXTERN_C DECLSPEC_SELECTANY GUID NodeCounterProviderGuid = { 0x1e2e15d7, 0x3760, 0x470e, 0x86, 0x99, 0xb9, 0xdb, 0x52, 0x48, 0xed, 0xd5 };
|
|
|
|
|
|
|
|
EXTERN_C DECLSPEC_SELECTANY GUID NodeCounterSetGuid = { 0x3a22a8ec, 0x297c, 0x48ac, 0xab, 0x15, 0x33, 0xec, 0x93, 0x3, 0x3f, 0xd8 };
|
|
|
|
|
|
|
|
|
|
|
|
EXTERN_C DECLSPEC_SELECTANY HANDLE NodeCounterProvider = NULL;
|
|
|
|
|
|
|
|
EXTERN_C DECLSPEC_SELECTANY struct {
|
|
|
|
PERF_COUNTERSET_INFO CounterSet;
|
|
|
|
PERF_COUNTER_INFO Counter0;
|
|
|
|
PERF_COUNTER_INFO Counter1;
|
|
|
|
PERF_COUNTER_INFO Counter2;
|
|
|
|
PERF_COUNTER_INFO Counter3;
|
|
|
|
PERF_COUNTER_INFO Counter4;
|
|
|
|
PERF_COUNTER_INFO Counter5;
|
|
|
|
PERF_COUNTER_INFO Counter6;
|
|
|
|
PERF_COUNTER_INFO Counter7;
|
|
|
|
PERF_COUNTER_INFO Counter8;
|
|
|
|
PERF_COUNTER_INFO Counter9;
|
|
|
|
} NodeCounterSetInfo = {
|
|
|
|
{ { 0x3a22a8ec, 0x297c, 0x48ac, 0xab, 0x15, 0x33, 0xec, 0x93, 0x3, 0x3f, 0xd8 }, { 0x1e2e15d7, 0x3760, 0x470e, 0x86, 0x99, 0xb9, 0xdb, 0x52, 0x48, 0xed, 0xd5 }, 10, PERF_COUNTERSET_MULTI_AGGREGATE },
|
|
|
|
{ 1, PERF_COUNTER_COUNTER, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 },
|
|
|
|
{ 2, PERF_COUNTER_COUNTER, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 },
|
|
|
|
{ 3, PERF_COUNTER_COUNTER, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 },
|
|
|
|
{ 4, PERF_COUNTER_COUNTER, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 },
|
|
|
|
{ 5, PERF_COUNTER_RAWCOUNT, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 },
|
|
|
|
{ 6, PERF_COUNTER_BULK_COUNT, 0, sizeof(ULONGLONG), PERF_DETAIL_NOVICE, 4294967293, 0 },
|
|
|
|
{ 7, PERF_COUNTER_BULK_COUNT, 0, sizeof(ULONGLONG), PERF_DETAIL_NOVICE, 4294967293, 0 },
|
|
|
|
{ 8, PERF_COUNTER_RAWCOUNT, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 },
|
|
|
|
{ 9, PERF_COUNTER_BULK_COUNT, 0, sizeof(ULONGLONG), PERF_DETAIL_NOVICE, 4294967293, 0 },
|
|
|
|
{ 10, PERF_COUNTER_BULK_COUNT, 0, sizeof(ULONGLONG), PERF_DETAIL_NOVICE, 4294967293, 0 },
|
|
|
|
};
|
|
|
|
|
|
|
|
EXTERN_C FORCEINLINE
|
|
|
|
VOID
|
|
|
|
CounterCleanup(
|
|
|
|
VOID
|
|
|
|
)
|
|
|
|
{
|
|
|
|
if (NodeCounterProvider != NULL) {
|
|
|
|
PerfStopProvider(NodeCounterProvider);
|
|
|
|
NodeCounterProvider = NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
EXTERN_C FORCEINLINE
|
|
|
|
ULONG
|
|
|
|
CounterInitialize(
|
|
|
|
VOID
|
|
|
|
)
|
|
|
|
{
|
|
|
|
ULONG Status;
|
|
|
|
PERF_PROVIDER_CONTEXT ProviderContext;
|
|
|
|
|
|
|
|
ZeroMemory(&ProviderContext, sizeof(PERF_PROVIDER_CONTEXT));
|
|
|
|
ProviderContext.ContextSize = sizeof(PERF_PROVIDER_CONTEXT);
|
|
|
|
|
|
|
|
Status = PerfStartProviderEx(&NodeCounterProviderGuid,
|
|
|
|
&ProviderContext,
|
|
|
|
&NodeCounterProvider);
|
|
|
|
if (Status != ERROR_SUCCESS) {
|
|
|
|
NodeCounterProvider = NULL;
|
|
|
|
return Status;
|
|
|
|
}
|
|
|
|
|
|
|
|
Status = PerfSetCounterSetInfo(NodeCounterProvider,
|
|
|
|
&NodeCounterSetInfo.CounterSet,
|
|
|
|
sizeof NodeCounterSetInfo);
|
|
|
|
if (Status != ERROR_SUCCESS) {
|
|
|
|
CounterCleanup();
|
|
|
|
return Status;
|
|
|
|
}
|
|
|
|
return ERROR_SUCCESS;
|
|
|
|
}
|