Fixed Issue 387. The new implementation does not try to start a ring 0 driver that already exists, but could not be opened. It tries to delete the driver and install it new. The driver is now stored temporarily in the application folder. The driver is not correctly removed on system shutdown.
2 using System.Collections.Generic;
4 using System.Runtime.InteropServices;
5 using System.Diagnostics.CodeAnalysis;
10 /// High resolution timer, used to test performance
12 public static class TimeCounter
14 private static Int64 _start;
17 /// Start time counting
19 public static void Start()
22 QueryPerformanceCounter(ref _start);
25 public static Int64 GetStartValue()
28 QueryPerformanceCounter(ref t);
33 /// Finish time counting
35 /// <returns>time in seconds elapsed from Start till Finish </returns>
36 public static double Finish()
38 return Finish(_start);
41 public static double Finish(Int64 start)
44 QueryPerformanceCounter(ref finish);
47 QueryPerformanceFrequency(ref freq);
48 return (finish - start) / (double)freq;
51 [DllImport("Kernel32.dll")]
52 [return: MarshalAs(UnmanagedType.Bool)]
53 static extern bool QueryPerformanceCounter(ref Int64 performanceCount);
55 [DllImport("Kernel32.dll")]
56 [return: MarshalAs(UnmanagedType.Bool)]
57 static extern bool QueryPerformanceFrequency(ref Int64 frequency);