2003/08/18 更新
Compact VxD Ver.0.01 Copyright (C) 2001-2003 K.Takata 1.概要 VxD ファイルに含まれる無駄な領域を削除して、VxD ファイルのサイズを 小さくするためのプログラムです。数百bytes から 4KB 程度サイズを小さ くすることができるようです。 このプログラムは、既にある VxD のサイズを小さくすることよりは、VxD 制作者が小さい VxD を作ることを目的として使うことを意図しています。 なお、このプログラムはまだ実験的段階にありますので VxD のサイズを 小さくすることで正常に動作しなくなる可能性も考えられます。 2.動作環境 MS-DOS, Win9x DOS窓など 3.使用方法 > cvxd [<option>] <vxdname>... <option> -s1 : スタブを差し替える (64bytes) -s2 : スタブを差し替える (96bytes) -s : スタブを差し替えない (default) -ld : ダイナミックロードに変更する (DANGEROUS!!) -ls : スタティックロードに変更する (DANGEROUS!!) -l : ロード方式を変更しない (default) -h, -? : このヘルプを表示する <vxdname> 処理する VxD 名(ワイルドカード可) 例えば foo.vxd のサイズを小さくするには、コマンドラインから > cvxd foo.vxd と入力します。拡張子が省略されたときは .vxd を勝手に付加します。オリ ジナルの foo.vxd は foo.old という名前でバックアップされます。 foo.old というファイルが既に存在する場合は上書きされます。 -s1 または -s2 を指定すると、スタブプログラムを差し替えることで、 VxD のサイズをさらに小さくすることができます。 スタブプログラムとは、Windows プログラムの中に組み込まれている DOS プログラムのことです。Windows プログラムを MS-DOS で実行すると、 "This program cannot be run in MS-DOS mode." となどいうメッセージが 表示されますが、このメッセージを表示しているのがスタブプログラムです。 -s2 を指定すると、元のスタブを "This program cannot be run in MS-DOS mode." というメッセージを表示する 96bytes のスタブと差し替え ます。 -s1 を指定すると、元のスタブを "Win32 program." というメッセージを 表示する 64bytes のスタブと差し替えます。 なお、元のスタブが何らかの有用な働きをするプログラムだった場合、ス タブを差し替えてしまうと動作に支障をきたすことになるので注意が必要で す。VxD の拡張子が .vxd の場合はスタブが有用な働きをする可能性は低い のでスタブを差し替えても問題が起こることは少ないでしょうが、VxD の拡 張子が .exe の場合はスタブとして有用なプログラムが組み込まれている可 能性があるのでスタブを差し替えるのはやめるべきです。 -s1, -s2, -s を同時に指定した場合、VxD 名の直前に指定したオプショ ンが有効となります。 > cvxd -s1 foo.vxd -s2 bar.vxd -s baz.vxd として実行すると、foo.vxd に対しては -s1 が、bar.vxd に対しては -s2 が、baz.vxd に対しては -s が指定されたことになります。 Win9x の DOS 窓や Win2k のコマンドプロンプトで cvxd を実行した場合、 以下のように LFN(Long File Name) が利用できます。スペースを含むパス を指定する場合は、ダブルクォーテーションで括ってください。 > cvxd "\Program Files\foo.vxd" -ld, -ls を指定すると VxD のロード方法を変更できます。しかし、通常 の VxD は両方のロード方法に対応するようには書かれていないので、ロー ド方法を変更するとまず動作しなくなります。危険ですので分かる人以外は このオプションは使わないでください。 4.参考文献など MS からは VxD のフォーマット(Linear Executable Format) は公開され ていません。こういうときは http://www.wotsit.org/ で検索するのが手っ 取り早いです。vxd で検索してみるとすぐに見つかります。 http://www.wotsit.org/download.asp?f=le これが、LE Format の仕様です。なお、このドキュメントには、LE ヘッダ に関して一部不備があります。リソースのオフセット、サイズ、デバイス ID、DDK のバージョンに関する記載がありません。この部分に関しては cvxd.c を参照してください。 5.コンパイル方法 このプログラムのコンパイルには LSI C-86 3.30c 試食版と、Arrowsoft Assembler v1.00d (*1)、拙作の LFN library、Stbhdr を利用しています。 (アセンブラは MASM 3.0 以上で代用可能です。) コマンドラインから以 下のように入力すると cvxd.exe ができます。 > make -f cvxd.mak (*1) MASM 3.0 互換のフリーのアセンブラ。以下の場所から入手可能。 http://www.vector.co.jp/soft/dos/prog/se014771.html 6.更新履歴 2001/10/28 Ver.0.00 ・最初の公開バージョン。 2003/08/14 Ver.0.01 ・スタブを差し替えたとき、Win98DDK に付属の hdr コマンドで LE ヘ ッダの情報が表示されなくなってしまう不具合を修正。 ・-ld, -ls, -l オプションを追加。 7.注意事項、その他 ・このプログラムはフリーソフトウェアです。 ・このプログラムの著作権は作者である私 K.Takata(高田 謙)に帰属しま す。 ・もしこのプログラムを使用することで何らかの問題が発生しても作者はい っさいの責任を負いません。各自の責任で使用してください。 ・アーカイブを変更しない限り配布/転載は自由です。 ・ソースファイルの使用は非商用に限り自由です。 作者 : K.Takata(高田 謙) E-mail : kentkt@anet.ne.jp, HZL03275@nifty.ne.jp URL : http://webs.to/ken/