MSI Afterburner - MSI Graphics Card Performance Booster

This example demonstrates using this library in C# to query the hardware monitoring data.

C# Console MAHM Application Demo

CopyC#
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