[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 17:08 / Filesize : 196 KB / Number-of Response : 908
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

BREW(Binary Runtime Environment for Wireless) 10



305 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:36:12 ]
そいやBREW4でのmod圧縮だけど、677氏のはIModuleをルーティングしてたみたいだけど、
同じことをIAppletに対してやればいいんじゃないかな?とか思った。
本体のmodファイルの先頭(エントリポイント)をAEEClsCreateInstanceにして、
解凍用のmodファイルはAEEModule.cは全く変更せずに、AEEApplet.cのAEEClsCreateInstanceを書き換えて、

int AEEClsCreateInstance(AEECLSID ClsId, IShell* pIShell, IModule* po, void** ppObj)
{
  void* p;
  IApplet pAppletProxy;
  // pAppletProxyに偽物のIAppletクラスを作成して渡す
  ...
  // pにUnzipしたバイナリを渡す
  ...
  // 偽物のIAppletをppObjにセット
  *ppObj = pAppletProxy;
  // 本物のAEEClsCreateInstanceを呼び出す
  typedef int (*ENTRY_POINT)(AEECLSID, IShell*, IModule*, void**);
  ENTRY_POINT pFunc = (ENTRY_POINT)p;
  return pFunc(ClsId, pIShell, po, &pAppletProxy->pApplet);
}

こんな感じのプログラムを書いて、後は AppletProxy::AddRef() とか Release() とかを
AppletProxy::pApplet の方にルーティングすれば良さそうな気が。
もちろん単体では動作しなくなるし解凍用のmodのサイズがちょっとでかくなるし
makefileも書き換える必要があるけど、一応出来そうな気がする。

俺はもうBREWから引退した身だから実験しようにも出来ないんだよなぁ……。
うまくやれば状況に応じてバイナリを動的に読み替えるとかも出来そうで面白そうなのに。






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<196KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef