Использование относительного времени для доступа к данным о доступности
Интерфейс IFreeBusyData в API доступности использует понятие относительного времени, которое представляет собой количество минут с 1 января 1601 г., выраженное в формате универсального времени (UTC) и значение типа LONG.
Ниже приведены некоторые часто используемые относительные значения времени.
ULONG ulrtmMax = 1525252319L
ULONG ulrtmMin = 0L
Используйте предыдущие значения максимального и минимального относительного времени, чтобы убедиться, что относительные значения времени действительны.
Так как NTFS изначально записывает время файла в формате FILETIME , может быть удобно использовать следующий пример кода для преобразования относительного времени в FILETIME и из него.
static const LONGLONG UnitsPerMinute = 600000000;
static const LONGLONG UnitsPerHalfMinute = 300000000;
void RTimeToFileTime(LONG rtime, FILETIME *pft)
{
Assert(pft != NULL);
ULARGE_INTEGER *puli = (ULARGE_INTEGER *)pft;
puli->QuadPart = rtime * UnitsPerMinute;
}
void FileTimeToRTime(FILETIME *pft, LONG* prtime)
{
Assert(pft != NULL);
Assert(prtime != NULL);
ULARGE_INTEGER uli = *(ULARGE_INTEGER *)pft;
uli.QuadPart += UnitsPerHalfMinute;
uli.QuadPart /= UnitsPerMinute;
*prtime = uli.LowPart;
}