2

我知道该FILETIME结构从 1601 年 1 月 1 日开始以 100 纳秒的步长形成日期时间值。但是小于 0 的值是什么意思dwLowDateTime

4

1 回答 1

7

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

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

ULARGE_INTEGER uli;
uli.LowPart  = ft.dwLowDateTime;
uli.HighPart = ft.dwHighDateTime;
__int64 filetime64 = uli.QuadPart;

您甚至可以使用 memcpy 执行此操作,如下所示:

__int64 fileTime64;
memcpy( &fileTime64, &ft, sizeof( __int64 ) );
于 2012-10-29T15:26:28.530 回答