Du kan konvertere en SYSTEMTIME struktur til en FILETIME struktur med SystemTimeToFileTime funktionen:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724948(v=vs.85).aspxFILETIME kan fortolkes som en 64 bit værdi (to 32 bit værdier), som du bare kan trække fra hinanden.
Følgende bette program viser, hvordan man kunne gøre det:
- #include <stdio.h>
- #include <windows.h>
-
- /**
- * Returns the difference between the two SYSTEMTIME objects
- * in nanoseconds.
- */
- ULONGLONG diff_time(SYSTEMTIME * st1, SYSTEMTIME * st2) {
- FILETIME ft1, ft2;
- ULARGE_INTEGER i1, i2;
-
- /* First convert to FILETIME structures */
- SystemTimeToFileTime(st1, &ft1);
- SystemTimeToFileTime(st2, &ft2);
-
- /* Then convert to ULARGE_INTEGERs */
- i1.LowPart = ft1.dwLowDateTime;
- i1.HighPart = ft1.dwHighDateTime;
- i2.LowPart = ft2.dwLowDateTime;
- i2.HighPart = ft2.dwHighDateTime;
-
- /* Return difference */
- return i2.QuadPart - i1.QuadPart;
- }
-
- int main(int argc, char ** argv) {
- SYSTEMTIME st1, st2;
-
- GetSystemTime(&st1);
- Sleep(500);
- GetSystemTime(&st2);
- printf("Difference: %ld\n", diff_time(&st1, &st2));
-
- return 0;
- }
Indlæg senest redigeret d. 03.01.2013 09:18 af Bruger #2695