This example demonstrates using this library in C# to query the hardware monitoring data.
C# Console MAHM Application Demo
using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using MSI.Afterburner; using MSI.Afterburner.Exceptions; namespace CSharpMAHMDemo { class CSharpMAHMDemo { static void Main(string[] args) { try { // connect to MACM shared memory HardwareMonitor mahm = new HardwareMonitor(); // print out current MACM Header values Console.WriteLine("***** MSI AFTERTERBURNER HARDWARE MONITOR HEADER *****"); Console.WriteLine(mahm.Header.ToString().Replace(";", "\n")); Console.WriteLine(); // print out current MAHM GPU Entry values for (int i = 0; i < mahm.Header.GpuEntryCount; i++) { Console.WriteLine("***** MSI AFTERTERBURNER GPU " + i + " *****"); Console.WriteLine(mahm.GpuEntries[i].ToString().Replace(";", "\n")); Console.WriteLine(); } // print out current Entry values for (int i = 0; i < mahm.Header.EntryCount; i++) { Console.WriteLine("***** MSI AFTERTERBURNER DATA SOURCE " + i + " *****"); Console.WriteLine(mahm.Entries[i].ToString().Replace(";", "\n")); Console.WriteLine(); } // show a data source monitor several times HardwareMonitorEntry framerate = mahm.GetEntry(HardwareMonitor.GPU_GLOBAL_INDEX, MONITORING_SOURCE_ID.FRAMERATE); if (framerate != null) { Console.WriteLine("***** FRAMERATE *****"); for(int i = 0; i < 10; i++) { Console.WriteLine(framerate.Data); System.Threading.Thread.Sleep(1000); mahm.ReloadEntry(framerate); } } } catch (Exception e) { Console.WriteLine(e.Message); if (e.InnerException != null) Console.WriteLine(e.InnerException.Message); } Console.WriteLine("\nPress any key to exit"); Console.ReadKey(); } } }
C# Console MAHM Application Output
***** MSI AFTERTERBURNER HARDWARE MONITOR HEADER *****
Signature = MAHM
Version = 2.0
HeaderSize = 32
EntryCount = 19
EntrySize = 1324
Time = 05:11:12 Apr-26-2011
GpuEntryCount = 2
GpuEntrySize = 1304
-
***** MSI AFTERTERBURNER GPU 0 *****
GpuId = VEN_10DE&DEV_1244&SUBSYS_26101462&REV_A1&BUS_1&DEV_0&FN_0
Family = GF116
Device = GeForce GTX 550 Ti
Driver = ForceWare 267.59
BIOS = 70.26.18.00.00
MemAmount = 0
-
***** MSI AFTERTERBURNER GPU 1 *****
GpuId = VEN_10DE&DEV_1244&SUBSYS_26101462&REV_A1&BUS_2&DEV_0&FN_0
Family = GF116
Device = GeForce GTX 550 Ti
Driver = ForceWare 267.59
BIOS = 70.26.18.00.00
MemAmount = 0
-
***** MSI AFTERTERBURNER DATA SOURCE 0 *****
SrcName = GPU1 temperature
SrcUnits = °C
LocalizedSourceName = GPU1 temperature
LocalizedSrcUnits = °C
RecommendedFormat = %.0f
Data = 45
MinLimit = 0
MaxLimit = 100
Flags = SHOW_IN_OSD
GPU = 0
SrcId = 0
-
***** MSI AFTERTERBURNER DATA SOURCE 1 *****
SrcName = GPU2 temperature
SrcUnits = °C
LocalizedSourceName = GPU2 temperature
LocalizedSrcUnits = °C
RecommendedFormat = %.0f
Data = 32
MinLimit = 0
MaxLimit = 100
Flags = SHOW_IN_OSD
GPU = 1
SrcId = 0
-
***** MSI AFTERTERBURNER DATA SOURCE 2 *****
SrcName = GPU1 usage
SrcUnits = %
LocalizedSourceName = GPU1 usage
LocalizedSrcUnits = %
RecommendedFormat = %.0f
Data = 0
MinLimit = 0
MaxLimit = 100
Flags = SHOW_IN_OSD
GPU = 0
SrcId = 48
-
***** MSI AFTERTERBURNER DATA SOURCE 3 *****
SrcName = GPU2 usage
SrcUnits = %
LocalizedSourceName = GPU2 usage
LocalizedSrcUnits = %
RecommendedFormat = %.0f
Data = 0
MinLimit = 0
MaxLimit = 100
Flags = SHOW_IN_OSD
GPU = 1
SrcId = 48
-
***** MSI AFTERTERBURNER DATA SOURCE 4 *****
SrcName = GPU1 voltage
SrcUnits = V
LocalizedSourceName = GPU1 voltage
LocalizedSrcUnits = V
RecommendedFormat = %.3f
Data = 1.087
MinLimit = 0
MaxLimit = 2
Flags = None
GPU = 0
SrcId = 64
-
***** MSI AFTERTERBURNER DATA SOURCE 5 *****
SrcName = GPU2 voltage
SrcUnits = V
LocalizedSourceName = GPU2 voltage
LocalizedSrcUnits = V
RecommendedFormat = %.3f
Data = 0.95
MinLimit = 0
MaxLimit = 2
Flags = None
GPU = 1
SrcId = 64
-
***** MSI AFTERTERBURNER DATA SOURCE 6 *****
SrcName = GPU1 fan speed
SrcUnits = %
LocalizedSourceName = GPU1 fan speed
LocalizedSrcUnits = %
RecommendedFormat = %.0f
Data = 47
MinLimit = 0
MaxLimit = 100
Flags = SHOW_IN_OSD
GPU = 0
SrcId = 16
-
***** MSI AFTERTERBURNER DATA SOURCE 7 *****
SrcName = GPU2 fan speed
SrcUnits = %
LocalizedSourceName = GPU2 fan speed
LocalizedSrcUnits = %
RecommendedFormat = %.0f
Data = 40
MinLimit = 0
MaxLimit = 100
Flags = SHOW_IN_OSD
GPU = 1
SrcId = 16
-
***** MSI AFTERTERBURNER DATA SOURCE 8 *****
SrcName = GPU1 fan tachometer
SrcUnits = RPM
LocalizedSourceName = GPU1 fan tachometer
LocalizedSrcUnits = RPM
RecommendedFormat = %.0f
Data = 1620
MinLimit = 0
MaxLimit = 10000
Flags = None
GPU = 0
SrcId = 17
-
***** MSI AFTERTERBURNER DATA SOURCE 9 *****
SrcName = GPU2 fan tachometer
SrcUnits = RPM
LocalizedSourceName = GPU2 fan tachometer
LocalizedSrcUnits = RPM
RecommendedFormat = %.0f
Data = 1380
MinLimit = 0
MaxLimit = 10000
Flags = None
GPU = 1
SrcId = 17
-
***** MSI AFTERTERBURNER DATA SOURCE 10 *****
SrcName = GPU1 core clock
SrcUnits = MHz
LocalizedSourceName = GPU1 core clock
LocalizedSrcUnits = MHz
RecommendedFormat = %.0f
Data = 950.0001
MinLimit = 0
MaxLimit = 1500
Flags = None
GPU = 0
SrcId = 32
-
***** MSI AFTERTERBURNER DATA SOURCE 11 *****
SrcName = GPU2 core clock
SrcUnits = MHz
LocalizedSourceName = GPU2 core clock
LocalizedSrcUnits = MHz
RecommendedFormat = %.0f
Data = 50.5
MinLimit = 0
MaxLimit = 1500
Flags = None
GPU = 1
SrcId = 32
-
***** MSI AFTERTERBURNER DATA SOURCE 12 *****
SrcName = GPU1 shader clock
SrcUnits = MHz
LocalizedSourceName = GPU1 shader clock
LocalizedSrcUnits = MHz
RecommendedFormat = %.0f
Data = 1900
MinLimit = 0
MaxLimit = 2500
Flags = None
GPU = 0
SrcId = 33
-
***** MSI AFTERTERBURNER DATA SOURCE 13 *****
SrcName = GPU2 shader clock
SrcUnits = MHz
LocalizedSourceName = GPU2 shader clock
LocalizedSrcUnits = MHz
RecommendedFormat = %.0f
Data = 101
MinLimit = 0
MaxLimit = 2500
Flags = None
GPU = 1
SrcId = 33
-
***** MSI AFTERTERBURNER DATA SOURCE 14 *****
SrcName = GPU1 memory clock
SrcUnits = MHz
LocalizedSourceName = GPU1 memory clock
LocalizedSrcUnits = MHz
RecommendedFormat = %.0f
Data = 2150
MinLimit = 0
MaxLimit = 2500
Flags = None
GPU = 0
SrcId = 34
-
***** MSI AFTERTERBURNER DATA SOURCE 15 *****
SrcName = GPU1 memory usage
SrcUnits = MB
LocalizedSourceName = GPU1 memory usage
LocalizedSrcUnits = MB
RecommendedFormat = %.0f
Data = 131.2148
MinLimit = 0
MaxLimit = 2048
Flags = None
GPU = 0
SrcId = 49
-
***** MSI AFTERTERBURNER DATA SOURCE 16 *****
SrcName = GPU2 memory clock
SrcUnits = MHz
LocalizedSourceName = GPU2 memory clock
LocalizedSrcUnits = MHz
RecommendedFormat = %.0f
Data = 135
MinLimit = 0
MaxLimit = 2500
Flags = None
GPU = 1
SrcId = 34
-
***** MSI AFTERTERBURNER DATA SOURCE 17 *****
SrcName = GPU2 memory usage
SrcUnits = MB
LocalizedSourceName = GPU2 memory usage
LocalizedSrcUnits = MB
RecommendedFormat = %.0f
Data = 131.2148
MinLimit = 0
MaxLimit = 2048
Flags = None
GPU = 1
SrcId = 49
-
***** MSI AFTERTERBURNER DATA SOURCE 18 *****
SrcName = Framerate
SrcUnits = FPS
LocalizedSourceName = Framerate
LocalizedSrcUnits = FPS
RecommendedFormat = %.0f
Data = 0
MinLimit = 0
MaxLimit = 200
Flags = SHOW_IN_OSD
GPU = 4294967295
SrcId = 80
-
***** FRAMERATE *****
62.13018
61.14399
63.11637
64.10256
66.07495
69.03353
71.99211
81.85404
114.3984
145.9566
-
Press any key to exit