SetSystemTimeAdjustment 函式 (sysinfoapi.h)
啟用或停用系統當天時鐘的定期時間調整。 啟用時,這類時間調整可用來同步處理一天的時間與一些其他時間來源資訊。
語法
BOOL SetSystemTimeAdjustment(
[in] DWORD dwTimeAdjustment,
[in] BOOL bTimeAdjustmentDisabled
);
參數
[in] dwTimeAdjustment
這個值代表每個實際通過 之 lpTimeIncrement 期間新增至系統當日時間的 100 奈秒單位數目。 呼叫 GetSystemTimeAdjustment 以取得 lpTimeIncrement 值。 請參閱<備註>。
目前,Windows Vista 和 Windows 7 計算機將會遺失任何設定小於 16 的時間調整。
[in] bTimeAdjustmentDisabled
系統要使用的時間調整模式。 可以停用或啟用定期系統時間調整。
TRUE 值會指定要停用定期時間調整。 停用時, 會忽略 dwTimeAdjustment 的值,而且系統可以使用自己的內部時間同步處理機制來調整一天的時間。 這些內部時間同步處理機制可能會導致系統作業正常過程中的時鐘變更,這可能會包含系統所認為所需的明顯時間跳躍。
FALSE 值會指定要啟用定期時間調整,並用來調整當日時鐘的時間。 系統不會干擾時間調整配置,也不會嘗試自行同步處理一天的時間。
傳回值
如果函式成功,則傳回值為非零。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 函式失敗的其中一種方式是,如果呼叫端沒有SE_SYSTEMTIME_NAME許可權。
備註
GetSystemTimeAdjustment 和 SetSystemTimeAdjustment 函式支援透過 GetSystemTime 和 GetLocalTime 報告的同步處理當日時鐘的演算法,以及使用定期時間調整的另一個時間來源。
SetSystemTimeAdjustment 函式支援兩種時間同步處理模式:
模式 | 行為 |
---|---|
Time-Adjustment 已停用 | 在此模式中, bTimeAdjustmentDisabled 會設定為 TRUE。 在此模式中, 會忽略 dwTimeAdjustment 的值,而且系統可以使用自己的內部時間同步處理機制來調整一天中的時間。 這些內部時間同步處理機制可能會導致系統作業正常過程中的時鐘變更,這可能會包含系統所認為所需的明顯時間跳躍。 |
Time-Adjustment 已啟用 |
在此模式中, bTimeAdjustmentDisabled 會設定為 FALSE。 對於實際通過的每個 lpTimeIncrement 期間, dwTimeAdjustment 將會新增至一天的時間。 lpTimeIncrement 所代表的時間週期可藉由呼叫 GetSystemTimeAdjustment 來決定。 lpTimeIncrement 值會在啟動時由系統固定,而且不會在系統作業期間變更,而且與系統在任何指定時間的內部時鐘中斷解析完全無關。 因此, lpTimeIncrement 值只會表示 dwTimeAdjustment 將套用至系統當日時鐘的時間週期。
如果 dwTimeAdjustment 值小於 lpTimeIncrement,則一天的時鐘會以比平常慢的速率前進。 如果 dwTimeAdjustment 值大於 lpTimeIncrement,則當日時鐘的前進速度會比平常快。 時鐘時間的執行速度會更快或變慢,取決於 dwTimeAdjustment 值高於或低於 lpTimeIncrement 值的程度。 如果 dwTimeAdjustment 等於 lpTimeIncrement,則時鐘會以正常速度前進。 |
應用程式必須具有系統時間許可權 (SE_SYSTEMTIME_NAME 許可權) ,此函式才能成功。 預設會停用SE_SYSTEMTIME_NAME許可權。 使用 AdjustTokenPrivileges 函式在呼叫 SetSystemTimeAdjustment 之前啟用許可權,然後在 SetSystemTimeAdjustment 呼叫之後停用許可權。 如需詳細資訊,請參閱 以特殊許可權執行。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | sysinfoapi.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |