如何确定TimeDateStamp

时间:2017-04-05 15:36:12

标签: c windows

我正在编写有关Windows PE标题的内容。我想确定Timestamp值。 这是_IMAGE_FILE_HEADER结构

typedef struct _IMAGE_FILE_HEADER {
    WORD    Machine;
    WORD    NumberOfSections;
    DWORD   TimeDateStamp;
    DWORD   PointerToSymbolTable;
    DWORD   NumberOfSymbols;
    WORD    SizeOfOptionalHeader;
    WORD    Characteristics;
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;

此变量的值为TimeDateStamp:0x58e451ac

2 个答案:

答案 0 :(得分:1)

根据MSDN: IMAGE_FILE_HEADER structureTimeDateStamp的{​​{1}}成员是图像时间戳的低32位。它表示链接器创建映像的时间。该值表示为自1970年1月1日开始以来的世界协调时间内的秒数。

可以使用以下函数将其转换为IMAGE_FILE_HEADER值:

FILETIME

然后,您可以使用Windows FILETIME TimeDateStampToFileTime(DWORD timeDateStamp) { ULARGE_INTEGER ftu; FILETIME ft; ftu.QuadPart = (timeDateStamp + 11644473600ull) * 100000000ull; ft.LowPart = ftu.u.LowPart; ft.HighPart = ftu.u.Highpart; return ft; } 功能将FILETIME转换为细分SYSTEMTIME结构。

答案 1 :(得分:0)

我找到了类似的解决方案。

 time_t TimeX = (time_t)header.TimeDateStamp;
 tm* pGMT = gmtime(&TimeX);
 char* pTime = asctime(pGMT);