我在读NT日志的时候,取得了日志记录的产生时间是从1970年1月1号00:00:00到现在的总秒数。日志记录的结构形式如下(摘自MSDN)
The EVENTLOGRECORD structure contains information about an event record returned by the ReadEventLog function. typedef struct _EVENTLOGRECORD { 
  DWORD  Length; 
  DWORD  Reserved; 
  DWORD  RecordNumber; 
  DWORD  TimeGenerated; 
  DWORD  TimeWritten; 
  DWORD  EventID; 
  WORD   EventType; 
  WORD   NumStrings; 
  WORD   EventCategory; 
  WORD   ReservedFlags; 
  DWORD  ClosingRecordNumber; 
  DWORD  StringOffset; 
  DWORD  UserSidLength; 
  DWORD  UserSidOffset; 
  DWORD  DataLength; 
  DWORD  DataOffset; 
  // 
  // Followed by: 
  // 
  // TCHAR SourceName[] 
  // TCHAR Computername[] 
  // SID   UserSid 
  // TCHAR Strings[] 
  // BYTE  Data[] 
  // CHAR  Pad[] 
  // DWORD Length; 
  // 
} EVENTLOGRECORD, *PEVENTLOGRECORD;
其中TimeGenerated就是产生的时间,我用一个运行库函数localtime将这个数值转化为字符串,可这个函数的参数类型是time_t,这个类型实际上是一个long int,而DWORD实际上是一个unsigned long,我后来计算了一下,如果到2000.1.1,TimeGenerated的值应当是30*365*24*60*60=946080000,它已经超出了time_t所能表示的范围。
有那位朋友知道这是怎么回事,有没有什么API将TimeGenerated转化为字符串。