Performance Counters Functions

Use the following functions to consume and provide performance data.

Consumer functions

Performance Data Helper (PDH) functions

Use the Performance Data Helper (PDH) functions to consume performance data from both V1 and V2 performance data providers.


Windows OneCore apps cannot use the PDH functions. If you are writing Windows OneCore apps, use PerfLib V2 Consumer functions.

PerfLib V2 Consumer functions

Use the PerfLib V2 Consumer functions to consume performance data from V2 performance data providers if you cannot use the Performance Data Helper (PDH) functions. These functions might be used when writing OneCore applications to collect V2 countersets or when you need to collect specific V2 countersets with minimal dependencies and overhead.


The PerfLib V2 Consumer functions are harder to use than the Performance Data Helper (PDH) functions and only support collecting data from V2 providers. The PDH functions should be preferred for most applications.

Provider functions

PerfLib V2 Provider functions

V2 performance data providers use the following functions:


To install and uninstall V2 providers, use the lodctr and unlodctr tools. The LoadPerfCounterTextStrings and UnloadPerfCounterTextStrings functions cannot be used to install and uninstall V2 providers.

Performance DLL functions

V1 performance data providers implement a DLL that provides the following functions:


Due to significant performance and reliability issues, V1 performance data providers are deprecated. Although you still can use a performance extension DLL to provide counter data, you are encouraged to create a V2 provider instead. You also are encouraged to replace existing V1 providers with V2 providers.

V1 providers can be installed and uninstalled using the lodctr and unlodctr tools or by calling the following functions: