とりあえず、XMBで表示されるメモリースティック内のゲームの順番について、ダミーファイルをつくったりして調べてみました。
結果、GAMEフォルダの中に保存されたゲームは、そのフォルダの最終日時。ISO(CFW3.40OE-A)の場合は、ISOファイル作成日時らしいということでした。
いずれも、VISTAでは日付そのものを手動では編集できない標準設定になっているようですから、VC++2005でWindowsAPI使って書き換えてみました。
ここで問題。ファイルは確かにCFileクラスで普通に時刻編集できるのですが、フォルダに対しての場合はCFileクラスではアクセスができません。仕方がないので、CreateFileでHANDLEを取得し、そこにGetFileTime/SetFileTime関数をつかって読み書きすることで回避。ただ、あくまで回避でしかないのです。というのも、GetFileTime/SetFileTime関数で扱うFILETIME構造体は64ビット(32ビット×2の構造)。
さらに、この構造体にアクセスするために、通常はSYSTEMTIME構造体を通して、FILETIME構造体へ変換するわけです。時間差分の計算は、フォルダの並び替えの順番をきめるために必要なのですが、かなり面倒なというか遠回りの実装するはめに。。
せめてもの救いは、CTimeクラスを使わなくてすんだことかな。こちらのクラスだと扱える最大最小値が少ないので、必要ではないとはおもいながらも、気になっていたんですよね。ただまぁ、CTimeつかったほうが楽っちゃ楽だったかも・・・
結果的に、FATへのダイレクトアクセスは行わずにすみましたし、通常のAPIの範囲でルーチンくめたので、安全性はまだマシでしょう。その代わりといってはなんですが、CreateFileを使用しているために、Win9Xは×です。Win9Xまで考えてOSバージョンチェックして、うんぬんはさすがにもうやりたくないので・・・・orz なのでこの機能は実質Windows NT / 2000 / XP / 2003 / VISTA用になります。それに旧DOSのAPI呼び出すのもすっきりしないし、FATへのダイレクトアクセスもねぇ・・・ということで、Win9X向けの機能ではありません、ご了承ください、、
とりあえず、バグチェックなど、しばらくやってから公開かな~。(その後放置するかもしれない