デジタルフォトミニアルバムを手に入れました。
画面が1.5インチという狭さ、画面が128×128 ドットで内蔵メモリ 1MB。56枚格納できます/しか格納できません。
接続はPCとUSBのみ。拡張性は全くと言っていいほど無いわけですが、値段が2,000円弱ですからね。遊びにしては十分安い。
通常のフォトフレームの場合 USB メモリから読み込むのですが、このミニアルバムの場合は内臓のメモリにPCから書き込みます。つまり、USB の使い方が逆。
ミニアルバムを付属のUSBケーブル(20cmぐらいしかありません)に接続すると、ミニアルバム内に入っているアプリケーションが立ち上がります。私の vista の場合は、自動起動しなかったので、マイコンピュータから起動させます。
そう、画像を見るとわかるんですが、ドライブとして認識されています。
ということは USB メモリと似た動きになっているので、付属のアプリを使わずに画像を書き込むことは可能ではないか? と思うのですが、そうはいきません。いくつか画像を入れたのですが、それらしいファイルは無いし、データファイルも更新された様子がありません。試しに、アプリ(DPFMATE.EXE)をエクスプローラから消そうとしましたが、消せません。プロパティでは読み取り専用になっています。これも変更することはできません。
そう ROM になっているみたいです。
な~んだ、これだとこの付属アプリを使うしかないのね。つまらん。というブログもありました(場所を失念)。
さて、ここで止まってしまうとプログラマ魂が廃る(廃ってもいいけど)ので、もうちょっと調べてみます。
付属アプリが起動して、何か編集して、何処かに書き込んでいます。ミニアルバムはこの何処か(内蔵メモリ)を読み込んで画像を順番に表示しているわけです。と、いうことは、付属アプリと内臓メモリとの間で何かやりとりをしているハズ。
一番簡単なのはファイルで書きこんでいるハズですが。
で、windows からファイルの書き込みを監視する process moniter(procmon.exe)を使います。
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
これを使うと、アプリからレジストリやファイルの読み書きを監視することができます。カーネルレベルのファイルアクセスを監視するので、読み方にちょっとコツが要りますが。
このログをみると、
C:\Users\masuda\AppData\Local\Temp\PicsInMiniDPF
なるところにbmpファイルを作って転送しています。一旦
C:\Users\masuda\AppData\Local\Temp\ForShowBMP.bmp
なるファイルにコピーしているところがミソです。
# ここら辺から想像するに、ドライバの人とアプリの人が違う人なんだなぁ、というのが分かります。
ここでアクセスを詳細に見ていくと、付属アプリを起動したときにミニアルバムが接続されているドライブに対して
Operation: DeviceIoControl
Control: IOCTL_SCSI_PASS_THROUGH_DIRECT
ってのが頻発しています。これが何かを調べると、
Windows Driver Kit: Storage Devices
IOCTL_SCSI_PASS_THROUGH_DIRECT
http://msdn.microsoft.com/en-us/library/ms803668.aspx
ってな具合に SCSI アクセスのための関数なわけです。
DeviceIoControl 関数は、デバイスに対して直接読み書きをするためのraw関数です。
と、USB メモリなはずなのに SCSI アクセスって何?と思って、ドライブのプロパティをみるとCDドライブになっています。ファイルシステムは「CDFS」です。
つまり、
– ミニアルバムの内臓メモリは CDFS のフォーマットで読める。
– 読み込みは DeviceIoControl 関数を使って、セクタ単位で読み込んでいるらしい?
ってことが分かりました。
なので、想像するに、
– ミニアルバムの内臓メモリは CDFS のフォーマットで書ける?
– 書き込みは DeviceIoControl 関数を使って、セクタ単位で書ける?
のかなぁ、と。
因みに、この DPFMATE.EXE、いくつかのデジタルフォトフレームで使われています。
バージョンも「v3.8.2.9」なので、ミニアルバムだけじゃなくて他にも色々ありそうですね~。
というわけで、もう少し解析すれば HACK ができそう?
STM6ディスカバリーという評価装置にST-Linkというのが使われています。
これも同じ方式らしいのですが、うちのパソコンでは動作しませんでした。
色んな事をためしますtが上手く行かず、USBを差した後は正常に終了できません。
USBを差したまま起動するとWIN-XP-SP2が壊れてサインストールをしなければ成りません。
何かヒントをお持ちでしたらお知らせ下さい。
それでは宜しくお願いします。
stm6 も st-link も使ったことがないので分かりませんが、st-link 自体のドライバーが壊れているか、usb のドライバーが壊れているのではないでしょうか?
use ドライバーのほうは、一度該当するデバイスを削除すると直ることもあるので、試してみると良いと思います。
お返事有り難うございます。
Pcはwinxp-pro-sp2を使っています。
結果的にはst-linkもディスクドライブ(プロパティーもst-draiveと成っています)も有るのですが
マイコンピュータが認識しません。
デバイスドライバはマイクロソフトお勧めの表示ドライバの表示をしながらやっていますが、
該当のドライバを削除すると固まったりします、ここでタスクマネージャーから停止をさせ、
再起動しようとすると、終了しなくなります。
強制停止をして、起動するとたいてい起動できなくて再インストールになってしまいます。
最近、Ckshatdownと入れましたのでシャットダウンできるかも知れません。
時間を見て試してみます。
masuda様初めまして。
そこでnekonokoと名乗っている者は電子工作系の掲示板やブログに
出没しては意味不明・場違いな書き込みや荒らしを繰り返している
“ノンノ”と呼ばれる悪質な荒らしです。下はこいつの悪行のほんの一例です。
ttp://groups.yahoo.co.jp/group/nonnno10gou/messages/144?expand=1
ttp://www.pastelmagic.com/psocbbs/index.cgi?m=look&bnum=1932
無視しても構わず書き込みを続け荒らす習性がありますので、
アクセス禁止措置を行い書き込ませないようにしてください。
ありがとうございます。
その昔メーリングリストで「教えて君」が流行ったので、そのたぐいなんですかね?
この記事自体が古いので、まあそのまま放置かと。