Visual BasicからActiveコントロールでBIOS呼び出し 北山 洋幸
|
メソッド経由で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 北山洋幸