- __int64 counter;
- QueryPerformanceCounter( (LARGE_INTEGER*)&counter);
-
- counter -= g_appTime.baseCounter;
-
- AbsoluteTime time;
- time.lo = (unsigned long)counter;
- time.hi = (unsigned long)(counter >> 32);
- return time;
-}
-
-
-Duration AbsoluteDeltaToDuration( AbsoluteTime& a, AbsoluteTime& b)
-{
- __int64 value = a.hi;
- value <<= 32;
- value |= a.lo;
- __int64 value2 = b.hi;
- value2 <<= 32;
- value2 |= b.lo;
- value -= value2;
-
- if (value <= 0)
- return durationImmediate;
-
- __int64 frac = value % g_appTime.counterRate;
- value /= g_appTime.counterRate;
-
- Duration time;
-
- if (value == 0)
- {
- frac *= -1000000;
- frac /= g_appTime.counterRate;
- time = (Duration)frac;
- }
- else
- {
- frac *= 1000;
- frac /= g_appTime.counterRate;
- value *= 1000;
- value += frac;
- time = (Duration)value;
- }
-
- return time;
-}