使用访问忙/闲数据的相对时间

忙/闲 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; 
} 

另请参阅