WatchIO.EXE --- Watch I/O port Version 1.2 Release 1.0 by BD&ASS
【ソフト名】watchio.exe / wio.vxd
【検索キー】WATCHIO, WIO, $WIN32, #UTY
【著作権者】BD&ASS (null), SGL00064
【動作環境】Windows 95, 32 bit GUIアプリ
【分 類】フリーウェア(その他のツール)
【開発環境】VC++ V4.0, SDK, DDK
【備 考】
任意のI/Oポートを読み書きするプログラム。ということで、一般の人には全く無用であるばかりか使い道もなく、下手に使うと危険ですらあるという代物。デバイスドライバの作者、あるいはH/Wをデバッグする立場の人にしか多分使えないプログラムです。
.VxDを用いることによりRing0からのアクセス、つまりCPUのプロテクション機能を迂回した操作を実現してます。
なおI/Oアドレス3C0, 3x4に関してはVGA以降のディスプレイコントローラを前程とした特殊動作をします(定石なことをするだけなんだけど)。
繰り返しますが、IBM-PCのI/Oアドレスやそのビットアサインに関する知識や資料がない人には全く無縁なプログラムです。また、PITやRTC、KBCのアクセスに必要な機能はサポートしていません(私には不要なので)。
実を言うとサポートするつもりはあったけど、自分が使いもしないだろう機能を入れ込む空しさに挫折したのです。
書き忘れてましたが、定期的に何も考えずにポートをポーリングする、という凶悪な機能もありますので、エラー処理に手を抜いているドライバと誰かが読むとステータスがクリアされるという良くあるパタンのHWが合体した場合、おもしろい事態になることでしょう。残念^H^H幸いなことにそういうタコなドライバは未だ見てませんけど。
ところで、私、Win16をすっ飛ばしていきなりWin32、それもVxDからやらされた人間なのですが、こんなのアリ?とか当時思ったりしました。で、実は!こいつが生まれて初めて作ったWin32 GUIプログラムだったりするんですねぇ。
順番が逆やん?>我が社
【制限事項】
ソースは約1名の方から要求されましたのでダウン可能にしました。ただし、DDKをお持ちでないと再コンパイルできません。wio.vxd (一応汎用)だけの利用なら何とかなるかも知れませんが。
後、VC++ 4でない方はDDKがあってもlinkに失敗します。MSDNのKBのどこかに解決方法はあります(ご免なさい。KBの番号は分かりません)。
【補足】-- at 2002.1
某社の*何か*に付属のツールにこのVxDのソースが流用されていると判明しました。
それが何かは言いませんが、いやーびっくりした。コメントとか変数名とか、見識もないはずの人が作ったソースなのにすっげー見慣れた内容なので驚愕したもん。
そうそう。コンパイル時は構造体のアライメントは1にしてね。己が作ったソースであるにも関わらず、再コンパイル時に悩んじまったから。
#…自分を含めて約2名が少なくともそこで引っかかっていたりしたのを知っているのであえて補足してます(#pragma pack(1)。だよ〜)
注:追記・変更したのはこのページだけですんで、アーカイブの再ダウンロードは無意味です
#それでは`WatchIO.LZH'でダウン(19,636 bytes)してみて下さいな(^^;
#ソースは`WioSrc.LZH'、(18,211 bytes)であります