Visual BasicからActiveコントロールでBIOS呼び出し

北山 洋幸

 さて,本誌でいくつか,I/O制御を紹介しました.今回は,Visual BasicからActiveXコントロールを経由してPCI BIOSを呼び出してみます.今回は,なんとActiveXコントロールの中でアセンブラを使用します.ActiveXコントロールを使いながら,アセンブラを使うという,今昔取り混ぜたプログラミングを行ってみましょう.
 本プログラムは,ActiveXコントロールである必要はありません.しかし,ActiveXコントロールを使うと,Visual Basicコーディング中にプロパティやメソッドなどを参照でき,タイプミスなどを防ぐことができます.PCI BIOSの呼び出しを,メソッドとプロパティの両方に定義して,使い勝手の違いも実感できます.
未掲載のリストはこちらからダウンロードできます.
環境
 PCI BIOSが存在するWindows9xパソコン.
コンパイラ
 Visual Basic 6.0 Professonal Edition以上
 Visual C++ 6.0 Professonal Edition以上

 

メソッド経由でBIOS呼び出し(VbPciBios)

 このプログラムではPCIバージョンをActivexコントロールのメソッドにマップします.ほかにもプロパティからPCIバージョンを取得する方法も考えられますが,こちらの方法は後述します.
● AppWizard
 Visual C++を起動したら,「ファイル」→「新規作成」を押して,「新規作成」ダイアログを表示させます(図1).
 「プロジェクト」タブを押し,「MFC ActiveX Control Wizard」を選択します.このとき,ActiveXコントロールの名前も入力します.プラットフォームはWin32を使用します(図2).
 MFC ActiveX ControlWizardのステップ1/2ダイアログが現れます.すべての設定をデフォルトのまま「次へ」を押してください(図3).
 次に,MFC ActiveX ControlWizardのステップ2/2ダイアログが現れます.今回はActiveXコントロールをPCI BIOS呼び出しのラッパーとして使います.通常のコンポーネントと違って,ユーザに見える必要はありません.したがって「実行時には不可視」のチェックを行います(図4).
 新規プロジェクト情報が表示されます.内容をチェックして,誤りがなければOKを押します(図5).
 ここまでのWizardの操作で作成された内容を,ワークスペースのClassView,ResourceView,およびFileViewで見てみます(図6,図7,図8).
● メソッドの追加
 メソッドを追加するには,ClassWizardを使います.ClassWizardは「表示」→「ClassWizard...」か,あるいは「Ctrl+W」で起動します(図9).
 そうすると,MFC ClassWizardダイアログが現れます.オートメーションタブを選んで,「メソッドの追加」ボタンを押します(図10).
 外部名にgetMajorVersionと入力します,これがメソッド名です.内部名は外部名を入力すると自動で入りますので,そのまま使います.戻り値にshortを指定します.パラメータリストにメソッドのパラメータを指定します.名前を入力し,タイプにデータ型を指定します.データ型はプルダウンメニューから選ぶことができます.今回はパラメータはありません(図11).
 PCIバージョンにはメジャーバージョンと,マイナーバージョンがあります.そこで,もうひとつ,getMinorVersionメソッドも,同様に追加します(図12).
 OKを押すと,MFC ClassWizardダイアログに戻ります.インプリメンテーションの欄に先ほど入力した内容が表示されます.間違いがなければ,OKを押します.外部名に二つのメソッドが追加されているのが分かります.内容をチェックしたいメソッドを選択すれば,その内容がインプリメンテーションの欄に表示されます(図13).
 メソッド追加後のワークスペースのClassViewには,先ほど追加したメソッドが追加されています(図14).
 この追加されたメンバ関数を変更します.単純にreturn 0となっていたのを,PCI BIOSを呼び出してバージョンを返すようにします. 変更前と,変更後のプログラムソースをリスト1に示します.
 この状態で,「ビルド」→「リビルド」すると,ActiveXコントロールが作られ,かつ,ActiveXコントロールが自動登録されます.リビルドしなくともかまいません,ビルドボタンを押すだけでもかまいませんが,最初にビルドする場合や,環境を変えた場合はリビルドするのが安全です.
 なお,ここで使用したPCI BIOSについて,図15に説明します.
● ビルド
 ここまでの作業でActiveXコントロールは...

以下省略 


copyright 1999 北山洋幸