Konvertieren eines time_t-Werts in eine FILETIME
Die in der C-Laufzeit enthaltenen Zeitfunktionen verwenden den time_t-Typ , um die Anzahl von Sekunden darzustellen, die seit Mitternacht, dem 1. Januar 1970 verstrichen sind. Im folgenden Beispiel wird ein time_t Wert in einen FILETIME-Wert konvertiert.
#include <windows.h>
#include <time.h>
void TimetToFileTime(time_t t, LPFILETIME pft)
{
ULARGE_INTEGER time_value;
time_value.QuadPart = (t * 10000000LL) + 116444736000000000LL;
pft->dwLowDateTime = time_value.LowPart;
pft->dwHighDateTime = time_value.HighPart;
}
Nachdem Sie eine FILETIME abgerufen haben, können Sie den Wert mithilfe der FileTimeToSystemTime-Funktion in die Systemzeit konvertieren.
Legacycodebeispiel
Das Codebeispiel im vorherigen Abschnitt eignet sich für jede Architektur. Wenn Sie jedoch für eine 32-Bit-Architektur erstellen und _USE_32BIT_TIME_T definieren, ist time_t ein 32-Bit-Wert. In diesem Fall haben Sie die Möglichkeit, stattdessen das folgende Codebeispiel zu verwenden.
#include <windows.h>
#include <time.h>
void TimetToFileTime(time_t t, LPFILETIME pft)
{
LONGLONG time_value = Int32x32To64(t, 10000000) + 116444736000000000;
pft->dwLowDateTime = (DWORD) time_value;
pft->dwHighDateTime = time_value >> 32;
}