0

__int6464ビット値の値がありFILETIMEます。FILETIMEとがdwLowDateTimeありdwHighDateTimeます。をに割り当てようとすると__int64FILETIMEC2440が表示されます。__int64にを割り当てるにはどうすればよいFILETIMEですか?

または、低い部分と高い部分をに__int64割り当てることができるように、を分割するにはどうすればよいですか?dwLowDateTimedwHighDateTime

4

3 に答える 3

3

これが基本的な概要です。

__int64 t;
FILETIME ft;

ft.dwLowDateTime = (DWORD)t;
ft.dwHighDateTime = (DWORD)(t >> 32);

推奨されないアプローチ

ft = *(FILETIME *)(&t);

FILETIMEの巧妙な配置により機能しますが、移植性と明瞭さを犠牲にする価値はありません。緊急の必要性が証明された場合にのみ使用し、それが機能することを証明するためにアサートラップします。

于 2009-07-08T20:06:59.570 に答える
2

マイク、

ULARGE_INTEGER構造体を使用して、__int64をFILETIMEにコピーできます。

__int64 i64;
ULARGE_INTEGER li;
FILETIME ft;

li.QuadPart = i64;
ft.dwHighDateTime = li.HighPart;
ft.dwLowDateTime = li.LowPart;
于 2009-07-08T20:13:55.763 に答える
0
__int64 i;
FILETIME ft;

// From __int64 to FILETIME

ft.dwHighDateTime = (DWORD)(i >> 32);
ft.dwLowDateTime = (DWORD)(i & 0xFFFFFFFF);


// From FILETIME to __int64

i = (ft.dwHighDateTime << 32) + ft.dwLowDateTime;
于 2009-07-08T20:10:07.020 に答える