"FILETIME structure" ?!?
-
hallo,
habe eine frage zur "FILETIME structure".
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724284(v=vs.85).aspxwas genau muss ich als "dwLowDateTime" und was als "dwHighDateTime" übergeben? stunden/minuten/sekunden? datum? sekunden seit dem 1.1.1970?
-
Die FILETIME-Struktur stellt einen 64-bit unsigned Integer dar, der aber auf 2 Felder mit je 32-Bit (dwLowDateTime und dwHighDateTime) aufgeteilt ist.
msdn empfiehlt:
msdn schrieb:
It is not recommended that you add and subtract values from the FILETIME structure to obtain relative times. Instead, you should copy the low- and high-order parts of the file time to a ULARGE_INTEGER structure, perform 64-bit arithmetic on the QuadPart member, and copy the LowPart and HighPart members into the FILETIME structure.
D.h. man kann statt mit dwLowDateTime + dwHighDateTime hantieren zu müssen, auch einen ULARGE_INTEGER nehmen, da mit QuadPart (ein 64-bit unsigned Integer) hantieren, wobei dessen LowPart und HighPart Member automatisch mit geändert werden und dann LowPart und HighPart einfach in einen FILETIME kopieren.
// Ungetester Code ;D ULARGE_INTEGER timestamp; // Zeit in 100-ns Schritten seit 1.1.1601 (UTC) // (z.B.: 129856385580000000 = Sunday, July 1, 2012 1:49:18pm) timestamp.QuadPart=129856385580000000; // Konvertieren nach FILETIME: FILETIME ft; // Highpart und Lowpart aus timestamp kopieren: memcpy(&ft.dwLowDateTime, ×tamp.LowPart, sizeof(DWORD)); memcpy(&ft.dwHighDateTime, ×tamp.HighPart, sizeof(DWORD)); // Fertig ist die FILETIME
-
ok danke.
woher hast du die nanosekunden? ausgerechnet oder gibts da auch eine funktion?
-
http://www.silisoftware.com/tools/date.php
...man kann aber auch die SYSTEMTIME Struktur befüllen und es nach FILETIME umrechnen lassen, wenn man irgendwo FILETIME benötigt:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724948.aspx