程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> Windows 驅動:獲取系統當前時間,生成格式字符串

Windows 驅動:獲取系統當前時間,生成格式字符串

編輯:.NET實例教程

可以按照以下步驟:

1. 用 KeQuerySystemTime() 獲得當前的 GMT System Time. 這是一個從 1601-01-01 以來的計數(單位是 100ns)。

2. 調用 ExSystemTimeToLocalTime() 將 GMT System Time 值轉換成當前時區的 Local System Time.

3. 用 RtlTimeToTimeFields() 將 System Time 值轉換成 年:月:日:時:分:秒 的形式,保存在一個 TIME_FIELDS 結構中。

typedef struct TIME_FIELDS
{
CSHORT Year;
CSHORT Month;
CSHORT Day;
CSHORT Hour;
CSHORT Minute;
CSHORT Second;
CSHORT Milliseconds;
CSHORT Weekday;
} TIME_FIELDS; 


示例代碼,獲取時間串函數:

(本函數將會在後文中使用:Windows 驅動:向 DbgPrintf 一樣將調試信息輸出到文件

(PS:源代碼有更好的格式發表嗎)

//----------------------------------------------------------------------
//
// GetCurrentTimeString
//
// Get current time string. (format: %d-%02d-%02d %02d:%02d:%02d)
//
//----------------------------------------------------------------------
PCHAR
GetCurrentTimeString()
{
 static CHAR  szTime[128];
 LARGE_INTEGER SystemTime;
 LARGE_INTEGER LocalTime;
 TIME_FIELDS  timeFiled;

 KeQuerySystemTime(&SystemTime);
 ExSystemTimeToLocalTime(&SystemTime, &LocalTime);
 RtlTimeToTimeFIElds(&LocalTime, &timeFiled);
 sprintf(szTime, "%d-%02d-%02d %02d:%02d:%02d"
  , timeFiled.Year
  , timeFiled.Month
  , timeFiled.Day
  , timeFiled.Hour
  , timeFiled.Minute
  , timeFiled.Second
  );

    return szTime;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved