Usar o tempo relativo para acessar dados de disponibilidade
A interface IFreeBusyData na API de Disponibilidade usa um conceito de tempo relativo, que é o número de minutos desde 1º de janeiro de 1601, que é expresso em Tempo Universal (UTC) e é um valor do tipo LONG.
Estes são alguns valores de tempo relativo usados com frequência:
ULONG ulrtmMax = 1525252319L
ULONG ulrtmMin = 0L
Use os valores de tempo relativo máximo e mínimo acima para verificar se os valores de tempo relativo são válidos.
Como o NTFS registra tempos de arquivo nativamente no formato FILETIME, pode ser útil usar o exemplo de código a seguir para converter o tempo relativo de e para 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;
}