"ソフコン2002 3rd Edition featuring l'agenda"
|
【国内記事】 | 2001年12月21日更新 |
l'agendaのファイル管理方法は独特だ。それは,l'agendaでファイルを入れるエリアが,フラッシュメモリ(NANDディスク)とRAMの2つの領域に分かれているからだ。
具体的にはフラッシュメモリ領域は,\Nand Disk配下のフォルダであり,それ以外のフォルダは全てRAMに配置されている。
フラッシュメモリは電池がなくなってもリセットしてもその内容が消えることはないが,RAM領域は電池が切れたり,リセットするとデータが消えてしまう。
つまり,リセットをすると\Nand Disk配下以外のフォルダ,つまり\Windowsや,\My Documents,\Program Filesなどにあるファイルはすべて初期化されてしまうのである。
なぜこのような構造になっているかというと処理速度を高速化するためだ。電源が入ると,l'agendaはフラッシュメモリの中から必要なファイルをRAM領域にコピーし,キャッシュすことで高速化を図っているのである。また,フラッシュメモリに入っているデータは電池が切れても消えない。つまりバックアップ電池が必要ないのだ。
しかしこの仕様は,プログラマにとってはいろいろと特別な処理が必要になってくる。まずファイルを保存する領域であるが,普通のソフトのようにMy Documentsに保存していると,リセット時に全てファイルが消えてしまうことになり,問題となる。ファイルは,\Nand Disk配下のMy Documentsに保存すべきである。なお,このフォルダ名(\Nand Disk\My Documents)は,GetUserDiskName関数で取得できる。
#include <getdisk.h>
TCHAR DefaultPath[MAX_PATH];
GetUserDiskName(m_hInstance,DefaultPath,MAX_PATH);
ファイルを保存するデフォルトのフォルダもこのフォルダにすべきだろう。
なお,GetUserDiskName関数を使うときには,GetDisk.Libファイルをリンクしなくてはならない。[プロジェクト]-[設定]の「リンク」で「オブジェクト/ライブラリ モジュール」にGetDisk.Libを付け加えよう。
またデータだけではなく,プログラムもインストールは\Program Filesにすべきではない。これもRAMであり,リセット時に消えてしまうからだ。プログラムをインストールするフォルダは,\Nand Disk\Program Filesにすべきである。
なお,ルートにある\Program Diskというフォルダは,この\Nand Disk\Program Filesがキャッシュされたものである。
もっともl'agendaの場合には,専用インストーラ作成ソフトでインストーラを作るので,この専用インストーラを使う場合にはそれほど意識する必要はない。ただ,何かプログラム側でファイルを作って保存しておく必要がある場合,\Nand Disk配下に保存しなければならないことは意識しておこう。
このようにいろいろとプログラムの修正点があるNand Disk対応だが,ファイル管理以外にも影響が出てくる。その中で一番ソースの修正が必要になるのはレジストリ関係だろう。これについては次回に対応方法を紹介しよう。
関連記事
Windows CEソフトウェアコンテスト2002 3rd Edition featuring l'agenda開催
第1回 開発環境を入手しよう!
第2回 ラジェンダの特徴
第3回 開発環境のインストール
第4回 作ったソフトを動かすには?
第5回 既存ソフトとの切り分け
関連リンク
コンテストエントリーページ
開発者向けラジェンダ開発掲示板
eMbedded Visual Tools 3.0連載記事 - WindowsCE FAN
マイクロソフト Windows Embedded
[古原伸介,ITmedia]
Copyright © ITmedia, Inc. All Rights Reserved.
最新CPU搭載パソコンはドスパラで!!
第3世代インテルCoreプロセッサー搭載PC ドスパラはスピード出荷でお届けします!!
最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!