"FILETIME structure" ?!?



  • hallo,

    habe eine frage zur "FILETIME structure".
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms724284(v=vs.85).aspx

    was 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, &timestamp.LowPart, sizeof(DWORD));
    memcpy(&ft.dwHighDateTime, &timestamp.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


Anmelden zum Antworten