| /* 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; |
| } |