FILETIME

Programming Far Manager plugins

FILETIME

Структура FILETIME - это 64-х разрядное значение, представляющее число сто-наносекундных интервалов, прошедших с первого января 1601 года (UTC).
typedef struct _FILETIME {
  DWORD dwLowDateTime;
  DWORD dwHighDateTime;
} FILETIME; 

Элементы

dwLowDateTime
Младшие 32 бита времени файла
dwHighDateTime
Старшие 32 бита времени файла

Замечания

Не рекомендуется, добавлять или вычитать значения из этой структуры для получения относительного времени. Вместо этого вы можете:

  • Скопировать результирующую структуру в структуру ULARGE_INTEGER
  • Использовать обычную 64-х битную арифметику для значения ULARGE_INTEGER или привести переменную типа FILETIME к типу __int64:
    FILETIME WriteTime1, WriteTime2;
    
    if(*(__int64*) & WriteTime1 == *(__int64*) & WriteTime2)
     ...
    
Не все файловые системы могут хранить время создания и доступа, и не все они хранят времена одинаковым образом. Например, в FAT время создания задаётся с точностью до 10 миллисекунд, записи - до 2 секунд, а время доступа - 1 день (фактически, дата доступа). У NTFS время доступа имеет точность в 1 час. Таким образом, функция GetFileTime может вернуть время, отличное от установленного функцией SetFileTime. К тому же, FAT хранит времена в локальном часовом поясе, а NTFS - в универсальном синхронизированном времени (UTC).

Смотрите также: