在Windows Driver層級的環境下取得時區差值與日光節約時間開啟與否

更新於 發佈於 閱讀時間約 3 分鐘

因為某種因素,小弟必須要在Windows Driver層級,透過EWDK或WDK的環境下取得時區差值與日光節約時間開啟與否。不過KUSER_SHARED_DATA (ntddk.h) - Windows drivers | Microsoft Learn裡面寫得不清不楚,實在很難讓人聯想到其實Time Zone ID就是GetTimeZoneInformation 函式 (timezoneapi.h) - Win32 apps | Microsoft Learn裡面的定義。小弟一開始還以為是Time Zone IDs (Compact 2013) | Microsoft Learn,想不到一點關係都沒有,白花了一點時間研究。

這就是標準的江湖一點訣,說破不值錢的例子,把一些研究結果記錄下來,以後可以少走一些冤枉路~


#include <ntddk.h>
#include <wdm.h>
#include <wdf.h>

#define TIME_ZONE_ID_UNKNOWN 0
#define TIME_ZONE_ID_STANDARD 1
#define TIME_ZONE_ID_DAYLIGHT 2

BOOLEAN IsDaylightSavingTimeEnabled()
{
// Read the time zone ID
ULONG timeZoneId = SharedUserData->TimeZoneId;

// Determine if daylight saving time is enabled
BOOLEAN isDaylightSavingTimeEnabled = (timeZoneId == (ULONG)TIME_ZONE_ID_DAYLIGHT);

return isDaylightSavingTimeEnabled;
}

LONG GetTimezoneOffset()
{
LARGE_INTEGER systemTime;
LARGE_INTEGER localTime;

// Get system time
KeQuerySystemTime(&systemTime);

// Convert to local time
ExSystemTimeToLocalTime(&systemTime, &localTime);

// Calculate the time zone offset (in minutes)
LONG timezoneOffset = (LONG)((systemTime.QuadPart - localTime.QuadPart) / 600000000);

return timezoneOffset;
}


也許可以參考這個登錄機碼設定值,是否更直觀地解決問題。


[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\TimeZoneInformation]
"RealTimeIsUniversal"=QWORD:00000001
留言
avatar-img
留言分享你的想法!
avatar-img
Gary Hu的沙龍
4會員
11內容數
Gary Hu的沙龍的其他內容
2024/12/21
小弟走跳江湖多年,也累績了一些職場心得,在年底轉職熱門時刻,希望能夠幫助到一些有緣人。
2024/12/21
小弟走跳江湖多年,也累績了一些職場心得,在年底轉職熱門時刻,希望能夠幫助到一些有緣人。
2024/10/13
本地端生成式AI工具LM Studio安裝介紹,包含如何手動載入AI模型的技巧。
Thumbnail
2024/10/13
本地端生成式AI工具LM Studio安裝介紹,包含如何手動載入AI模型的技巧。
Thumbnail
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
接續上一篇文章,本文再深入一點關於ETCD基本操作以及在其他文章中關於ETCD節點資料不一致情況的除錯內容分享
Thumbnail
接續上一篇文章,本文再深入一點關於ETCD基本操作以及在其他文章中關於ETCD節點資料不一致情況的除錯內容分享
Thumbnail
👨‍💻簡介 要處理日期和時間,就必須知道這個Package -> time,Go提供了內建的timePackage。 今天主要介紹time的功能,包括時間操作、格式化等等,以及常見用法。
Thumbnail
👨‍💻簡介 要處理日期和時間,就必須知道這個Package -> time,Go提供了內建的timePackage。 今天主要介紹time的功能,包括時間操作、格式化等等,以及常見用法。
Thumbnail
今天在練習寫網頁時,剛好要來有做到Dark Mode 的功能,那順便來記錄一下做法~ 首先要先知道Dark Mode的運作原理。是如何知道你現在是Light Mode還是Dark Mode呢? 😀就是這邊拉~當你按下按鈕時,javascript 的toggle()去為<html>增加dark標
Thumbnail
今天在練習寫網頁時,剛好要來有做到Dark Mode 的功能,那順便來記錄一下做法~ 首先要先知道Dark Mode的運作原理。是如何知道你現在是Light Mode還是Dark Mode呢? 😀就是這邊拉~當你按下按鈕時,javascript 的toggle()去為<html>增加dark標
Thumbnail
在這篇教學中,我們將會學習如何使用 C# 語言再設定的時間動作,模擬批次自動化功能。使用 System.Windows.Forms.Timer 來達到這個目的。同時,我們也將會示範如何取得目前時間的不同屬性,像是年份、日期、分鐘等。
Thumbnail
在這篇教學中,我們將會學習如何使用 C# 語言再設定的時間動作,模擬批次自動化功能。使用 System.Windows.Forms.Timer 來達到這個目的。同時,我們也將會示範如何取得目前時間的不同屬性,像是年份、日期、分鐘等。
Thumbnail
在這篇教學中,我們將學習如何在C#程式中取得系統時間並進行格式化,以滿足不同需求的日期和時間顯示。
Thumbnail
在這篇教學中,我們將學習如何在C#程式中取得系統時間並進行格式化,以滿足不同需求的日期和時間顯示。
Thumbnail
大家好,歡迎來到我的學習筆記系列,今天我要跟大家分享一下 Python 的 datetime 模組,這是一個非常實用的模組,可以幫助我們處理日期和時間相關的問題。 datetime 模組提供了四個主要的類別,分別是 date、time、datetime 和 timedelta。
Thumbnail
大家好,歡迎來到我的學習筆記系列,今天我要跟大家分享一下 Python 的 datetime 模組,這是一個非常實用的模組,可以幫助我們處理日期和時間相關的問題。 datetime 模組提供了四個主要的類別,分別是 date、time、datetime 和 timedelta。
Thumbnail
這篇依然是寫給自己做備忘使用,基本上是Windows 11比較需要用到此指令,原本是在設定→個人化→佈景主題→桌面圖示設定這裡來打開它。 這個功能是來設定顯示桌面常用的圖示,被微軟隱藏起來的(註1),例如本機(註2)、控制台與網路(註2)。 註1. 因為他們覺得你不需要,他們要你直接按工作列上的資料
Thumbnail
這篇依然是寫給自己做備忘使用,基本上是Windows 11比較需要用到此指令,原本是在設定→個人化→佈景主題→桌面圖示設定這裡來打開它。 這個功能是來設定顯示桌面常用的圖示,被微軟隱藏起來的(註1),例如本機(註2)、控制台與網路(註2)。 註1. 因為他們覺得你不需要,他們要你直接按工作列上的資料
Thumbnail
兩種在windows系統用win32 api關閉輸入法的作法
Thumbnail
兩種在windows系統用win32 api關閉輸入法的作法
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News