Last Updated 2005/08/05 |
Programming Tips Windows | 索 引 |
VxDのCreateFile
2005/08/05
1. xxxx.VXD ファイルを CreateFile() でロード xxxx.VXD ファイルをパスの通った場所におく. CreateFile("\\\\.\\xxxx.VXD", ...) する.VxD 名に拡張子があればファイル名と判断して,パスからファイルを検索する. (xxxx.VXD の xxxx の部分と DEF で指定する内部モジュール名とが一致している場合のみ) 2. 既にロードされている VxD や Win95 標準 VxD を CreateFile() ".VXD" の拡張子無しで CreateFile() する.("\\\\.\\VWIN32" など) 拡張子を付けない場合は内部モジュール名と判断され,ロード済み VxD リストを検索する.(正確には先にレジストリを検索) 例えば MYVXD.VXD (内部モジュール名 MYVXD) を作ったとすると,最初のロード時 (未ロード時) は CreateFile("\\\\.\\MYVXD.VXD", ...) とする必要があるが,誰かが MYVXD をロードしそれがまだメモリに張り付いているのであれば,その後は "\\\\.\\MYVXD.VXD" でも "\\\\.\\MYVXD" でも成功する. (MYVXD.VXD は PATH の通った所にあるものとする) Windows\System\ の下にある .VXD ファイルの中には,このルールに合致しない奴とかいて,不安定である.(static VxD だとどうだとかかもしれない) static VxD の場合は、system.ini でロードさせておき,拡張子無しで CreateFile() するのが良い. 自作の Dynamic VxD で試す分には,上のルールに合致する. CreateFile() に渡す VxD 名に関しては,Win95 SDK の HELP に書いてある. "Programmer's Guide" の "Using Windows 95 Features" の下に DeviceIoControl 関係の記述が見つかるはずである. 以下が VC++2.0 でのサンプルである. Console アプリとしてビルドして,「(program_name) VWIN32」とか「(program_name) CVXDSAMP.VXD」 等でテストする.
参照 物理アドレス使用 |
|