2002/11/03 更新
AdvEx.VxD Ver.0.07 Beta Copyright (C) 2001-2002 K.Takata 1.概要 98 ノート用壁越えサポートドライバです。EXIDE32G(まりもさん作)な どの壁越えソフトと組み合わせることで、98 ノートで サスペンド状態から の復帰後も壁越え領域にアクセスできるようになる*かも*しれません。 名称の由来は(すぐに分かるかもしれませんが)一応秘密です。アドヴェ ックスとでも読んでやってください。 2.動作環境 PC-98 Note, Win95 OSR2 以降(Win2k 不可) 3.インストール方法 AdvEx.VxD を \windows\system にコピーし、さらに system.ini の [386Enh] セクションに device=advex.vxd と書いた行を追加してください。Windows を再起動すると AdvEx.VxD が動 作を開始します。 4.アンインストール方法 system.ini の [386Enh] セクションに追加した、device=advex.vxd とい う記述を削除し、\windows\system\advex.vxd を削除してください。 5.プログラムの動作・技術的事項等 このプログラムの動作手順を以下に示します。 A. Windows の起動時 1. HDD の現在の H/S パラメータを記録しておく。 2. 揮発性容量変更コマンドを実行し、全領域使用可能にする。 B. レジューム時(=サスペンド状態からの復帰時) 1. H/S パラメータを記録しておいた値に再設定。 2. 揮発性容量変更コマンドを実行し、全領域使用可能にする。 やっていることはたったこれだけです。CHS パラメータを変更することで HDD の壁を取り払っているソフトに対しては、理論的には以上の作業を行え ば、レジューム後も全領域に対して正常にアクセスできる*はず*です。CHS パラメータを変更することで HDD の壁を取り払っていると思われるソフト には、EXIDE32G(32GB以上有効モード)、Advanced BIOS、Extended BIOS といったものがあります。 これを実現する際の技術的な問題として、B. の作業をレジューム時のど の時点で実行するかという問題があります。B. の作業、特に B.1. の作業 は、いかなるディスクアクセスよりも先に行われなければなりません。ただ し AdvEx.VxD は、内部で別の VxD を呼び出していますので、B. の作業は その VxD の再初期化が済んだ後でなければなりません。Ver.0.04 までは、 B. の作業が行われるよりも先に、スワップファイルへのアクセスが発生し、 VFAT において例外 0E が起こることがありました。Ver.0.05 では、B. の 実行をできるだけ早く行うように変更しましたが、これで完全かどうかは不 明です。 Advanced BIOS と組み合わせて使うときは、OS は 4.25GB 以内の領域に インストールされていないと正常に動作しないとの報告を受けています。 (Ver.0.05 の修正でこの制限が取り払われた可能性もありますが、確認は していません。) 6.コンパイル方法 このプログラムのコンパイルには Visual C++ 6.0, Windows98 DDK(*1) と拙作の Compact VxD(*2) を利用しています。 Win98DDK をインストールしたら、\98DDK\src\block\inc\ にあるすべて のファイルを \98DDK\inc\win98\ にコピーしておいてください。また、 \98DDK\inc\win98\AEP.H には3ヶ所文法ミスがあります。 } AEP_rpm_change; *PAEP_rpm_change; } AEP_rpm_inquiry; *PAEP_rpm_inquiry; } AEP_3mode_config; *PAEP_3mode_config; というようになっている部分がありますので、それを } AEP_rpm_change, *PAEP_rpm_change; } AEP_rpm_inquiry, *PAEP_rpm_inquiry; } AEP_3mode_config, *PAEP_3mode_config; というように書き換えてください。つまりテキストエディタなどで、"; *" を ", *" に置換すればよいわけです。 以上の作業が終われば、スタートメニューから Free Build Environment を立ち上げ、コマンドラインから、 > nmake -f advex.mak と入力すれば、コンパイルできるはずです。なお、vxdwraps.clb が見つか らないというエラーがでた場合は、\98DDK\lib\i386\free\VXDWRAPS.CLB を \98DDK\lib\ または、カレントディレクトリにでもコピーしておいてくださ い。(本当は、advex.mak を修正すべきなのだろうが。) src.lzh を解凍すると libsrc.lzh というファイルが出てきますが、これ は ioswraps.lib のソースです。libsrc.lzh の中には数十個のファイルが 含まれていますので、解凍するときは専用のディレクトリを用意した方がよ いでしょう。ioswraps.lib をビルドするときは、libsrc.lzh を解凍したデ ィレクトリで nmake を引数無しで実行すればよいはずです。 (*1) Windows98 DDK は、 http://www.microsoft.com/ddk/ からダウンロード可能。すべてまとめてダウンロードすると約26MB。個別 にダウンロードする場合は、Set-up Files (98SETUP.EXE)、Build Environment (98BLDENV.EXE) のほかに、Storage Device Driver Samples (BLCK_DDK.EXE) が必要。 (2002/10/28 現在では DL できなくなってしまっています。) (*2) http://member.nifty.ne.jp/k-takata/mysoft/cvxd.html 7.更新履歴 2001/05/07 Ver.0.00 Alpha ・最初の公開バージョン。 2001/05/12 Ver.0.01 Alpha ・バージョンリソースを付けてみた。 ・ioswraps.lib のソースも公開。 2001/11/03 Ver.0.02 Alpha ・VxD のサイズを小さくしてみた。 ・配布用アーカイブのサイズを小さくしてみた。(代わりに解凍後の src.lzh のサイズが大きくなってしまったが。) ・機能的には Ver.0.01 Alpha から一切変更無し。 ・参考文献に書き忘れがあったので追加。 2002/04/29 Ver.0.03 Alpha ・現在の H/S パラメータを保存すべきところを、間違ってデフォルト の H/S パラメータを保存していた強烈なバグを修正。これで EXIDE32G と組み合わせて 32GB の壁を越えられるかも・・・。 2002/04/30 Ver.0.04 Alpha (非公開) ・現在の H/S パラメータをコマンドラインから確認できるようにした。 (単なるデバッグ用の機能。) 2002/10/28 Ver.0.05 Beta ・レジューム時に例外 0E が発生する場合があったのを修正。(完全に 修正されたかどうかは不明。) ・Alpha 版から Beta 版に格上げ。 2002/10/29 Ver.0.05a Beta ・まだレジューム時に例外 0E が発生する場合があったので、パワーハ ンドラの優先度を変更。(相変わらず完全に修正されたかどうかは不 明。これで直らないのなら、根本的に無理かも。) 2002/11/01 Ver.0.06 Beta (非公開) ・動的ロード版。インストール作業が少し簡単になるはずだった。 Win98SE では動作したが、Win95 OSR2 では動作せず、葬り去られる。 2002/11/03 Ver.0.07 Beta ・例外 0E 対策として、サスペンド時に Identify Device コマンドを 発行するようにした。 8.参考文献など ・Technical Committee T13 AT Attachment http://www.t13.org/ d1153r18.pdf : ATA/ATAPI - 4 revision 18 d1321r3.pdf : ATA/ATAPI - 5 revision 3 d1410r1a.pdf : ATA/ATAPI - 6 revision 1a ・Windows 95 システムプログラム開発 Walter Oney 著 太田博志・小松克行 監訳 アスキー出版局 ISBN4-7561-1526-8 \7,800 ・仮想デバイスドライバの作り方 大貫広幸 著 CQ出版社 ISBN4-7898-3384-4 \2,381 ・Microsoft Knowledge Base Q196550 HOWTO: Access IDE Controller Registers Using IDE Passthrough http://support.microsoft.com/support/kb/articles/Q196/5/50.ASP 9.注意事項、その他 ・このプログラムはフリーソフトウェアです。 ・このプログラムの著作権は作者である私 K.Takata(高田 謙)に帰属しま す。 ・もしこのプログラムを使用することで HDD が壊れるなどの何らかの問題 が発生しても作者は一切の責任を負いません。各自の責任で使用してくだ さい。 ・正式公開版ではないので、再配布・転載を一切禁止します。 ・ソースファイルの使用は個人的利用に限り自由です。このソースファイル を利用してシェアウェアや市販ソフトを作ることは一切禁止します。この ソースファイルを利用してフリーソフトを作った場合は、ソースを公開す ることを強く要求します。 作者 : K.Takata(高田 謙) E-mail : kentkt@anet.ne.jp, HZL03275@nifty.ne.jp URL : http://webs.to/ken/