Winapi 什么是dwLowDateTime和dwHighDateTime

Winapi 什么是dwLowDateTime和dwHighDateTime,winapi,Winapi,我知道它们是FileTime结构中的变量,但是文件时间的低阶和高阶部分是什么呢?这是传统的东西。关键是通过两个32位值来获得64位值。因此,你最后要做的是: FILETIME ft; // get time here __int64 fileTime64; memcpy( &fileTime64, &ft, sizeof( __int64 ) ); 或者,正如Microsoft希望您这样做: FILETIME ft; // get time here ULARGE_INTEGE

我知道它们是FileTime结构中的变量,但是文件时间的低阶和高阶部分是什么呢?

这是传统的东西。关键是通过两个32位值来获得64位值。因此,你最后要做的是:

FILETIME ft;
// get time here
__int64 fileTime64;
memcpy( &fileTime64, &ft, sizeof( __int64 ) );
或者,正如Microsoft希望您这样做:

FILETIME ft;
// get time here
ULARGE_INTEGER ul;
ul.LowPart = ft.dwLowDateTime;
ul.HighPart = ft.dwHighDateTime;
__int64 fileTime64 = ul.QuadPart;

较旧的编译器不支持64位类型。因此,该结构将64位值拆分为两个32位部分。低位部分包含最低有效32位。高位部分包含最高有效的32位

因此,如果有两个32位部分,则对应的64位值为

low + 2^32 * high
从两个32位部分获取64位值的方法是通过union

从文件中:

不建议您通过在FILETIME结构中添加和减去值来获得相对时间。相反,您应该将文件时间的低阶和高阶部分复制到一个ULARGE_整数结构中,对四部分成员执行64位算术,并将低阶和高阶成员复制到文件时间结构中

不要将指向FILETIME结构的指针强制转换为ULARGE_INTEGER*或_int64*值,因为这可能会导致64位窗口上的对齐错误


根据文档,您需要通过
ULARGE\u INTEGER
结构来实现:)