たかはしもとのぶ 2005.02.20
このコマンドは、SetSystemTimeAdjustment() 関数を発行することで、システムの時刻を後戻りせずにゆっくり進めたり、早く進めたりするためのコマンドです。
このファイルの最新版は以下の URL で入手することができます。
実行例を以下に示します。
C:\>timeadjx.exe get GetSystemTimeAdjustment() 呼出し中... 割込み発生時の加算時刻: 100144 (100ns単位) ハードウェア割込み間隔: 100144 (100ns単位) 定期的な時刻調整 : 無効 自動的な時刻補正 : 有効 (自動的な時刻補正の詳細は、KB232488を参照してください)
C:\>timeadjx.exe set 200288 SetSystemTimeAdjustment() 呼び出し中... 割込み発生時の加算時刻: 200288 (100ns単位) 定期的な時刻調整 : 有効 自動的な時刻補正 : 無効 (自動的な時刻補正の詳細は、KB232488を参照してください)
C:\>timeadjx.exe set 0 SetSystemTimeAdjustment() 呼び出し中... 割込み発生時の加算時刻: 0 (100ns単位) 定期的な時刻調整 : 無効 自動的な時刻補正 : 有効 (自動的な時刻補正の詳細は、KB232488を参照してください)
質問: 「自動的な時刻補正」ですが、表示の論理が逆になっていませんでしょうか?MSDNの説明では、SetSystemTimeAdjustment のlpTimeAdjustmentDisabled は、定期的な時刻調整がOFFの時に真を取ると書かかれていますが、timeadjx のソースでは、それが逆になっているようです。
回答: 「自動的な時刻補正」とは[NT]Windows における日付および時刻の管理方法に記載のある「自動的な時刻補正」の状態を示すもので、GetSystemTimeAdjustment関数のlpTimeAdjustmentDisabledパラメータで説明されている「定期的な時刻調整」の状態を示すものではありません。そのため、表示の論理は間違っていないのですが、わかりにくいので、timeadjx 0.2ではその旨表示を追記しました。