使用访问忙/闲数据的相对时间
忙/闲 API 中的 IFreeBusyData 接口使用相对时间的概念,该概念是自 1601 年 1 月 1 日起的分钟数,以世界时 (UTC) 表示,并且是 LONG 类型的值。
下面是一些常用的相对时间值:
ULONG ulrtmMax = 1525252319L
ULONG ulrtmMin = 0L
使用上述最大和最小相对时间值来帮助验证相对时间值是否有效。
由于 NTFS 以 FILETIME 格式本机记录文件时间,因此使用下面的代码示例将相对时间转换为 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;
}