需要求从1970年1月1日到现在的微秒时间数值,用到了FILETIME和LARGEINTEGER
首先看一下定义
//FILETIME
typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME, *LPFILETIME;
//LARGE_INTEGER
typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
} DUMMYSTRUCTNAME;
struct {
DWORD LowPart;
LONG HighPart;
} u;
LONGLONG QuadPart;
} LARGE_INTEGER;
LARGE_INTEGER是一个共用体,前两个结构体表示在32位系统下,使用大端和小端存储两个long类型(4个字节)的数值,最后一个long long表示直接使用8个字节来存储整个数值。
FILETIME中有两个DWORD类型的数,其实也就是两个long类型的数值,说明其把时间这个8个字节表示的数值分成了使用两个long类型的数值来表示。