DLLにパッチ
USB-IO2.0(AKI)をCから制御しようと思ったが、USB-IO用のDLLでは動かない。
USB-IOがversion2.0になって、VID(ベンダID)やPID(プロダクトID)が変更になっているのが原因だろう。
とにかく動けばいいというのであれば、DLLを改造すればいい。古いUSB-IOのVIDやPIDを、USB-IO2.0のそれに書き換えればいいのだ。
使いたいDLLをバイナリエディタで開いて、ベンダIDを検索する。
USB-IOを販売していた会社は以下の3社。
モルフィ企画(VID=0x0bfe, PID=0x1002,0x1003)、テクノキット(VID=0x12ed, PID=0x1003)、それからKm2net(VID=0x1352、PID=0x0100)である。
たとえばKm2netのVIDは0x0bfeである。VIDはリトルエンディアンで格納されているので、fe,0bというデータを探す。
さらにその近くでPIDを探す。0x0100は、00,01として探せばいい。
これをUSB-IO2.0のPIDに書き換えるのだが、fe,0bというデータに比べて、00,01はたくさんの場所で見付かるから、どれが本物かわからない。
そこでモルフィ企画やテクノキットのVIDを検索し、その近くにあるPID=0x1003を検索する。これだと簡単にPIDが記録されているアドレスが特定できるだろう。
その近くで0x0100を探すことで、ようやく書き換えるべきアドレスが特定できる。
実際にやってみる。HSPからUSB-IOを使うためのDLL、hspusbio.dllは、0e00番地から、VIDとPIDがまとめて格納されている。
モルフィ企画のVID=0x0bfe、PID=0x1003を殺して、Km2netのUSB-IO2.0に対応させてみよう。
--------|-0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F-|
00000e00|fe 0b 02 10 fe 0b 03 10
--------|------------------------------------------------|
となっている部分を探す。
USB-IO(AKI)は、VID=0x1352、PID=0x0121だから、以下のように変更すればいい。
--------|-0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F-|
00000e00|fe 0b 02 10 52 13 21 01
--------|------------------------------------------------|
ちなみに上のダンプは、バイナリエディタDump4wのもの。
ちょっとクセがあるが、コピペするだけで、アドレスやゲージを付けてくれるので便利だ。
三石印房のDLLは、VIDとPIDが少し離れたところに格納されているが、同じ手口で改造できる。
急ぎの方はどうぞ。
「お仕事」カテゴリの記事
- モミまき(2012.04.08)
- Latitude/D430のSSD化(2012.03.25)
- パソコン解体(2012.03.24)
- 3万円PC再び(2012.03.16)
- SSD換装(2012.03.09)
コメント
トラックバック
この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/24707/43907231
この記事へのトラックバック一覧です: DLLにパッチ:


KOHさま・こんにちわ~
今回、ミルクティの品種名のご指摘を頂き恐れ入ります。
よそ様からの頂きものや、じぶんで購入したものも多く、品種名は
間違いがないように付けてあったのですが、いつの間にか、
取れて終い並べていた隣の品種と間違えていて失礼しました。教えて
頂いて感謝です。そそっかしい自分に恥じています。
ミルクティ―を改めて投稿させて頂きますネ・。今、投稿させて頂いてる
ランは,スプリングナイト"デイープインパクト”です。
これからも宜しくお付き合い下さいませ。ありがとうございました。
改めて、今日の投稿蘭に訂正させていただきます。
投稿: ryuseryo | 2012年1月31日 (火) 10時43分
こんにちわ!
ありゃー、KOHさんのプログラムの話題って私にはチンプンカンプンで
書き込めませんでしたよ。
でもあえてここに書き込んでしまいました。
ブルーベリーの知識、ありがとうございました!
すごく参考になりました。これからも宜敷くお願いします!
投稿: ねこ山 | 2012年2月 5日 (日) 23時05分