Windowsによるハードウェア制御
物理メモリへのアクセスからI/Oポートの操作まで
北山 洋幸 著
B5判 208ページ
CD-ROM付き
定価2,420円(税込)
JAN9784789833882
2000年7月15日発行
大変恐縮ですが,こちらの商品は品切れ絶版となりました.
時代は,パソコンからインターネットの世界,デジタル家電の世界へ移ろうとしています.コンピュータを用いた開発作業も,ビジュアルでバーチャルな世界へ移ってきました.そのため本書のように,ハードウェアを制御したり,時にははんだごてを必要とするような作業は一見泥臭いように感じられるでしょう.
しかし,バーチャルな世界とは異なり,ドライバを開発し実際に物を動かすと,コンピュータの原理がよくわかります.画面だけの世界から抜け出すと,バーチャルな世界とは違った喜びがあります.自分の世界を狭めず「ソフトウェア屋だから,はんだごてなんか握らない!」と言わず,違う分野に入っていくのも新しい発見につながるのではないでしょうか.
本書は,ハードウェア,ソフトウェアとひとくくりにせず,両方にまたがる内容を扱っています.
8ビットマイコンが登場した頃はハードウェアさえ手作りでした.OSさえ自分で作らなければならいことも少なくありませんでした.
しかし,時代はROM BASIC,DOS,Windows 3.1,Windows 95/98,Windows NT/2000,インターネットと移り変わり,次第にOSやハードウェアと疎遠になってきました.
本書はもう一度,初期の頃に帰ってパソコンを画面の中から解放します.
よく「コンピュータは道具だ」と表現されます.この場合の「道具」とは文章を書いたり,絵を描いたり,インターネットを楽しむことを指しています.コンピュータは創作活動にとても適した道具であり,特にプログラムを開発する道具としては唯一無二の存在です.
ビジュアルな開発環境も整備され,Windowsでのプログラミングは以前と比較すると格段に容易になりました.是非この機会に,使う側から作る側に回ってみてはいかがでしょう.単なる利用者でない新しい世界が始まります.
(以上,本書の「まえがき」から)
目次
第1章 Windowsからの物理メモリアクセス
1-1 物理メモリアクセス(その1)
1-1-1 プログラムファイルとプログラム構造
1-1-2 プログラムの解説
● 変数の宣言
● アドレスの代入
● ビデオRAMへの書き込み
1-1-3 プログラムの作成方法
1-1-4 プログラムの実行とカスタマイズ
1-1-5 コンパイル環境と実行環境
Coffee Break 閑話休題 : 磁気ドラム
1-2 物理メモリアクセス(その2)
1-2-1 プログラムファイルとプログラム構造
1-2-2 プログラムの解説
● ヘッダーファイル
● 変数:CreateSelector()
● セグメントレジスタを取得:CreateSelector()
● セレクタの割り当て:CreateSelector()
● リニアアドレスの算出:CreateSelector()
● セレクタのベースを設定:CreateSelector()
● セレクタのリミットを設定:CreateSelector()
● 変数:WinMain()
● CreateSelector()の呼び出し:WinMain()
● ポインタを生成:WinMain()
● ビデオRAMへの書き込み:WinMain()
● セレクタの解放:WinMain()
1-2-3 プログラムの作成方法
1-2-4 プログラムの実行とカスタマイズ
Coffee Break 閑話休題 : マイクロコンピュータの出現
第2章 Windowsからプリンタ,プリンタポートを制御する方法
2-1 Windows API OpenPrinter,StartDocPrinterを使う方法
2-1-1 Win32ではプリンタドライバをバイパスできる
2-1-2 プリンタへ直接データを送る方法
2-1-3 プログラムの使用方法
2-1-4 プログラムの解説
● メインウィンドウはダイアログ
● プリンタ名の取得
● 印刷ファイル名の取得
● HP-GLモードへの切り替え
コラム■HP社のレーザプリンタ
2-1-5 プログラムのカスタマイズ
Coffee Break 閑話休題 : タスクスイッチ
2-2 Windows API CreateFile,WriteFile,CloseHandleを使う方法
2-2-1 プログラムの使用方法
2-2-2 プログラムの解説
Coffee Break 閑話休題 : コンテキスト
2-3 Win32コンソールアプリケーションからの印刷
2-3-1 プログラムの解説
● プリンタのデバイスコンテキストを取得
● 印刷中止処理
2-3-2 プログラムの使用方法,
Coffee Break 閑話休題 : インスタンス
2-4 VxDを利用して直接in/out命令を使う方法
2-4-1 アプリケーションからレジスタにアクセスできるか
2-4-2 I/Oポートのアービトレーション(Arbitration:調停)
● VxD VCOMMとVPDの役割
● VCOMM_Get_Contention_Handler,VCOMM_Map_Name_To_Resource,ACQUIRE_RESOURCE,RELEASE_RESOURCE
● ACQUIRE_RESOURCE後にポートアクセスがあった場合の処理
2-4-3 プリンタポートモニタの作成
2-4-4 VxDの開発
Coffee Break 閑話休題 : ダイナミックリンクライブラリ
第3章 プロセッサシリアル番号表示プログラム
3-1 CPUID命令の検出
3-2 CPUID命令の出力
3-3 プログラム構造
3-4 DLLの開発
3-4-1 AppWizardでスケルトンを作成
3-4-2 各プロシージャの追加
3-4-3 ヘッダーファイルの作成
3-4-4 DEFファイルの作成
3-4-5 ビルド
3-4-6 DUMPBIN.EXEで外部名のチェック
3-5 C++ Builderによるユーザーインターフェース部の開発
3-5-1 フォームの作成
3-5-2 IMPLIB.EXEでインポートライブラリを作成
3-5-3 ビルド
3-5-4 実行例
3-6 Visual Basicによるユーザーインターフェース部の開発
3-6-1 フォームの作成
3-6-2 実行例
3-7 さいごに
Appendix 「スクリーンに落書き」プログラムを作る
A-1 プログラムの説明
● メイン関数
● ウインドウプロシージャ
A-2 プログラムの実行
第4章 WindowsとDOS互換ボックスとの通信
4-1 DOS窓とWindowsアプリケーションとの通信:その1(クリップボードの利用)
4-1-1 プログラムの解説
4-1-2 プログラムの使い方
● DOSを起動する
● S2CLIP.COMを起動する
● DOS上のデータが必要になったら,Altキーと右のShiftキーを同時に押す
● Windowsアプリケーションで「貼り付け」などを使ってDOS画面を貼り付ける
4-1-3 プログラムの作成方法
● MASMを使用した場合
● OPTASMを使用した場合
4-1-4 まとめ,
Coffee Break 閑話休題 : 何のためのオープンシステム(分散処理)か?
4-2 DOS窓とWindowsアプリケーションとの通信:その2(共有メモリの利用)
4-2-1 プログラムの動作概念
● DOSプログラムの詳細
◆ 割り込み番号16h(Keyboard)
◆ 割り込み番号2Fh
● Windowsアプリケーションの詳細
4-2-2 プログラムの解説
● DOSプログラム
◆ int16_front
◆ int2F_front
◆ codestart
◆ setint
● Windowsアプリケーション
◆ インクルードファイル
◆ CreateSelector
◆ View
◆ outputText
4-2-3 プログラムの作成方法
● DOS用
◆ MASMを使用した場合
◆ OPTASM使用した場合
● Windows用
4-2-4 プログラムの使い方
4-2-5 まとめ
Coffee Break 閑話休題 : マイクロプロセッサ
4-3 DOS窓とWindowsアプリケーションとの通信:その3(パイプとクリップボードの利用)
4-3-1 プログラムの動作概念
4-3-2 プログラムの解説
4-3-3 プログラムの作成方法
4-3-4 使用方法
Coffee Break 閑話休題 : コアメモリ
第5章 Windowsでハードウェア制御
5-1 Windowsから直接I/Oを制御する・その1(音を出す)
5-1-1 アプリケーションの構造
5-1-2 プログラムの解説
● スピーカの鳴らし方,止め方
● 周波数の求め方
● 時間の管理
● 音楽演奏メインループ
5-1-3 プログラムの使い方
5-1-4 DOSとWindowsのI/Oアクセスの違い
5-1-5 まとめ
Coffee Break 閑話休題 : クリティカルセクション
5-2 Windowsから直接I/Oを制御する・その2(ラジコンの制御)
5-2-1 システムの概念
5-2-2 ハードウェアの用意
● ISAボード
◆ アドレスの設定
◆ 駆動電源
● リレー
● ラジコン
5-2-3 アプリケーションの構造
5-2-4 アプリケーションの使い方
5-2-5 プログラムの解説
● ラジコンの制御
● プログラムの作成方法,コンパイル,実行環境
5-2-6 ここまでのまとめ
Coffee Break 閑話休題 : ソフトウェアって何!
5-3 VxDでI/Oを制御する
5-3-1 VxDのローディング
5-3-2 システムの概念
5-3-3 ハードウェアについて
5-3-4 プログラムファイル
● Windowsアプリケーション用
● DLL(Dynamic Link Library)用
● VxD(Virtual Device Driver)用
5-3-5 使用言語
● Windowsアプリケーション用
● Windows DLL用
● VxD用
5-3-6 プログラムの使い方
5-3-7 プログラムの作り方
● Windowsアプリケーション用
● Windows DLL用
● VxD用
5-3-8 まとめ
Coffee Break 閑話休題: 日本の進路
5-4 VxDでI/Oをバーチャライズ
5-4-1 システムの概念
5-4-2 使用言語
● VxD用
● DOS互換ボックス用テストプログラム(無くても構わない)
5-4-3 プログラムの使い方
5-4-4 プログラムの作り方
5-4-5 まとめ
Coffee Break 閑話休題 : ネットワーク環境とセキュリティ
第6章 Visual BasicからのI/Oアクセス
6-1 Visual Basicからラジコンを制御する
6-1-1 Visual C++でDLLを作る
● _inp関数
● _outp関数
● DEFファイル
● デバッグ情報の削除
● エクスポートされている関数の確認
6-1-2 プログラムの構成
6-1-3 VBプログラムの解説
● フォーム
● グレードアップ
◆ Appオブジェクトの利用
コラム●ワンポイントレッスン:カレントディレクトリ
◆ 強制終了の追加
コラム●ワンポイントレッスン:I/Oアドレスの予約
6-1-4 実行!
6-2 ActiveXコントロールでI/O制御
6-2-1 ControlWizardの操作
6-2-2 メソッドの追加
6-2-3 ビルド
6-2-4 ActiveXコントロールのテスト
6-2-5 Visual Basicで使用するための前準備
6-2-6 プログラムの体系
6-2-7 Visual Basicプログラムの説明
6-2-8 実行!
6-2-9 ActiveXコントロールのレジストリへの登録と削除
● 登録
● 削除
6-3 LPTポートモニタ
6-3-1 ActiveXコントロールの開発
● ControlWizard
● メソッドの追加
6-3-2 ビルド
6-3-3 Visual Basicでの使用
6-3-4 Visual Basicプログラムの説明
6-3-5 実行!
6-4 Visual BasicからActiveXコントロール経由でPCI BIOSを呼び出す
6-4-1 メソッド経由でBIOS呼び出し(VbPciBios)
6-4-2 AppWizard
6-4-3 メソッドの追加
6-4-4 ビルド
6-4-5 ActiveXコントロールのテスト
6-4-6 Visual Basicでの使用
6-4-7 プログラムの体系
6-4-8 実行!
6-4-9 ActiveXコントロールのレジストリへの登録と削除
6-4-10 プロパティを経由してBIOS呼び出す(VbPciBiosP)
● AppWizard
● プロパティの追加
6-4-11 ビルド
6-4-12 テスト
6-4-13 Visual Basicで使用する
6-4-14 実行!
●本書付属のCD-ROMについてのご注意
本書付属のCD-ROMの貸与または改変,複写複製(コピー)はできません.詳しくはこちらをご覧ください.