Преобразование значения time_t в FILETIME
Функции времени, включенные во время выполнения C, используют тип time_t для представления количества секунд, прошедшего с полуночи, 1 января 1970 года. В следующем примере значение time_t преобразуется в значение FILETIME.
#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;
}
Получив значение FILETIME, можно преобразовать значение в системное время с помощью функции FileTimeToSystemTime .
Пример устаревшего кода
Пример кода, приведенный в предыдущем разделе, подходит для любой архитектуры. Но если вы создаете для 32-разрядной архитектуры и определяете _USE_32BIT_TIME_T, то time_t является 32-разрядным значением. В этом случае вы можете использовать следующий пример кода.
#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;
}