Filewatch.dll更新

更新しました。
昨日ダウンロードしていただいた方は、申し訳ないですが再ダウンロードお願いします。
ダウンロードページ
*注意*
昨日の不具合は取りましたが、「ファイル単体のチェックの時、実際は変更がないのにイベントが起きる時がある」という不具合を抱えています。

 
やー、あんな致命的な不具合を抱えたままリリースしてしまうとは、ダメダメですね。
これで、ファイル単体を指定した場合でも、きちんと監視できるはずです。
それにしても、ファイル監視をするAPIって複数有るんですねぇ。

  • FindFirstChangeNotification
    • Win95から使える。ファイル名は取得できない
  • ReadDirectoryChangesW
    • NT系で使える。ファイル名が取得できる。検出できるイベントが上より多い。
  • SHChangeNotifyRegister
    • Win2000以降のNT系で使える。ウィンドウが必要

のは、ReadDirectoryChangesWで行こうかと思ったんですが、9x系で使えないのはどうかと思ったので、FindFirstChangeNotificationで指定されたファイルの情報を、FindFirstFileで取得キャッシュして、更新イベントが起こると新たに情報を取得し直して、キャッシュと比較、変更が有ればイベント発生、としました。
でも、この取得し直しに不具合があるんですよね……
なぜか、FindFirstFileすると、ファイルサイズが0として返って来る時があるんです。
別のファイルがヒットしているのかとも思いましたが、ファイル名情報は正しいんですよねぇ。
情報求む。