Tue, May 15, 2007, 04:10 PM under
dotNET |
Windows |
Vista |
Orcas
One of the namespaces in the new
System.Core.dll is
System.Diagnostics.PerformanceData. It is a set of classes that wrap a new set of performance counter APIs (in Advapi32.dll) that are applicable only to Vista and higher. Here is a class diagram followed by an explanation:
Rather than actual code, here are the steps for working with the set of classes above.
1. Create a
CounterSet object specifying the
CounterSetInstanceType2. On this instance, call
AddCounter specifying an integer id and a
CounterType (plus optionally a name) [repeat this step as desired]
3. Once done repeating step 2, call
CreateCounterSetInstance to obtain a
CounterSetInstance object.
4. On the object of step 3, via its
Counters property get an instance of the collection object:
CounterSetInstanceCounterDataSet5. From this collection, retireve the
CounterData objects either via the integer id or by name
6. Only one
long Value property on the
CounterData objects to tell you what you are after
In case you are wondering, step 1 above wraps
PerfStartProvider and step 3 wraps three APIs in sequence:
PerfSetCounterSetInfo,
PerfCreateInstance and
PerfSetCounterRefValue. If you look at the native signatures and the "cute" structures they expect you to setup, then you'll realise why it has been wrapped for us :-)