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 の値は、定期的な時刻調整を有効にすることを指定し、時刻の時刻を調整するために使用されます。 システムは時間調整スキームに干渉せず、時刻の同期を単独で試行しません。

戻り値

関数が成功した場合、戻り値は 0 以外です。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。 関数が失敗する方法の 1 つは、呼び出し元がSE_SYSTEMTIME_NAME特権を持っていない場合です。

注釈

GetSystemTimeAdjustment 関数と SetSystemTimeAdjustment 関数は、GetSystemTime と GetLocalTime を介して報告された時刻時計を、定期的な時間調整を使用して別のタイム ソースと同期するアルゴリズムをサポートしています。

SetSystemTimeAdjustment 関数では、次の 2 つの時刻同期モードがサポートされています。

モード 動作
Time-Adjustment 無効 このモードの 場合、bTimeAdjustmentDisabledTRUE に設定されます。 このモードでは、 dwTimeAdjustment の値は無視され、システムは独自の内部時刻同期メカニズムを使用して時刻を調整できます。 これらの内部時刻同期メカニズムにより、システム操作の通常の実行中に時刻の時刻が変化する可能性があります。これには、システムが必要と判断した時間の顕著なジャンプが含まれる可能性があります。
Time-Adjustment 有効 このモードの 場合、bTimeAdjustmentDisabled は FALSE に設定 されます。 実際に経過する lpTimeIncrement 期間ごとに、 dwTimeAdjustment が時刻に追加されます。 lpTimeIncrement で表される期間は、GetSystemTimeAdjustment を呼び出すことによって決定できます。 lpTimeIncrement 値は起動時にシステムによって固定され、システムの操作中に変更されず、特定の時点でシステムの内部クロック割り込み解像度から完全に独立しています。 この場合、 lpTimeIncrement 値は、 dwTimeAdjustment がシステムの時刻時計に適用される期間を表します。

dwTimeAdjustment 値が lpTimeIncrement より小さい場合、時刻時計は通常よりも遅い速度で進みます。 dwTimeAdjustment の値が lpTimeIncrement より大きい場合、時刻時計は通常よりも速い速度で進みます。 1 日の時刻の実行速度が速くなるか遅くなるかは、 dwTimeAdjustment 値が lpTimeIncrement 値の上または下の距離によって異なります。 dwTimeAdjustmentlpTimeIncrement と等しい場合、時刻時計は通常の速度で進みます。

 

この関数を成功させるには、アプリケーションにシステム時特権 (SE_SYSTEMTIME_NAME特権) が必要です。 既定では、SE_SYSTEMTIME_NAME特権は無効になっています。 SetSystemTimeAdjustment を呼び出す前に、AdjustTokenPrivileges 関数を使用して特権を有効にし、SetSystemTimeAdjustment 呼び出し後に特権を無効にします。 詳細については、「特別な特権を使用して実行する」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー sysinfoapi.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

AdjustTokenPrivileges

GetLocalTime

GetSystemTime

GetSystemTimeAdjustment

システム時刻

時間関数