I'm creating a mock object to test my application so that it works at the boundary conditions of time. I'm using FILETIME
in the Windows SDK.
The link shows the earliest time which is January 1, 1601 (I'm assuming midnight 00:00:00 and both dwLowDateTime
and dwHighDateTime
are 0x00000000
), so I have that. What is the latest possible FILETIME?
My first instinct is to set dwLowDateTime
and dwHighDateTime
to 0xFFFFFFFF
, but then I questioned if that really is a valid time that I need to test, due to where my linked page says the SetFileTime
function uses 0xFFFFFFFF
to specify that a file's previous access time should be preserved.
My understanding is that FILETIME
was made to represent any valid SYSTEMTIME
in 64 bits. If you take the limit of SYSTEMTIME
(last millisecond in 30827) then you end up with a FILETIME
of 0x7fff35f4f06c58f0
by using SystemTimeToFileTime()
.
However, if you put 0x7fffffffffffffff
into FileTimeToSystemTime()
then you will end up in the year 30828, although this date is invalid for SYSTEMTIME
. Any larger value (0x8000000000000000
and above) causes FileTimeToSystemTime()
to fail.
All in all, I would recommend not to go beyond 0x7fff35f4f06c58f0
in order to stay compatible with SYSTEMTIME
.