＜＜ HIMACS AvoidBugs ＞＞

システムクロック正常化 Ver1.0                               2009/10/30(金)

1 動作環境
  Windows XP または Windows2003
  JRE5.0またはJRE6.0

2 著作権
  株式会社ハイマックス
  HIMACS, Ltd.
  http://www.himacs.jp/
  
3 ライセンス
   Apache License 2.0
   http://www.apache.org/licenses/LICENSE-2.0

4 特徴
  Windows XPでSystem.nanoTime()を使用しているAPI
 (java.util.concurrent.DelayQueueなど)を実行するとコンピュータの時計が早く  
 進むという現象が発生することがあります。
  この障害は、以下のページにも登録されています。
  http://support.microsoft.com/kb/821893/
  本ライブラリは、この障害を回避することができます。

5 機能概要
  System.nanoTime()を使用するとコンピュータの時計が早く進むという障害を回避
  します。

6 インストール方法
  KB821893-1.0.zipを任意のディレクトリに解凍します。
  以下のファイルがインストール先に展開されます。
  
  install
    kb821893_install.msi
  lib
    kb821893.dll
    kb821893.jar
  java-src
    kb821893.jarを生成するjavaプログラム
  src
    kb821893.dllを生成するCプログラム
  bin
    system_clock_check.bat

  解凍後、install/kb821893_install.msiを実行してください。
  デフォルトでは、%ProgramFiles%\HIMACS\AvoidBugs\kb821893
  にkb821893.dllが展開されます。

7 使用方法
  実行時には、以下の設定が必要です。

  (1)classpath
  classpathに kb821893.jarを追加してください。
  
  (2)-Dオプション
  以下のオプション指定を行ってください。
  -Djava.library.path="kb821893.dllが存在するデイレクトリ"

  (3)プログラムの修正
  プログラムの先頭(main関数の先頭行など)で以下の呼び出しを追加して
  ください。
  jp.himacs.avoidbugs.timer.kb821893.KB821893.beginTimer(1);
  
  このメソッドは、プラットフォームSDKのtimeBeginPeriod()を呼び出します。
  KB821893に記載された障害の概要は、タイマ精度を高分解能(約1ms)、
　低分解能(約20〜30ms)で切り替えたとき、その差額分、時間が余計に進んでしまう
　現象が発生するという内容です。
　詳細はhttp://support.microsoft.com/kb/821893/を参照してください。このAPIの
　呼び出しによって低分解能を最小化して高分解能と一致させ時間のずれを防ぐ効果
  があります。なおこのAPIはプロセスの生存期間のみ有効でありプロセスが終了す
  ると分解能の設定は元に戻ります。

8 時計が進む現象の確認
  WindowsXP または Window2003がインストールされた一部のマシンで本現象を確認
  できることがあります。
  時計が進む現象の確認は以下の実行で可能です。
  
  DOSプロンプトで解凍先ディレクトリに移動後
  cd bin
  system_clock_check.bat

  コンピュータの時計を見ながら3分ほど実行し停止はCTRL-Cで行ってください。
  ※コンピュータの時計が早く進まないマシンもあります。

9 免責事項

このソフトウェア（バイナリモジュール、ソースコード、その他付属モジュール含
む）以下、「ソフトウェア」）は株式会社ハイマックス（以下、「ハイマックス」）
が現状有姿で提供し、無償で利用を許諾するものです。ハイマックスは、このソフト
ウェアに関して、明示的にも黙示的にも、プログラムにバグや不具合がないこと、推
奨した使用環境において完全に動作すること、商品性の黙示保証や特定目的への適合
性を含み、これに限られない保証をしません。
ハイマックスは、このソフトウェアの利用者がこのソフトウェアの利用の結果、ある
いは直接的または間接的にこのソフトウェアの利用に起因して蒙ったあらゆる損失、
責任、損害（直接、間接または付随的、結果的損害を問わず、データや利益の喪失、
または事業の中断による損害を含みます）、人身傷害、またはあらゆる性質の費用に
対するいかなる責任も負いません。
