Susieのサムネイル(カタログ)再作成しちゃうの困ったねメモ(注:ここに書いてある内容は嘘かもしれません)。
またWin32 APIがわかんないとこの説明はわけわかりません。
予備知識:
- エクスプローラでは秒までしか表示してくれませんがHDD上に存在するファイルの日付はミリ秒単位を持ちます(FileTime)。
- CD上のファイルは2秒単位の日付しか持ってません(DosDateTime)。
- Windows3.1はMS-DOS由来のシステムで2秒単位の日付しか持ってません
- 最初のSusieはWindows3.1用のアプリケーションとして作られました
では本題です。
- Susieはサムネイル画像を作った時に_THUMBNL.SUEというファイルに元画像の更新日付(LastWriteTime)をFileTimeToDosDateTime((ここミソです)で変換した値を格納する。
- FileTimeToDosDateTimeで時刻を変換すると、
FileTimeの値 (ファイルの時刻) | FileTimeToDosDateTime後 (Windows NT4.0SP6a) | FileTimeToDosDateTime後 (WindowsME) |
1999/04/03 01:40:42.165 |
0x2683:0xd16 (1999/04/03 01:40:44.000に相当) |
0x2683:0xd15 (1999/04/03 01:40:42.000に相当) |
1999/04/03 01:40:42.000 |
0x2683:0xd15 (1999/04/03 01:40:42.000に相当) |
0x2683:0xd15 (1999/04/03 01:40:42.000に相当) |
という具合に端数がある場合の挙動が違います(どっちの挙動が妥当かわかりませんが)。
- NT上でのB's Recorder GOLDというライターはCD-Rを作成する際には1999/04/03 01:40:42.165という時刻を1999/04/03 01:40:42.000にしてしまいます(他のCD-R Writerでの動作は現在使えるものを持っていないので検証できません)。
- NT系では作成されたCD-R上でサムネイルを見ようとすると、
CD-R上の更新日付からの値(0x2683:0xd15)と_THUMBNL.SUEに格納されている値(0x2683:0xd16)は異なります
(->よってサムネイルの再作成が発生)。
- 95系で作成されたCD-R上でサムネイルを見ようとすると、
CD-R上の更新日付からの値(0x2683:0xd15)と_THUMBNL.SUEに格納されている値(0x2683:0xd15)は同じです
(->よってサムネイルの再作成はない)。
NT4.0での問題はCD-Rを作成する前に予めファイルの時刻を変更しておくことで防ぐことができます。
例えば時刻変更ツールとか作っておきました(他にも似たようなことするツールはあると思うので見つけたらそっちを使ってください)。
さてWindows2000上では上記のNT系の挙動に加えて
別の問題
があります(情報元はSusieの掲示板No1699-1から)のでアプリケーションレベルでどうにかってのは対Windows2000コードでも入れない限りどうしようもないような...
(っていうか、これが仕様ってんなら本気か?っていいたくなりますけど)。
cdfs.sysの階層ドライバ(透過レイヤ)を作れれば誤魔化せるような気はしますけど...。
タイトルに戻る