1.2 |
物理メモリアクセス(その2 プログラムの作成方法) |
1-2-3 プログラムの作成方法
Visual C++ 1.51を起動した後,MD2.MAKを開いてビルドします.あるいは,Visual C++をインストールしたときに,*.MAKが関連づけられるので,MD2.MAKをダブルクリックして,Visual C++を起動する方法もあります(注1-9).
1-2-4 プログラムの実行とカスタマイズ
プログラムの実行方法は,MD.EXEと同様にMD2.EXEをクリックします(図1-4).
i386などのプロテクトモードでは,セグメントはセグメントアドレスではなくセレクタで表わされますが,Windowsアプリケーションであっても,ある物理メモリのセレクタさえ作れば,物理メモリへアクセスすることができます.通常のOSであればメモリ保護例外などが発生してしまいます.しかし,Windows 95/98ではメモリ保護例外は発生しません.
このように,物理メモリを直接操作できるので,GDIを使うことなく画面をアクセスすることができます.そのほかにもいろいろなことができるでしょう.この方法を応用してDOS用に開発したドライバとWindowsアプリケーションで通信することも可能です.大きなメモリを同時に受け渡すことも可能ですので,ちょっとしたドライバを作ることもできます.
なお,FreeSelector関数,AllocSelector関数は,あまり使ってほしくない関数のようです.使用には十分注意してください.ちょっとした間違いで,Windowsの環境を壊してしまう可能性があります.事実,これらのAPIはWin32 APIから削除されました.ただ,動作はWindows 9xなどの32ビット環境でも問題ありません.
なかなか面白い実験ではなかったでしょうか.自分の目的に合わせて変更し,新しいプログラムを作ってください.
注:1-9 Win32では,このプログラムをビルドすることはできません.
Copyright 2000 北山 洋幸
|