Winapi 如何在Win32中创建文件时间?

Winapi 如何在Win32中创建文件时间?,winapi,int,filetime,Winapi,Int,Filetime,我有一个值\uuu int64,它是一个64位FILETIME值FILETIME具有dwLowDateTime和dwHighDateTime。当我尝试将\uuu int64分配给FILETIME时,我得到了一个C2440。如何将\uuu int64分配给文件时间 或者如何分割\uuu int64,以便将低部分分配给dwLowDateTime,将高部分分配给dwHighDateTime?以下是基本轮廓 __int64 t; FILETIME ft; ft.dwLowDateTime = (DWO

我有一个值
\uuu int64
,它是一个64位
FILETIME
FILETIME
具有
dwLowDateTime
dwHighDateTime
。当我尝试将
\uuu int64
分配给
FILETIME
时,我得到了一个C2440。如何将
\uuu int64
分配给
文件时间


或者如何分割
\uuu int64
,以便将低部分分配给
dwLowDateTime
,将高部分分配给
dwHighDateTime

以下是基本轮廓

__int64 t;
FILETIME ft;

ft.dwLowDateTime = (DWORD)t;
ft.dwHighDateTime = (DWORD)(t >> 32);
不建议使用方法

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

由于文件时间的巧妙安排,它可以工作,但在可移植性和清晰性方面的牺牲是不值得的。仅在证明急需时使用,并将其包装在资产中以证明其有效。

以下是基本概述

__int64 t;
FILETIME ft;

ft.dwLowDateTime = (DWORD)t;
ft.dwHighDateTime = (DWORD)(t >> 32);
__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;
不建议使用方法

ft = *(FILETIME *)(&t);
由于文件时间的巧妙安排,它可以工作,但在可移植性和清晰性方面的牺牲是不值得的。仅在证明急需时使用,并将其包装在资产中以证明其有效。

\uu int64 i;
__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;
文件时间ft; //从_uint64到文件时间 ft.dwHighDateTime=(DWORD)(i>>32); ft.dwLowDateTime=(DWORD)(i&0xFFFFFFFF); //从FILETIME到_uint64 i=(ft.dwHighDateTime
\uu int64 i;
文件时间ft;
//从_uint64到文件时间
ft.dwHighDateTime=(DWORD)(i>>32);
ft.dwLowDateTime=(DWORD)(i&0xFFFFFFFF);
//从FILETIME到_uint64
i=(ft.dwHighDateTimeMike

您可以使用ULARGE_INTEGER结构将_int64复制到FILETIME中:

__int64 i64;
ULARGE_INTEGER li;
FILETIME ft;

li.QuadPart = i64;
ft.dwHighDateTime = li.HighPart;
ft.dwLowDateTime = li.LowPart;
迈克

您可以使用ULARGE_INTEGER结构将_int64复制到FILETIME中:

__int64 i64;
ULARGE_INTEGER li;
FILETIME ft;

li.QuadPart = i64;
ft.dwHighDateTime = li.HighPart;
ft.dwLowDateTime = li.LowPart;

掩码应为0xFFFFFF。除非在掩码应为0xFFFFFF之前将ft.dwHighDateTime强制转换为_int64,否则第二次转换将不起作用。除非在掩码应为0xFFFFFF之前将ft.dwHighDateTime强制转换为_int64,否则第二次转换将不起作用