//------------------------------------------------------------------ // !!! WARNING !!! // // This file is auto generated by ctrpp.exe utility from performance // counters manifest: // // src\res\node_perfctr_provider.man // // It should be regenerated every time the code is built. // Do not check it in. //------------------------------------------------------------------- #pragma once #include #include 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; }