负dwLowDateTime在FILETIME结构中的含义是什么?

abi*_*ash 2 c c++ winapi datetime

我知道这个FILETIME结构从1601年1月1日起以100纳秒的步长形成了日期时间值.但是什么意思dwLowDateTime的价值小于0?

Goz*_*Goz 7

这意味着您将其视为int而不是unsigned int,因此它可以显示为负数.

正如Matteo Italia所说,最好将它放在ULARGE_INTEGER中,如下所示:

ULARGE_INTEGER uli;
uli.LowPart  = ft.dwLowDateTime;
uli.HighPart = ft.dwHighDateTime;
__int64 filetime64 = uli.QuadPart;
Run Code Online (Sandbox Code Playgroud)

您甚至可以使用memcpy执行以下操作:

__int64 fileTime64;
memcpy( &fileTime64, &ft, sizeof( __int64 ) );
Run Code Online (Sandbox Code Playgroud)