===============================================
■このテキストを読む前に、
【デバイスの “親子関係”/データの流れ】 を レジストリで分析。
を 先に読んだ方が、
このテキストの目指すところの理念を理解しやすく、面白みもいくらか増すでしょう(わかる所だけ読めば結構です)。
===============================================
このテキストは、 【Win98が自動組込みしない拡張カード】等に関する "最良の対処方法" を示すものです。
◇基本的に Adaptec の【19160 Ultra160 PCI SCSI Controller】を題材として説明します。
(以下、【19160_Ultra160】と略記。)
【】や "" を多用しますが、 これは 主語・動詞 や 名詞・助詞 などの "掛かり関係" を明確にするためです。
見た目の印象では 【】や "" が少ない方が読みやすいですが、
これは 読む人の思い込みに左右された形で 意味を解釈される危険性が高くなります。
特に、この "掛かり関係" が多重構造になる場合や "複合的に表現した名詞" の全体を指し示す場合は
読み手に誤解を与えないために 【】や "" は 必須です。
「文章の区切り」という意味において、句点(。)と読点(、)では 句点の方が その優先度が高いです。
同じ意味合いで、
「読点で区切るほどではないが 区切りを明確にする」という目的で、【読点】と【全角の空白】と【半角の空白】を使い分けています。
区切りの優先度は 【読点】・【全角の空白】・【半角の空白】の順番です。
なお 「"」の前後に【半角の空白】を付けている事が多いですが、
この目的は 【】や「」と同じような視覚的印象にするためです。
【】と「」と "" の使い分けについては 特に説明しませんが、
特定の名詞・特定の熟語・特定の複合名詞 などを 1つの単語として明確化する目的や
ハッキリと印象付ける目的で 【】を使っています。
「 +"」の代わりに 全角の「“」を使っても良いのですが、理由があって使っていません。
■■このテキストは 初級〜中級者が【応用】するための“理屈の説明”ですので、文書サイズが大きくなっています。
■■手順を 簡単に理解して 手早く目的を達成できるように書いたテキストは、こちらです。→ 細工して19160を自動認識させるために使う.txt
===============================================
最初から余談ですが、AH氏からの【その後の報告】です。
その後の報告です。
SOTEC M350V の方のPCに PatitionMagicを使用して 隠しパーティションをつくり、
そこに【英語版 Win98】をインストールしてデュアルブートにしました。
そして 英語版の【地誌ソフト(Win98以降のバージョン)】をインストールしました。
【英語版 Win98】のインストールで少し面倒だったことは、
【英語版 Win98】のCDには 日本製マシンのモニターの情報が入っていなかったので、1回目は ディスプレイの設定が出来ず、
失敗しました。
そこで、以前 田中さんがいらっしゃって 私のFaith_PCで Win98seインストール+田中式処置をした時、
Win98インストール直前に SCSIのINFファイルとドライバをフロッピーからコピーして対処したことを思い出しました。
【日本語版 Win98】に切り換えて、日本製モニターのINFファイル等を抜き出して あの階層になるようにフロッピーにコピー
しました。
そして、【英語版 Win98】の方のパーティションを再フォーマットし、フロッピーから 階層ごとコピーしておき、
こんどは 【英語版 Win98】インストールに成功でした。インストール完了直後に モニターは自動的に組み込まれていました。
===============================================
★このテキストの中で『CATファイルをどうするか』について長々と説明している部分がありますが、
その後のテストで、
拡張カードを認識させてドライバを組み込むためには、
【Win98の“拡張カード添付のCATファイル”の参照】を無効化しても大丈夫であることが判明しました。
(この部分は 後から書き足しました。)
具体的には、
次のように、INFファイルの中の【CATファイルを参照する行】を無効化する形で、
前もって 書き換えておきます。
; CatalogFile=ADPU160M.cat ; ← 行頭に「;(半角のセミコロン)」を置いて この行を無効化する。
; (CATファイルを参照させない。)
こうすると、Windows98から何も尋ねられずに【自動組み込み】されます。(↑こうすれば ADPU160M.cat は不要。)
HP公開のビデオの中で動作しているWin98について説明しますが、
拡張ATAカードを組み込んであり、このカードも CATファイルが標準で添付されています。
しかし、Winセットアップ時も 田中式処置の時も、上記のように 【CATファイル参照行】を無効化して行いました。
※私のWin98には Ultra.cat は存在しません。
通常、この拡張ATAカード(Ultra100 TX2)を組み込んだWin98には Ultra.cat が存在します。
その後 9ヶ月経過しますが、障害は一切ありません。
「こんな、サイズが10バイト前後のファイル、何の役に立っているかな?」
と 以前から感じていましたが、案の定・・でした。
「デバイス情報・ハードウェア情報のファイルではない」事だけは確かです。
CATファイルは Windowsにとって【組み込み動作に必須のファイル】でもありません。
CATファイルを添付されていない拡張カードも数多く存在しますが、何の問題も無く組み込めます。
この「加筆修整」と同様の文章が 下方にもういちど登場します。
テキスト下方の【INFファイル全体の見本】は 同様に加筆しておきましたが、
それ以外の部分は修正してありませんので、
INFファイルの中の「CATファイルを参照する行」を無効化したならば、
以後は 【CATファイルに関する説明】を 頭の中で「無視」するか 読み流して下さい。
===============================================
===============================================
■■■■ 【序 論】 ■■■■
=======
"Setup.exeによって 関連ツールごと組み込む"スタイルの場合は別として、
【Win98が自動組込みしない拡張デバイス】で 一般的に行なわれている方法は
デバイスマネージャの操作によって【フロッピーからインストール】する形態です。
しかし、"根幹的な拡張デバイス"の場合は
この方法ですと 【田中式】でも【Winセットアップ】でも 最高の結果とならない事が多いようです。
※SCSIカードの場合、Winセットアップの PnPデバイス検出の "早い段階" で組み込まれるべきなのに、
Winセットアップで「自動組込み」されなかった場合は
"デバイスマネージャ"か"ハードウェアウィザード"で 【手動を伴なう組込み】をする事になります。
SCSIカードは "USBコントローラ" 等よりも明らかに優先デバイスであるべきなのに、
結果的に「後まわし」にされてしまう事になります。
第2HPを読んだ段階で 理解して頂けた事を期待しますが、
"USBコントローラ・USBデバイス" は "下流のデバイス" であり、PCIの亜流デバイスです。
(【"認識順"を気にしなくても良いデバイス】を除外しての説明です。)
参考までに、
接続デバイスの "INFファイル・ドライバ" が不足無く揃った状態で 田中式処置 を行ない、
【インストーラに横から手を出させない形での PnP検出】をさせた場合、
【USB.pnfの再生成】は 【diskdrv.pnfの再生成】よりも後です。
つまり、USBデバイスは【殆どのデバイスより"後まわし"】で構わないデバイスなのです。
(Win98における "USBドライバの動作" を考えれば当然。)
それなのに、
【ディスクドライブよりも"上流"のデバイスであるべき SCSIカード】の"PNP再生成" が
ディスクドライブの"PNP再生成" よりも後になってしまうのでは 不自然です。
【ハード構成とドライバ動作にデリケートなWin98】にとっては、
"クッションを抱えた動作"をするUSBデバイスなんか 「最後の組込み」で充分です。
それよりも、
USBのような"クッション的な動作"が介在するデバイスを 後まわしにした方が良いでしょう。
現に、1年半の間 【フリーズ無し・青画面無し】で動作し続けた 私のPCでは
"USBコントローラ・USBデバイス" は 【田中式処置】において「最後の組込み」となっています。
Win98で【フロッピーからインストール】した拡張デバイスの場合は
その認識結果において "顕著な特徴" があります。
この"顕著な特徴"を下記に述べますから、
該当するデバイスが SCSIカード等の"パワーを要求(変な表現)"するデバイスであったならば、
後述の【本論】を参考にして下さい。
※「サブデバイス用としてのSCSIカード使用」のPCの場合は さほど気にする必要はありませんが、
最高のパフォーマンスで動作した方が良いに決まっています。
●Win98_SE は【19160_Ultra160】を自動認識しません。
(Win98の標準INFファイルであるscsi.inf・scsij.infには【19160_Ultra160】の情報が記述されていません)。
しかし、【Win98セットアップ前】に
下記の【図 a】に示す形で 事前に Cドライブにファイルを配置しておけば 自動的に組み込まれます。
【図 a】 C:\
└─WINDOWS
│
├─INF \ adpu160m.inf
│ │
│ └─ \ CATALOG \ adpu160m.cat
│
└─SYSTEM
│
└─IOSUBSYS \ adpu160m.mpd
- - - - - - - - - - - - ◆下記の21行は 後から書き足しました。◆- - - - - - - - - - - -
◆【注目】その後のテストで 判明しました。
INFファイルを 前もって書き換えて、
Windows98に CATファイル を参照(利用)させないスタイルで【自動組み込み】させる事ができます。
上記のように配置しても CATファイルの存在場所を Win98に尋ねられます。
(自動組み込みは行われますが 完全な自動組みとはなりません。)
それよりも、
下記のように INFファイルの中の「CATファイルを参照する行」を 前もって 無効化してしまった方が
スマートです。
こうすると、Windows98から何も尋ねられずに【自動組み込み】されます。
※このテキスト下方の【INFファイル全体の見本】は 同様に加筆修整しておきました。
他の部分は 加筆修整してありませんので、
下記のように INFファイルの中の【CATファイルを参照する行】を無効化したならば、
以後、【CATファイル(CatalogFile)】に関する説明を 頭の中で「無視」するか 読み流して下さい。
[Version]
signature="$Windows 95$"
Class=SCSIAdapter
Provider=%ADP%
; CatalogFile=ADPU160M.cat ; ← 行頭に「;(半角のセミコロン)」を置いて この行を無効化する。
; (CATファイルを参照させない。)
DriverVer=10/01/1999,3.3
- - - - - - - - - - - - - - ◆書き足しは ここまで。◆- - - - - - - - - - - - - - - - - -
※"専用のCATファイル" が不要のデバイスの場合は、本テキストの中での CATファイルに関する説明を無視して下さい。
※【Win98が自動組込みしないデバイス】を他にも持っていたと仮定しましょう。
例えば "三菱電気 RDF17S" を買ったとしましょう。(モニターは神経質に考える必要はありませんが。)
この場合は、
【Win98セットアップ前】および【田中式処置の前】に
下記の【図 b】に示す形で ファイルを事前に配置しておけば良いのです。
組込み作業をしなくても Winセットアップ後 プロファイル設定まで自動的に完了しています。
【図 b】 C:\
└─WINDOWS
│
├─INF \ MELICC10.inf
│
└─SYSTEM
│
└─COLOR \ D-TRONNF.ICM
【Win98が自動組込みしないデバイス】を幾つか持っていて
「"デバイスの使いまわし" をするかも知れない」のであれば、
上記の 【図 a】と【図 b】の2つを足したツリー構造で FD・MOメディア等に ファイルを配置して
保管しておけば良いのです。
で、Winセットアップ前に フォーマットしたHDD(C:)に 丸ごとコピーしてセットアップすればOKです。
どれかのデバイスを使用していないPCであっても 問題ありません。
【非使用のデバイス】の情報・ドライバは無視されるだけです。
infinst.exe を実行して【インストールセット】を作成するのも 有効な方法です。
でも これは "プリインストールPC" の場合と似ていますから、
デバイスの追加・交換の度に【インストールセット】を作成する事になり 面倒です。
このテキストで説明している内容は 理解するのが少し大変でしょうけど、
いったん理解してしまえば 実際の作業は "チョチョイのチョイ" で済んでしまいます。(最後に説明)
以下、「応用・理解」という事を主眼において説明します。
●まず、エクスプローラ閲覧を簡単にするために、ショートカットを1つ作りましょう。
マイコンピュータをダブルクリックして下さい。
"Cドライブアイコン"を右クリックして 表示されたメニューで【ショートカットの作成】を
選択しますと、デスクトップにショートカットが出来ます。
これをダブルクリックしますと エクスプローラがBOX形式で開きます。
このままだと使い難いので 設定を少し変更します。
このショートカットを右クリックして 表示されたメニューで【プロパティ】を選択します。
【リンク先】の入力欄が C:\ となっています。
この入力欄を ↓次のように変更します。(Winフォルダが WINDOWS 以外の時は読み替えて下さい)
C:\WINDOWS\EXPLORER.EXE /n,/e,/root,C:\
(手入力しないで コピーペーストして windowsフォルダ名部分を修整して下さい)
アイコンは 「アイコンの変更⇒参照」で 好きな物を指定して下さい。
(C:\windows\SYSTEM\Pifmgr.dll や C:\windows\SYSTEM\Shell32.dll 等が 沢山のアイコンを持っています)
【適用】ボタンを押して【プロパティ対話ボックス】を閉じます。
●C:\WINDOWS\INF フォルダの中を見て下さい。 この中に xxxxxxxx.inf というファイルが沢山あります。
(これらのファイルをやたらに右クリックしない事。)
(xxxxxxxx.inf というファイルが "情報ファイル" ですが、今は C:\WINDOWS\INF フォルダは見ません。)
●C:\WINDOWS\INF の中に OTHER というフォルダがあると思います。
この OTHER の中にも xxxxxxxx.inf というファイルがありますが、
xxxxxxxxの部分が 半角8文字 より長い物もあります。
ここにあるINFファイルは 主に 【フロッピーからインストールしたデバイス】の "情報ファイル" です。
(あるいは 【Install.exe等によって 関連ツールごと組み込んだデバイス】の "情報ファイル" です)
【自動認識・自動組み込みされたデバイス】の "情報ファイル" は C:\WINDOWS\INF の直下に置かれます。(Winセットアップでも。)
※ファイル名を見れば 大体 何のデバイスの情報ファイルか 見当が付くでしょう。
※自動検出の段階では【長い名前】を認識できません。
※inf というスペルは informationの略です。
↑情報ファイルが 【長い名前のファイル】として INF\OTHER に存在しているだけでは、
そのデバイスは 【田中式】を行なった時に自動認識・自動組み込みされません。
(ドライバが "所定の場所" に存在していても。)
●繰り返しますが、
【自動認識・自動組み込みされなかったデバイス】の情報ファイルは C:\WINDOWS\INF\OTHER の直下に置かれています。
でも、
"たまたま Win98が情報ファイルを持っていなかった" だけで、【組込み処理が 複雑ではないデバイス】
に関しては、
C:\WINDOWS\INF の直下に置く事が出来ます。
(ただし、xxxxxxxx.inf の xxxxxxxxの部分が 半角8文字 である必要があります)
上記の場合であれば、
「INFファイルが C:\WINDOWS\INF の直下に存在」+「ドライバ等が 所定のフォルダに存在」する
形であれば 【自動認識・自動組み込み】されます。
◇本論での【A・B】での操作で、xxxxxxxxの部分のネーミングは 自分で好きな名前にしても問題ありません。
(ちゃんと認識して正常に動作します)
ただし、"ペア"となるinfファイルが他に存在して それらが xxxxxxxxの名前を前提としている場合も
稀にありますし、
xxxxxxxx.inf自身の中に xxxxxxxx.inf の記述がある場合もあります。
だから、本来の "半角8文字.inf" のネーミングが無難でしょう。(【19160_Ultra160】の場合は adpu160m.inf)
※【重要】: 間違って無関係のINFファイルを「右クリック→インストール」しない事!。
【INFファイルの右クリック】は要注意です。
◇【本来の "半角8文字.inf"】の名前は どこで確認したら良いのでしょうか?
それは デバイスに添付されている "フロッピー"と"マニュアル" を見れば判ります。
※フロッピーに INFファイルが1つだけ入っている場合は悩む必要はありません。
問題となるのは OSごとに 別のフォルダ(or 別のINFファイル)に分けられている場合
です。
添付フロッピーの中のどのフォルダ(or どのINFファイル)を指定して組み込むか----が
"マニュアル" に書かれています。
そして、そのフォルダには xxxxxxxx.inf が1つだけ入っています。
(名前は "半角8文字.inf" で フロッピーに入っています)
本論での【A・B】での基本的な初期操作は、
このフロッピーの xxxxxxxx.inf を そのままの名前で C:\WINDOWS\INF の直下にコピーするのです。
※FDの1つのフォルダに複数の xxxxxxxx.inf が入っている場合は 本論での【A・B】の操作が無理な場合もあり、
出来る場合でも テクニックを要求されます。
この場合に "どうしても操作する必要"を感じる場合は、INFファイルを解析する必要があります。
即ち、【該当ドライバ組み込み】・【該当する"設定処理"】の部分を抜き出して
"標準形態のINFファイル" として合成(カスタマイズ)することになります。
さて、↑上記の "フロッピーの格納フォルダ"による確認だけでは「不安」を感じる場合は、
【INF\OTHER に存在する INFファイル】と比べて "中身が同一" のINFファイルを
添付フロッピーの中から捜せばOKです。
※中身の比較は Dosプロンプトを起動して 次のコマンド実行でチェック出来ます。
fc /b A:\フォルダ\xxxxxxxx.inf C:\WINDOWS\INF\OTHER\長い名前のINFファイル名
本論での【A・B】での基本的な初期操作は、
このフロッピーの xxxxxxxx.inf を そのままの名前で C:\WINDOWS\INF の直下にコピーするのです。
◇該当デバイスの情報ファイル(INFファイル)が、C:\WINDOWS\INF\OTHER の中の どのファイル
であるか? ----
これを確認する方法は簡単ですが、
認識結果における "顕著な特徴" とは別の話ですので 本論で説明します。
●≪注 意≫
【自動認識・自動組み込みされないデバイス】を組み込む時に使用したフロッピー
の中に "半角8文字.inf"( xxxxxxxx.inf)と同名の xxxxxxxx.cat が入っている場合があります。
この CATファイルに関しても【事前操作】としてコピーするのですが、
CATファイルについては 除外して説明します。
一緒に説明すると説明がややこしくなりますので、最後の辺りで まとめて説明します。
=============================================
■■■■ 【本 論】 ■■■■
=======
--------------------------------------------------------------------
--------------------------------------------------------------------
A.Win98が自動認識しない"根幹的な拡張デバイス" を、田中式処置で自動認識させ、
かつ 最高の結果が得られるようにするための事前操作
B.同様のデバイスについて、
Win98インストールの時にも 自動認識・自動組み込みさせるための事前操作
上記の2つの操作は、操作手順は異なりますが、その主眼とする点は 本質的に同じです。
そして、事前の操作として 【あ】・【い】の 2通りの方法があります。(後述)
また、【あ】の方法でも 【い】の方法でも、
【Win98セットアップ前】および【田中式処置の前】に
下記の図に示す形に ファイルを事前に配置しておけば 【19160_Ultra160】が自動的に組み込まれます。
C:\
└─WINDOWS
│
├─INF \ adpu160m.inf
│ │
│ └─ \ CATALOG \ adpu160m.cat
│
└─SYSTEM
│
└─IOSUBSYS \ adpu160m.mpd
◇上記の例は "19160 Ultra160 PCI SCSI Controller" の場合。
◆【19160_Ultra160】が自動的に組み込まれる時に
C:\windows\INFフォルダに adpu160m.PNFファイルが自動生成されます。
(↑ INFファイルと同じ名前のファイル名ですが、拡張子が PNF です。)
【田中式処置】の前に【19160_Ultra160】を自動組み込みさせた場合は、
【田中式処置】を行なう時に、特定のタイミングで adpu160m.PNFファイルを削除する(手作業)
事をオススメします。(拡張子が PNF)
【田中式処置での "特定のタイミング"】とは 【デバイスマネージャでの削除作業】の直前・直後です。
※【Win98が自動組み込みしないハードデバイス】を 本テキストの手法で自動組み込みさせた場合は
共通であると考えて下さい。
※"簡単実行版" では 'Win98が標準で自動組み込み出来ないハードデバイス' については
PNFファイルの操作を自動処理しませんし、
一般的なハードデバイスのPNFファイルについてしか 私は調査していません。
--------------------------------------------------------------------
--------------------------------------------------------------------
◆【Winセットアップ】と【田中式】の両方で後述の【あ・い】を行なう必要はありません。
◆【田中式】を行なう事を前提としているならば 【田中式】を行なう前に【あ】の操作を行なえば充分です。
(【田中式】を行なう前に 【あ】ではなく【い】の操作を行なっても良い)
◆【田中式】を行なう前に 【あ・い】どちらかを行なう予定であれば、
その前の【Winセットアップ】では 【あ・い】どちらも 行なう必要はありません。
◆理解してしまえば【い】の方が簡潔です。
【い】の方法で Winセットアップをしてしまえば、【田中式】を行なう前に【あ】の操作を行なう必要は
ありません。
◆【い】の方法を採用する場合でも、前もって【あ】の方法を練習しておいた方が
【い】の方法の理解が楽になります。
◆【あ】の方法は 【A(田中式)】を睨んだ目的には充分ですが、注意が必要です。
◆【い】の方法は 【A(田中式)】にも【B(Win98セットアップ時の自動認識)】にも
どちらにも同じ手法で対処できます。
(理解できてしまえば INFファイルだけ読めば良いので、【あ】よりも【い】の手順が簡潔。)
【い】の方法は 、【田中式】の骨子の部分とは無関係ですが、部分的には多少は関連しています。
また、【田中式】の発想に至る最初のキッカケとなったものでもあります。
*-- ここで 寄り道ですが Win95に少し触れます --*
【い】の方法は Windows95でも 全く同じ操作が通用します。
Win95再インストール前に 【い】の操作を行なう場合、
参考として【あ】を読む時に 外郭的な説明の部分で 1つだけ読みかえるべき要素があります。
それは即ち、Win95初期バージョンでは【長い名前のINFファイル】は生成されない事です。
※oem1.inf とか oem2.inf等の形式で自動命名されますが、
↑これらの oem◆.infは Winセットアップには無関係ですし、
【い】の作業においても oem◆.inf を操作する作業はありません。
(oem◆.infに配慮する必要は無し。)
oem◆.infに配慮する場面は Win95のGUIで【デバイス削除】した時だけです。
また、
【あ・い】の内 Win95に応用できるのは Win95再インストール前の【い】だけです。
(Win95(含む:OSR2)での【田中式処置】は "不可" です)
余談ですが、
Win95初期バージョンを使っていた頃、数種類のデバイスで 私は【い】を行なっていました。
特に 某M社の M〜mビデオカード(高額)の場合、
OakTecnologyのカードとして誤認識されて煩わしいだけでなく、
それまでのビデオドライバを新版やその後の版にアップデート(setup)した後は
【プリンタ組み込み】の直後に 必ず Winがハングアップしてしまうのでした。
私は これを回避する目的で、
ビデオドライバのINFファイルを別途 作成し、後述の【い】の方法で Win95セットアップ
していました。
※【プリンタ組み込み → Winハングアップ】については
ビデオドライバメーカーのテクニカル担当者は 『あなたのWinが変調なのでしょう』と
コメントしました。
そのせいで 直前に買ったフォトレタッチソフトを使う事ができなくなりました。
数ヶ月後 「原因はこれだろう」と思い、上記の私なりの方法で やっと問題が解決し、
検証データを併せて ビデオドライバメーカーに状況を報告しました。
(担当者は陳謝しました。)
結局 この件での結論としては ビデオドライバのインストーラに問題があったのでした。
この問題は あちこちで同様の現象が起きていたらしく、Win98が発表された時は
この問題を回避する対策が(Win98自体に)講じられていました。
この "回避の対策" は 画面のプロパティの中で 設定項目 として Win98_SEでも
確認できます。
*-- Win95についての説明 ここまで。 --*
--------------------------------------------------------------------
--------------------------------------------------------------------
【参 考】:
◇サウンドカード・マルチメディアカード等に対しては 【あ・い】の操作は行わない方が無難です。
※本テキストでの【あ・い】の手法が通用するか否かの判別は
次のように考えて下さい。
【そのデバイスの'ドライバ組み込み'を デバイスマネージャ で出来るかどうか・・】
デバイスマネージャで組み込む事は出来なくて "setup.exeで組み込むスタイル" のデバイス
は 【あ・い】の手法を用いる事は難しいです。
(出来なくはありません。 win95+Milleniumカードで 私は行なっていました。
ただし、本テキストで説明する事は困難です。)
サウンドカードのメーカーは 「Winセットアップ時に外してくれ」と言います。
これらのデバイスは、
"Setup.exe"から実行して 関連ツールを一緒に組み込むスタイルで組み込む事によって
【ドライバ組み込み】と【ユーティリティ組み込み】が一緒に行なわれます。
ビデオカードの場合も、Win98が自動認識・自動組み込みする場合は別として、
多くは "Setup.exeによって【ユーティリティ組み込み】が一緒に行なわれます。
※ビデオカードの場合は readme.txtを読んで 何本かのドライバを正確に把握していれば
INFファイルを改造して用意しておいて 下記【あ・い】の操作が出来ます。
しかし、そこまでやる必要はありません。
何故なら、
ビデオカードの場合は 【田中式】でも【Winセットアップ】でも 多くは VGAカードとして認識され、
後から "再認識" される形で充分だからです。
ビデオカードは【映像信号が 一方通行】で、windows(PC)に対して "逆の割り込み" をしません。
つまり、ビデオカードのIRQは "形式上必要なだけのIRQ" である事が多いのです。
特殊なカードでない限り IRQを共有できます。
【"再認識" される形で充分か否か】の話と【IRQ】の話は 別ですが、
OSの安定動作という面では(ドライバ動作との兼ね合いもあり)「関連している」と判断するのが
【田中式処置】であり、「関連していない」と判断するのが世間一般とOSの建前です。
どちらが正しいかは 【田中式処置】を行なってみれば判明します。
※ネットワークカード・ビデオカード等の場合、
INFファイルの内容をきちんと解析すれば 下記【あ・い】の操作が出来るか否か 判別できるのですが、
その判別方法については 説明が難しくなるので ここでは触れません。
◇デバイスが自動認識されない原因は Win98が "情報ファイル(xxxxxxxx.infファイル)" を持っていない
からです。
従って、【あ・い】の事前操作によって Win98に情報を持たせておけば良い事になります。
マザーボードに添付されている【INFアップデートユーティリティ】も その存在意味は 基本的に同じです。
ただし、
マザーボード上のデバイスに関しては 数も種類も多く複雑なので、
添付のユーティリティの方法に 全面的に従う方が良いでしょう。
--------------------------------------------------------
--------------------------------------------------------
■■【あ. の方法】--- 概 要
---------------
この方法は、一言で表現すれば 【田中式】のためにのみ存在する方法です。
【フロッピーからインストール】を行なった後であると仮定すれば、
フロッピーの adpu160m.inf を そのままの名前で C:\WINDOWS\INF の直下にコピーするのです。
即ち、
デバイスマネージャの操作で【フロッピーからインストール】を行なった時に
ドライバは 既に "所定の場所" にコピー済みであり、
後の【田中式】でデバイス検出された時に行なわれるべき "設定処理" は adpu160m.inf に記述されていますから、
ドライバについては 何も考える必要はありません。
つまり、
【該当デバイスの情報ファイル(INFファイル)が、C:\WINDOWS\INF\OTHER の中のどのINFファイルであるか?】を
特定して、
それと同じ内容のINFファイルを フロッピーから探して特定します。
(答えは adpu160m.inf)
・この INFファイルを【"半角8文字.inf"】のママの名前で C:\WINDOWS\INFフォルダにコピーします。
・"同名の 〜〜.catファイル" は C:\WINDOWS\INF\CATALOGフォルダにコピーします。
詳しい具体的な手順は 後述の【あ. の具体的手順】で。
--------------------------------------------------------
--------------------------------------------------------
■■【い. の方法】--- 概 要
---------------
この方法は、第1段階と第2段階に分かれます。
≪第1段階≫
【あ. の方法】の "概要" と "具体的手順" の説明に準じて、フロッピーの xxxxxxxx.INF を特定して下さい。
(答えは adpu160m.inf)
これを "半角8文字.inf" の名前のままで 適当な作業フォルダにコピーしておきます。
フロッピーの同じフォルダに "同名の 〜〜.catファイル" があったら、これも 適当な作業フォルダにコピーしておきます。
≪第2段階≫
INFファイルの内容を把握して、
次に 【該当デバイスの"ドライバ名"】を 特定します。
そして、【"デバイス組み込み時"に ドライバが何処にコピーされるか?】を把握して
そのドライバが "所定の場所" に存在しないなら 事前にコピーおきます。
※【19160_Ultra160】は Win98が自動認識・自動設定しませんが、
デバイス検出された時に行なわれるべき "設定処理" は adpu160m.inf に記述されていますから、
これを "所定の場所" に 事前にコピーしておけば 何も考える必要はありません。
※この方法は Win98セットアップ時にも応用できます。
(情報ファイルもドライバも 事前に自分でコピーしておきます。)
◇≪Win98セットアップ時の応用≫
HDD(C:)をフォーマットしたら、
Win98セットアップの前に Cドライブに次のようなツリー構造を構築します。
C:\
└─WINDOWS
│
├─INF \ xxxxxxxx.INF
│ │
│ └─ \ CATALOG \ xxxxxxxx.cat
│
└─SYSTEM
│
└─IOSUBSYS \ ドライバ (← "ドライバの所定位置"=IOSUBSYS である場合)
HDDに まだWindowsが存在していない状態での "フォルダ作成" の方法は 次の手順で行ないます。
慣れない内は 下記のコマンド入力で間違えやすいので、
実際の作業では 後述の【ツリー構造ごと1発でコピーするDosコマンド】で行なった方が簡単です。
(ここでは 理屈だけ理解して下さい。)
C:
cd \
mkdir WINDOWS
cd WINDOWS
mkdir INF
mkdir SYSTEM
cd SYSTEM
mkdir IOSUBSYS
※この後は ドライバ・INFファイル等を "所定のフォルダ" にコピーします。
copy A:\WINDOWS\INF\*.* C:\WINDOWS\INF
copy A:\WINDOWS\SYSTEM\IOSUBSYS\*.* C:\WINDOWS\SYSTEM\IOSUBSYS
もし、他にコピーすべきファイルが SYSTEM直下 や INF\CATALOGフォルダにもあれば
copy A:\WINDOWS\SYSTEM\*.* C:\WINDOWS\SYSTEM
copy A:\WINDOWS\INF\CATALOG\*.* C:\WINDOWS\INF\CATALOG
も 実行します。
※全て「半角英数」で入力して下さい↑。
起動Dosで入力する時は「大文字・小文字」は関係ありません。
(つまり、「mkdir IOSUBSYS」と入力しても「MKDIR iosubsys」と入力しても
起動Dosでは 結果は同じ。)
次に、IOSUBSYSフォルダに adpu160m.mpd(ドライバ)をコピーし、
INFフォルダに adpu160m.inf をコピーします。(FD・MOメディアから Cドライブへ。)
※後は Win98セットアップを行なうだけですが、
セットアップする時の"Windowsフォルダ" を 別の名前で指定する場合は
【セットアップ前のWinフォルダの手作業作成】の時も それ↑と同じ名前のフォルダにします。
そうしないと 「後で見たら 自動認識されていなかった」という結果となります。
※デバイスによっては ドライバのコピー先は IOSUBSYSフォルダとは限りません。
SYSTEMフォルダであったり、IOSUBSYS と SYSTEM の両方であったりします。
INFファイルに "ドライバのコピー先指定" が書かれています。
--------------------------------------------------------
--------------------------------------------------------
■■【あ. の方法】--- 具体的手順
---------------
手順をもういちど要約します。
1.
【該当デバイスの情報ファイル(INFファイル)が、C:\WINDOWS\INF\OTHER の中のどのINFファイルであるか?】を
突き止めます。
2.
このINFファイルと全く同じ内容のINFファイルを デバイス添付のフロッピーから捜します。
(答えは adpu160m.inf)
フロッピーで INFファイルを見つけた時に
フロッピーの同じフォルダに "infファイルと同名の 〜〜.catファイル" が存在したら、
これも 適当な作業フォルダにコピーしておきます。
・この INFファイルを【"半角8文字.inf"】のママの名前で C:\WINDOWS\INFフォルダにコピーします。
・"同名の 〜〜.catファイル" は C:\WINDOWS\INF\CATALOGフォルダにコピーします。
※これ↓は 「可能性としてあり得る」という話で、実際には まず無いことですが、
フロッピーの同じフォルダに "同名の 〜〜.catファイル" が存在せず、
"別の名前のcatファイル"(例えば yyyyyyyy.cat)が フロッピーの同じフォルダに存在すると仮定します。
その場合は、該当のinfファイルの中身を閲覧して下さい。
infファイルの先頭に近い部分に [Version] という行があります。
この直ぐ下あたりに CatalogFile=yyyyyyyy.cat という記述が 存在するかどうかです。
・記述が存在する場合は この yyyyyyyy.cat は "ペア" となるcatファイルです(コピー対象)。
・記述が存在しない場合は ここでの「可能性〜〜」の話は無視して下さい。
・記述は存在するけれど infファイルとは別名指定(例:CatalogFile=zzzzzzzz.cat)であり
その zzzzzzzz.cat は フロッピーのどこにも見つからない場合---ここでの「可能性〜〜」の話は無視して下さい。
※CATALOGフォルダが無かったら作って下さい。("属性設定" は不要。)
"同名の 〜〜.catファイル" が 既にCATALOGフォルダに存在しているなら、上書きする必要はありません。
※↓これは 「可能性としてあり得る」という話で、実際には まず無いことですが、
フロッピーの同じフォルダに "同名の 〜〜.catファイル" が存在せず、
"別の名前のcatファイル"(例えば yyyyyyyy.cat)が フロッピーの同じフォルダに存在すると仮定します。
その場合は、該当のinfファイルの中身を閲覧して下さい。
infファイルの先頭に近い部分に [Version] という行があります。
この直ぐ下あたりに CatalogFile=yyyyyyyy.cat という記述が 存在するかどうかです。
・記述が存在する場合は この yyyyyyyy.cat は "ペア" となるcatファイルです(コピー対象)。
・記述が存在しない場合は ここでの「可能性〜〜」の話は無視して下さい。
・記述は存在するけれど infファイルとは別名指定(例:CatalogFile=zzzzzzzz.cat)であり
その zzzzzzzz.cat は フロッピーのどこにも見つからない場合---ここでの「可能性〜〜」の話は無視して下さい。
※CATALOGフォルダが無かったら作って下さい。("属性設定" は不要。)
"同名の 〜〜.catファイル" が 既にCATALOGフォルダに存在しているなら、上書きする必要はありません。
※SCSIカード等を "FDからインストール" した場合は
C:\windows\INF\OTHER に【長い名前の INFファイル】が存在し、
それを示す情報として
レジストリの HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\デバイスカテゴリkey\000x
に 【InfPath】=【ADAPTE~1.INF】 という情報が格納されていますが、
コピーするのは 【ADAPTE~1.INF】ではありません。
中身が【ADAPTE~1.INF】と同じ内容のINFファイルが フロッピーに入っています(adpu160m.inf)。
("FDからインストール" を行なった時のFDの該当フォルダ)
これを C:\windows\INFディレクトリ直下にコピーします。
◇SCSIカード等を "FDからインストール" した場合は、
本当は 【田中式処置】の作業途中(デバイスマネージャでの削除作業の直後)のタイミングで
手作業で行なって欲しい事があります。↓ (無理にとは言いませんが。)
1. ↓
コントロールパネルなど一切のツールを閉じて レジストリエディタを起動します。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup\SetupX\INF\OEM Name
と 辿って、キーを開いて行きます。
(レジストリエディタの操作方法は 後述を参照。)
左ウィンドゥの【OEM Name】というキーを左クリックすると、
右ウィンドゥの "名前" の欄に【C:\windows\INF\OTHER\AdaptecADPU160M.INF】 という風の
項目があります。
【↑この項目で示される AdaptecADPU160M.INF】=【「現在の話題の中心」となっているINFファイル】
であるならば、
(即ち これから自動認識させようとするデバイスを"FDからインストール" した時の【xxxxxx~1.INF】であるならば。)
レジストリエディタで、
右ウィンドゥの "名前" の欄の【C:\windows\INF\OTHER\AdaptecADPU160M.INF】 という項目を削除して欲しいのです。
※右ウィンドゥで、"データ" ではなく "名前"の欄の項目を左クリック選択して Deleteキー を押す。
操作に自信が無ければ 無理に行なわなくても結構です。
2.上記1.を行なったら、
【C:\windows\INF\OTHER】にある AdaptecADPU160M.INF も削除して下さい。
さて、上記のINFファイルを どうやって特定するかを説明します。
---------------
◇この後 レジストリエディタを起動しますので、
万一 間違った操作をした時に備えて ScanRegW.exe を実行して まず "レジストリ保存" を行なって下さい。
◇デバイスの【Windowsでの認識名】を デバイスマネージャで把握します。
◇【システム情報】を起動して、該当デバイスのカテゴリkeyを選択して 右ウィンドゥをクリックします。
メニューから「編集⇒すべて選択⇒編集⇒コピー」の手順の後
情報テキストを メモ帳に貼りつけます。
※システム情報 = "C:\Program Files\Common Files\Microsoft Shared\MSINFO\MSINFO32.EXE"
【システム情報】には 小さなバグがあります。
対策として、デバイスを交換・削除した後では、
【システム情報】を起動する前に WINDOWSフォルダの HwInfo.dat を削除して下さい。
HwInfo.dat は【システム情報】を起動する度に生成されますが、
以前の情報(システム情報自身の解析データ)に追加する形で HwInfo.dat が生成されるのです。
例えば、特定のデバイスを取り外した後で【システム情報】を起動すると、
既に存在しないデバイスなのに 相変わらず存在するデバイスとして表示されます。
この中に、例えば 【19160 Ultra160 PCI SCSI Controller】という【Windowsでの認識名】としてのデバイス名
が書かれています。
この文字列(デバイス名)を「選択⇒コピー」します。
◇レジストリエディタを起動します。
左ウィンドゥで HKEY_LOCAL_MACHINE\Enumキーをクリックします。
「編集⇒検索」で "検索する値" の入力欄を右クリックして 上記のデバイス名を入力(貼り付け)します。
「次を検索」ボタンを押します。
PCIデバイスなら HKEY_LOCAL_MACHINE\Enum\PCIキーの配下に見つかるハズです。
※【Enum】は 【Enumeration(列挙・・デバイス列挙)】の略です。
※IE5.5SP2 にアップデート後、何か(システム情報?)を実行すると
HKEY_LOCAL_MACHINEの配下に HwDiagというキーが生成されます。
(【HwDiag】=【HardwareDiagnostic(ハードウェア診断)】の略であると思われます。)
この HKEY_LOCAL_MACHINE\HwDiagキーの配下にもEnumキーがありますが、ここでは考えないで下さい。
【19160 Ultra160 PCI SCSI Controller】の場合なら、
HKEY_LOCAL_MACHINE\Enum\PCI\VEN_9005&DEV_0081&SUBSYS_62A19005&REV_02\50F000
というキーの中(右ウィンドゥ)に表示されています。
この右ウィンドゥで これから 必要な情報を「コピー」して メモ帳に「貼り付け」ます。
必要な情報の【名前】と【データ】をペアで メモ帳に「貼り付け」ます。
【Class】という名前(以下 "値の名前"と呼ぶ)を ダブルクリックして下さい。
[文字列の編集] という対話ボックスが出現します。
ここでは、絶対に 設定値を変更しないで下さい。対話ボックスを閉じる時は 必ず [キャンセル]ボタンを押して下さい。
うっかり 入力欄の値を変更している事に気付かずに OKボタンを押すと大事件です。
[キャンセル]ボタンよりも [ESCキー]を押す方が確実です。
さて、
[文字列の編集] ボックスで、
【Class】という文字列と【SCSIAdapter】という文字列をコピーして、ペアにして メモ帳に「貼り付け」ます。
※つまり、"値の名前" と ""値のデータ" を ペアにして
【Class】=【SCSIAdapter】という感じで メモ帳に「貼り付け」ます。
※【Class】とは【DeviceClass】の略です。
Classという表現は 理解しにくいでしょうが、同じ意味で【DeviceCategory】という表現も使われています。
つまり、"分類" という風に捉えて下さい。
Windowsでは
「デバイスの分類」を "設定データ・ドライバの動作"と組み合わせて「階層構造」として構築しており、
ドライバの動作には "優先順位" が設定されています。
【Class】という言葉の意味合いがある程度は感じ取れるのではないでしょうか・・。
[文字列の編集] ボックスを閉じます。
【DeviceDesc】という値の名前を ダブルクリックして下さい。
【DeviceDesc】という文字列と
その値である【19160 Ultra160 PCI SCSI Controller】という文字列も ペアにして メモ帳に「貼り付け」ます。
※SCSI Controller の名前が SCSIカードの種類によって異なります。
※【DeviceDesc】とは【DeviceDescription(デバイス記述、デバイス認識名)】の略です。
[文字列の編集] ボックスを閉じます。
【Driver】という値の名前を ダブルクリックして下さい。
【Driver】という文字列と
その値である【SCSIAdapter\0000】という文字列も ペアにして メモ帳に「貼り付け」ます。
※0000 という番号は 0001であったり、0002であったりします。
※ここでの【Driver】とは ドライバ名ではなく、
ドライバ名・ドライバ動作などについて "指示されている場所" を指し示しています。
※Windowsの内部動作では
色んな面で "ワンクッション余分なステップ" を経由するスタイルになっています。
こうしておくと都合が良い事が多いのです。
例えば、「デバイスの代替動作」・「ドライバの変更」・「ドライバの優先順位」など・・。
[文字列の編集] ボックスを閉じます。
---------------
これで、3セットの情報が揃います。↓
【Class】 =【SCSIAdapter】
【DeviceDesc】=【19160 Ultra160 PCI SCSI Controller】
【Driver】 =【SCSIAdapter\0000】
◇レジストリエディタをいったん閉じてから再度起動します。
HKEY_LOCAL_MACHINE ⇒ System と順に辿っていきながら、
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servicesキーを開いて下さい。
この配下に【Class】というキーが見えます。
Classキーを開いて 下の方をず〜っと見ていくと【SCSIAdapter】というキーが見えます。
(HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\SCSIAdapter)
【Class】=【SCSIAdapter】というのは 実は ここを指し示しています。 ↑
SCSIAdapterキーの配下に【0000】とか【0001】等のキーが見えます。
(HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\SCSIAdapter\0000)
【Driver】=【SCSIAdapter\0000】というのは、 ↑ここの【0000キー配下】を指し示しています。
※Servicesというキーの名前は「ドライバサービス」という意味合いです。
そして、この配下には
どういう「ドライバ動作」を提供するか・・という意味で デバイス種別ごとのキーに分類されています。
だから、
【Driver】=【SCSIAdapter\0000】という記述の意味は ↓次のように考えて下さい。
「このデバイスの動作は、
ドライバサービスの【SCSIAdapter\0000】に記述されている動作をします。」
※0000とか0001等のキー番号は 設定順にWindowsが自動的に決めます。
※"設定変更などで再検出"あるいは "SCSIカード交換" 等をしていなければ、
1枚のSCSIカードの場合は【0000キー】だけが存在するハズです。
マウス・キーボード等では"再検出・交換"をしていなくても【0000】と【0001】の
2つのキーが存在する場合があります。
これは通常は削除しないで下さい。
【ゴミ】である場合もありますが、【必要な幽霊デバイス】である場合もあります。
SCSIAdapter\0000キーを左クリックして 右ウィンドゥを見ると、
該当するSCSIカードの "動作情報・設定情報" が記述されています。
※実は HKEY_CURRENT_CONFIG\Enum や HKEY_DYN_DATA\Config Manager\Enum にも
"動作情報・設定情報" が格納されていますが、
「情報の意味合い」が全く違うので、ここでは触れません。
さて、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\SCSIAdapter\0000
の右ウィンドゥの情報を説明します。
【DevLoader】=【*IOS】
【DontLoadIfConflict】=【Y】
【DriverDesc】=【19160 Ultra160 PCI SCSI Controller】
【InfPath】=【ADAPTE~1.INF】
【InfSection】=【ADPU160M】
【PortDriver】=【adpu160m.mpd】
ここで重要なのは 【InfPath】、【InfSection】、【PortDriver】の3つです。
・【PortDriver】=【adpu160m.mpd】とは 次の意味です。
「"ミニポートドライバとして使用するドライバ" は 【adpu160m.mpd】です」
※ミニポートドライバ :
特定デバイスに合わせてWinの規約に沿って作成された【デバイス固有の動作を受け持つドライバ】
・【InfPath】=【ADAPTE~1.INF】とは 次の意味です。
「"このデバイス動作の情報元(InfPath)" は 【ADAPTE~1.INF】です。」
※「Path」は "経路" の意味ですが、
Windowsが 情報ファイル(INFファイル)を探す時の"経路" という感じで受けとめて下さい。
・【InfSection】=【ADPU160M】とは 次の意味です。
「"このデバイス動作の設定" は 指定されたINFファイルの【ADPU160Mセクション】の指示によります。」
・【DevLoader】は、ここでは単純に 次の意味のように解釈して下さい。
「ドライバとしての基本動作」と「拡張動作ドライバへの引継ぎ」を処理するドライバ
・【*IOS】とは 次の意味です。
Vmm32.vxd の中に含まれる "InputOutput担当の汎用ドライバ"(IOS.vxd)
※IOS.vxd がドライバ動作の一翼を担っている事は、
デバイスマネージャの「ドライバファイルの詳細」で確認する事ができます。
※Vmm32.vxd に包含されるドライバについては 自動処理されるので
ここでは考える必要はありません。
※Vmm32.vxd 自体の内容は "PCのデバイス構成" によって変化しますし、
マシンによって異なる場合も多いです。
※「*」という文字が "キーワード" です。
「*」が頭に付いている時は「Vmm32.vxdが包含する汎用ドライバです」という意味です。
※マウス等では 【PortDriver】=【adpu160m.mpd】に該当する設定が存在しない場合も
多いのです。
この場合は そのマウスは「汎用ドライバだけで動作する」という事になります。
<参考>:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Mouse
の配下の 0000 や 0001キーの【DevLoader】の値を見て下さい。
私のPCでは *vmouse と書かれています(Vmm32.vxd 内の vmouse.vxd)。
・【DontLoadIfConflict】とは 次の意味です。
「【ここで指定されているドライバ(adpu160m.mpd)と共存できない同種のドライバ】が
先にロード・動作していた場合は adpu160m.mpd のロードを停止しますか?」
【Y】とは 次の意味です。
「はい、そうです(Yes)」
※DontLoadIfConflict は、「If xxxxx Conflict with yyyyy, then Don't Load xxxxx.」
という風に読み替えて下さい。
・【DriverDesc】については、前途の【DeviceDesc】と似ていて頭がおかしくなりそうですが、
ここでは深く考えずに読み飛ばして下さい.
-------------------------------------------
という訳で、
【Class】 =【SCSIAdapter】
【DeviceDesc】=【19160 Ultra160 PCI SCSI Controller】
【InfPath】=【ADAPTE~1.INF】
【InfSection】=【ADPU160M】
【PortDriver】=【adpu160m.mpd】
↑これら 5つの情報が ここで関知すべき重要な情報です。
ところが、
【フロッピーからインストール】する形態で組み込んだデバイスの場合は、
【InfPath】に設定された値(INFファイル名)が【長い名前】になっている事が多いです。
さらに ドライバの読み込みのタイミング(時期)が早いデバイスの場合では
Winが【長い名前】を認識できるようになってからでは間に合わないという理由からか、
【InfPath】の値が ADAPTE~1.INF という形の名前(エイリアス名)で記述されています。
エクスプローラで見ても ADAPTE~1.INF という名前のファイルは見つかりません。
その場合は、Dosプロンプトを起動して 次のコマンドを実行して見つけて下さい。
dir /a C:\WINDOWS\INF\ADAPTE~1.INF /s
この↑コマンドラインを実行すると、
ディレクトリは C:\WINDOWS\INF\OTHER
ADAPTE~1 INF 2,606 00-06-20 16:06 AdaptecADPU160M.INF
と
表示されます。
Dosプロンプトの【プロパティ】で、一時的に【範囲指定に使う(簡易編集モード)】=ON
に設定すれば
【AdaptecADPU160M.INF】等の "Dosプロンプトの画面表示" を「選択・コピー」できます。
さて、エクスプローラでは 【AdaptecADPU160M.INF】というファイル名を見ることが出来ます。
※ビデオカードのドライバは、
ここでは 単に「レジストリが認識するINFファイル」と同一実体の「長い名前のINFファイル」の
長い名前を特定するための【例】として書いただけです。
おそらく、Adaptecの「Ultra160 SCSIカード」であれば、
【AdaptecADPU160M.INF】・・ な〜んていう感じの名前で組み込まれているでしょう。
(【フロッピーからインストール】した場合)
この場合の レジストリでの【InfPath】の値は ADAPTE~1.INF とか ADAPTE~2.INF となっているでしょう.
(レジストリの 【InfPath】=【xxxxxxxx.INF】)
・これと 全く同じ内容のINFファイルを デバイス添付のフロッピーから捜せば良いのです。
◆// ここまでで、
【InfPath】=【xxxxxxxx.INF】という形で Windowsに自動認識させるINFファイルを特定できました。
この、フロッピーの xxxxxxxx.INF を そのままの名前で C:\WINDOWS\INF の直下にコピーするのです。
("半角8文字.inf" の名前のままで。)
後は 【田中式】を実行すれば 勝手に自動組み込みされます。
ここまでが、【あ. の方法】の具体的な手順です。
※フロッピーの xxxxxxxx.INF は MOやフロッピー等にコピーして保管しておけば
【い. の方法】で Winセットアップで自動認識させたい時に重宝します。
(起動Dosでコピーできます)
--------------------------------------------------------
--------------------------------------------------------
■【参 考】: 長いファイル名 と 短いファイル名
※ADAPTE~1.INF という形での「半角の 8文字以下.3文字 形式」のファイル名を【エイリアス名】といいます。
(8.3ネーミング と表現したりもします。)
「ファイル名.拡張子」が 「半角の 8文字以下.3文字」ではない場合に、
Windows9x以降のMS社OSでは そのファイル名を【長い名前】として認識され、
その【長いファイル名】は【長い名前 専用】のディスク領域に記録されます。
起動Dosでは 【長い名前】も【長い名前のディスク領域】も認識されないので、
互換性のために
"従来の 名前用のディスク領域" には ADAPTE~1.INF という形でのファイル名が
自動的に記録されます。
エクスプローラで 【長い名前】のファイルやフォルダ(ディレクトリ)を閲覧しても xxxxxx~1.yyy という名前は
表示されませんが、
右クリックして "プロパティ" を選択すると【MS-DOSファイル名】として 表示されます。
"名前用のディスク領域" には、ファイル本体の格納場所 や サイズ等の情報 が 一緒に格納
されています。
この領域は 1ファイル当たり32バイトで構成され、ディレクトリエントリと呼ばれます。
※これらを総括して管理するのが FAT と呼ばれる領域で、
FATは【ホテルの宿泊台帳】のような物だと思って下さい(File-Allocation-Table)。
この情報ブロック(ディレクトリエントリ)には 【長い名前】を格納するだけの余裕がありません。
Windows9x・WinMe・Win2000 のGUIでも、
【長い名前】は ディスクアクセスでは ほとんど参照されていません。
(というか、"FAT32ファイルシステム" は そのように設計されていません。)
ディスクアクセスに参照されるのは【MS-DOSファイル名】です。
【長い名前】は、それを表示したり 長い名前をキーワードとして検索する場合だけに使われます。
【鶏と卵】の話ではありませんが、
主にディスクアクセスを担当する【入出力デバイス(InputOutput Device)】のドライバ
のドライバ名が もし、レジストリの中で【長い名前】で記述されていたら どうなるでしょうか?
【長いファイル名 で指定されているファイル】を "ドライバ" としてロードするには、
まず "ファイルの本体を読む" 事が必要です。
「その "本体" が存在する領域が どこにあるか」の情報は【情報ブロック】に格納されています。
ところが、【情報ブロック】には【長い名前】は格納されていません。
つまり、そのドライバは「読み込めない」という状態になります。
「SCSI接続のHDDの読み書き」は SCSIカードのドライバが担当していますから、
もし、"SCSIカードのドライバ" が【長い名前】でレジストリに指定されていて、
かつ 私のように「起動ドライブ=SCSI接続」の場合は、
SCSI-HDDから【長い名前のドライバ】を読めないので Win起動のための大事なドライバを読めない事になります。
※Windowsが【長い名前】を認識するのは GUI起動を果してからですが、
該当ドライバをロードすべきタイミングが その↑瞬間よりも後であれば 大丈夫でしょうけど・・・。
(多分 "長い名前を認識する前" でしょう。調べていません。)
という訳で、
【IOSUBSYSフォルダに置かれるドライバ】と【その情報ファイル】のファイル名は「半角の 8文字以下.3文字」
となっています。
※IOSUBSYS・・・InputOutput SubSystem という意味の命名でしょう。
◇ディスプレィドライバも 「表示されないと大変」ですから これ↑に準じているのでしょう。
この事と 直接 どの程度関係があるのか 調べていませんが、
(例:私のディスプレィドライバ。・・NVIDIAでも同様。)
C:\WINDOWS\INF\OTHER の「ATI Tech. - EnhancedATII9XAA.INF」と全く同じ内容の INFファイルが
C:\WINDOWS\SYSTEM フォルダにも作成されています。名前は ATII9XAA.INF です。
更新日時も完全に一致しています。(1999年6月18日 10:25:38)
ADAPTE~1.INF という形でのファイル名の【命名機能】は エクスプローラが担当します。
基本的には 作成・コピーの順番に ADAPTE~1.INF、ADAPTE~2.INF という風に自動生成されます。
(実際には ちょっとクセがありますが。)
ADAPTE~9.INF の次は ADAPT~10.INF の形で「5文字~2桁数字.拡張子」になります。
--------------------------------------------------------
--------------------------------------------------------
■■【い. の方法】--- 具体的手順 (CATファイルに関しては テキストの最後に 別記)
---------------
≪第1段階≫
【あ. の方法】の "概要" と "具体的手順" の説明に準じて、フロッピーの xxxxxxxx.INF を特定して下さい。
これを "半角8文字.inf" の名前のままで 適当な作業フォルダにコピーしておきます。
フロッピーの同じフォルダに "同名の 〜〜.catファイル" があったら、これも 適当な作業フォルダにコピーしておきます。
≪第2段階≫
INFファイルの内容を把握して、
次に 【該当デバイスの"ドライバ名"】を 特定します。
そして、【"デバイス組み込み時"に ドライバが何処にコピーされるか?】を 特定します。
(特定方法は 後述)
これが特定できてしまえば 「【い. の方法】--- 概 要」の説明に準じて
MOかフロッピーに 下記のようなツリー構造を構築し、
【8.3ネーミングの xxxxxxxx.INF】と【ドライバファイル】を MOやFDにコピー保管します。
※"ドライバやINFファイル等の存在" に該当する部分だけ 実際のWindowsと同じ"ツリー構造"を
MOやFDに作成し、ここに ファイルをコピーします。
"コピー先としてのフォルダ" としての【所定のフォルダ】の特定方法は 簡単です。(後述)
MOかフロッピーに 下図のツリー構造を作成して ファイルを配置します。
H:\
└─WINDOWS
│
├─INF \ xxxxxxxx.INF
│ │
│ └─ \ CATALOG \ xxxxxxxx.cat
│
└─SYSTEM
│
└─IOSUBSYS \ ドライバ (← "ドライバの所定位置"=IOSUBSYS である場合)
※Winセットアップ前に フォーマットしたHDD(C:)に 起動Dosで 丸ごとコピーして
セットアップを実行します。
※INFフォルダは「隠し属性」ですが、Winインストーラが勝手に設定してくれます。
-------------------------------------------
■【ドライバの "コピー先としてのフォルダ"】としての【所定のフォルダ】の特定方法
(↓A・Bの2通りのスタイルがあります)
【スタイルA】.横着して 簡単に調べる方法
【スタイルB】.INFファイルの内容を読んで、調べる方法
------------------------------
●【スタイルA】-- 詳 細 (横着して 【ドライバのコピー先】を簡単に調べる方法)
【あ. の方法】の具体的手順 のところで取得したデータを 流用できます。
【PortDriver】=【adpu160m.mpd】
というデータを "レジストリエディタ閲覧" で取得しました。(【あ】の説明手順)
つまり、ドライバ は adpu160m.mpd なのです。
エクスプローラを起動して、
いま動作しているWindowsフォルダを右クリックして 検索すれば その存在場所が判明します。
検索ファイル名は 先の adpu160m.mpd です。
で、検索して見つかったフォルダが 【"ドライバのコピー先"フォルダ】です。
※検索して見つかったフォルダが 万一 SYSTEM32フォルダ であるならば、
上記のツリー構造に SYSTEM32フォルダ を追加します。
(SCSIカードでは そんな事は無いハズ・・。)
【19160_Ultra160】のドライバは この1本です。
(他のデバイスで、もし 先のレジストリ閲覧で2本記述されていれば コピーするドライバは2本です。)
------------------------------
●【スタイルB】-- 詳 細 (INFファイルの内容を読んで、【ドライバのコピー先】を調べる方法)
INFファイルの記述内容を読んで 【ドライバ名】と【ドライバの "コピー先フォルダ"】を特定します。
※INFファイルには ドライバ名も記述されているので、
その気になれば DosでINFファイルを読んで特定し、【事前コピー → Winセットアップ】を
行なう事も出来ます。
【19160_Ultra160】組み込みに使用されたINFファイルの名前は adpu160m.inf です。
INFファイルを 作業フォルダに一旦コピーして メモ帳で見てみます。(うっかり「編集→上書き」した時の用心)
※初期設定では 【右クリック→開く】は メモ帳でオープンされるはずです。
(心配なら 空のメモ帳を開いて、メモ帳のメニューから INFファイルを開きましょう。)
※エディタがあればエディタで開く方が良いです。
メモ帳ですと【文字列検索】を行なった時に30文字程度しか認識しませんから・・・。
【編集しないのだ!】という事を前提にすれば ワードパッドでもOKです。
・ワードパッドを使う場合は INFファイルを開く前にワードパッドの設定を変更して下さい。
書体は MSゴシック。
「表示→オプション→テキストタブ」で 【折返し無し】、そして【書式バー・ルーラーの表示】は不要。
フォントサイズは小さめが良いです。
また、ワードパッドの場合 【文字列選択】をマウスで行なわずにキーボードで行なった方が無難です。
マウスで行なうと、手元が狂った時に 勝手に【文字列の前後置き換え】がされてしまう事があります。
【19160_Ultra160】の "Windowsが認識するデバイス名" は【19160 Ultra160 PCI SCSI Controller】
という名前です。
これは、そのように INFファイルに記述されている事が理由でそうなるだけです。
(INFファイルの特定箇所の記述を書き換えれば その名前で組み込まれます。)
先程、レジストリエディタで HKEY_LOCAL_MACHINE\Enum\PCIキーの配下を閲覧しました。
(【あ. の方法】の具体的手順)
あそこで 【DeviceDesc】=【DeviceDescription(デバイス記述、デバイス認識名)】の略 と説明しましたが、
あの【DeviceDesc】が "Windowsが認識するデバイス名" です。
さて、INFファイルの中を見ますと
[Version] とか [ClassInstall] とか、【半角の[] で囲まれた文字列】だけの行があります。
これを "セクション名" と言います。
Version の次の行から その次の【 [] で囲まれた文字列】の手前までを 【Versionセクション】と言います。
INFファイルの後方に [Strings] というセクション名があると思います。
イコール(=)によって 左辺(xxxxx)と右辺(yyyyy)が接続された行が沢山ありますネ。
このセクションに関する限り、左辺(xxxxx) は 【文字列を保有・伝達する"代理人"】と解釈して下さい。
(右辺は "保有・伝達される対象文字列" です。)
※文字列に関する設定を行なっているので セクション名が [Strings] となっています。
※【文字列を保有・伝達する"代理人"】を、コンピュータ用語で【変数】といいます。
厳密には、【変数】というモノには 文字列型・数値型・ポインタ型・レコード型・配列型など色々あり、
数値型の中にも "認識できる最大値" によって各種ありますが・・・。
余談ですが、私達は身近な所でも 無意識に 【配列】を使っています。
団地などは「3号棟--第4階段--3階--A室」・・という形で管理されてますでしょ。
これは【4時元配列】で表現されます。
さて、レジストリエディタで
HKEY_LOCAL_MACHINE\Enum\PCI\VEN_9005&DEV_0081&SUBSYS_62A19005&REV_02\50F000キー
("19160 Ultra160 PCI SCSI Controller" の場合)
をクリックして DeviceDesc の値は 【19160 Ultra160 PCI SCSI Controller】となっています。
この 19160 Ultra160 PCI SCSI Controller という文字列を「選択→コピー」します。
そして、
INFファイルの先頭から ↑この文字列を検索すると 【[Strings]セクション】の中に 文字列が見つかります。
※【左辺=右辺】という形式になっています(=は半角のイコール)
※ PCI\VEN_9005&DEV_0081.DeviceDesc="19160 Ultra160 PCI SCSI Controller" と記述されています。
次に、その行の "左辺" の文字列を「選択→コピー」します。
そして同様に
もう一度 INFファイルの先頭(!)から この文字列を検索します。
( \ という文字列も検索対象に含める。)
すると、【[Strings]セクション】以外のセクションで 文字列が見つかります。(この場合 [ADAPTEC]セクション)
※このセクションには、他のデバイスについても、
同じ形式の行が「デバイスリスト」として記述されています。
Win標準のINFファイルであれば 他メーカーのデバイスもサポートしますから、
このセクションの"セクション名"は メーカー名を表しています。
↑ この行が重要なのです。(コピーして メモ帳に貼りつけて下さい)
(%PCI\VEN_9005&DEV_0081.DeviceDesc%= ADPU160M,PCI\VEN_9005&DEV_0081)
※左辺の文字列は %PCI\VEN_9005&DEV_0081.DeviceDesc% となっています。
(PCI は "PCIデバイス" のPCIです)
(9005 と 0081 の数字は カードによって異なります)
↑ ここで 右辺の文字列に注目して下さい。
右辺は 1つ以上のカンマ(,)で 2つ以上のブロック に区切られているハズです。
(【19160 Ultra160 PCI SCSI Controller】では ADPU160M,PCI\VEN_9005&DEV_0081 となっています)
右辺の第2ブロックは【device-ID】です。(ID は 「IDカードの ID」の意味。identity。)
※もし、
カンマが追加されて 第3ブロック以降が存在する場合は それは 互換デバイスIDです。
この【device-ID】と同じ文字列が
HKEY_LOCAL_MACHINE\Enum\PCI\VEN_9005&DEV_0081&SUBSYS_62A19005&REV_02\50F000キーの
HardwareID項目の "値" の一部として設定されています。
(所属するキー自体の"キー名"にも この文字列が含まれています。)
※余談ですが、
この【device-ID】の文字列は PC起動時の画面情報にも含まれています。(最後に説明。)
右辺の第1ブロックは【インストールセクション名】です。
即ち、【"このデバイス固有の設定処理"の指示 が書かれているセクション】のセクション名を
指し示しています。
従って 【19160_Ultra160】を例に挙げれば、ADPU160M という文字列を「選択→コピー」して
この両側を 半角の[] で囲んだ文字列で INFファイルの先頭から 文字列検索すれば、
【"19160_Ultra160固有の設定処理"の指示 が書かれているセクション】が見つかります。
これを "インストールセクション" と言います。
※【19160_Ultra160】の場合は ↑そのセクションは【[ADPU160M] セクション】です。
【19160_Ultra160】のカードに適用される各セクションは 以下↓の通りです。
(//*--〜〜--*// から //*--〜〜--*// まで。)
//*----- 後述の 《解説》を先に読んで下さい ------------------------------------*//
下記のINFファイルの全てを解説する必要はありません。
説明の無い部分は 「ここでは 理解する必要無し」と考えて下さい。
※詳しく勉強したい人は、【インサイド Microsoft Windows98レジストリ】を読めば解説してあります。
(日経BPソフトプレス社 発行)
ただし、説明は無くても、「SCSIカード組込みに不要」という訳ではありません。
[Version]
signature="$Windows 95$" ; ←この行は 私は signature="$CHICAGO$" と修正して使っています。
; 「$Windows 95$」となっていると、【Winセットアップ自動進行CD】を作成する時などに
; 2回に1回くらい 誤動作する事があるからです。(詳しい説明は省略。)
; 『天下のA社が間違えるハズが無い』と考えるような 権威主義の人は、
; infinst.exeで 自動進行CDを作ってみれば納得します。
; infinst.exe は Win98セットアップCDに入っています。
Class=SCSIAdapter
Provider=%ADP%
; CatalogFile=ADPU160M.cat ; ← 行頭に「;(半角のセミコロン)」を置いて この行を無効化する。
; (CATファイルを参照させない。)
; CATファイルを使用しなくても 何の問題もなく自動組み込みされる。
; (むしろ、“拡張カード添付のCATファイル”は【自動組み込み】に邪魔な存在。)
; ← 行頭に ; があると、【注釈文】の扱いになります。
; 行の途中に ; があると、その右側が【注釈文】の扱いになります。
; (「行頭の空白」は駄目。)
; 「行頭の“字下げ”」も駄目ですが、便宜上 ここでは 字下げしています。
DriverVer=10/01/1999,3.3
;
;【[Version]セクション】に関しては、以降の説明を適用しないで下さい。
[ClassInstall]
Addreg=SCSIReg
[SCSIReg]
HKR,,,,%SCSIClassName%
HKR,,EnumPropPages,,"iosclass.dll,SCSIEnumPropPages"
HKR,,Icon,,-10
[adpu160m]
CopyFiles=@ADPU160M.MPD
AddReg=IOS,ADPU160M.Reg
UpdateInis=ASPI8u2Update
DelFiles=ASPIDEV
Reboot
[IOS]
HKR,,DevLoader,,*IOS
HKR,,DontLoadIfConflict,,"Y"
[ADPU160M.Reg]
HKR,,PortDriver,,ADPU160M.MPD
[ASPIDEV]
VASPID.VXD
[ASPI8u2Update]
%10%\ios.ini,SafeList,,"aspi8u2.sys ; Adaptec Ultra2 ASPI driver PMD exists"
[DestinationDirs]
ASPIDEV = 11 ; delete from SYSTEM dir if exists
DefaultDestDir = 12 ; IOSubsys directory
[ADAPTEC]
%PCI\VEN_9005&DEV_0081.DeviceDesc%= ADPU160M,PCI\VEN_9005&DEV_0081
[Strings]
Msft="Microsoft"
SCSIClassName="SCSI controllers"
ADP="Adaptec"
PCI\VEN_9005&DEV_0081.DeviceDesc="19160 Ultra160 PCI SCSI Controller"
(各々のセクション同士の "順番" は無視して下さい)
(INFファイルでは「行頭の空白」は駄目ですが、便宜上 ここでは"字下げ"しています)
//*----------------------------------------------------------------------------*//
◆≪ 解 説 (上記の抜粋INFファイルに関して)≫
(【イコール(=)によって 左辺(xxxxx)と右辺(yyyyy)が接続された行】だけに注目。)
◇「他のデバイスのための記述」など 説明が複雑化する部分は 省略してあります。
◇1行の中で、セミコロン(;)で始まる部分は 注釈です。config.sysの「rem文」と同類・・・
と考えて下さい。
◇【イコール(=)によって 左辺(xxxxx)と右辺(yyyyy)が接続された行】
に関する説明(↓)
1.
◆「=」の右辺が数字だけの場合・・・ディレクトリを指し示しています。
「ASPIDEV = 11」の 11」は Windowsの SYSTEMディレクトリ
「DefaultDestDir = 12」は Windowsの IOSUBSYSディレクトリ
(参考:WINDOWSディレクトリは 10 と決められています。)
2.
【[ADAPTEC]セクション】に関しては説明済みです。
【[Strings]セクション】内の記述は「変数の設定」を行なっているだけです。
(変数 =【文字列を保有・伝達する"代理人"】と説明しました。)
【[Version]セクション】は除外します。
上記3つのセクション以外のセクションに関して、
◆「=」の右辺が文字列の場合・・・セクション名を指し示しています。
※つまり、
・DelFiles=ASPIDEV という記述の意味は 次の通りです。
「"組み込み時の削除ファイル指定" は [ASPIDEV]セクションに記述してある。」
・CopyFiles=△△△ も同様(△△△は セクション名)ですが、
CopyFiles= の右辺が @ で始まる場合は 【"単一ファイルのコピー"のファイル名】を
指し示しています。
(CopyFiles=セクション名,@adpu160m.mpd という混合記述もあり。)
◇その他の説明
・[DestinationDirs] というセクション名について。
この DestinationDirsセクションの中では、
「セクション名 = 数字」と記述されていた場合は
↑このセクションの中での「ファイル削除・コピー指定」の目的地(dir)は
=で結んだ "数字" によって示されています。
※この↑数字を LDID と言います(Logical Disk IDs)。
・DefaultDestDir という言葉(予約語)の意味
これは 「Default Destination Directory」と考えて下さい。
つまり、「コピー先などの指定が無い場合の【目的地(初期設定ディレクトリ)】」。
・"保有・伝達される対象文字列" を 他のセクションで「受け取る」時は どうするのでしょうか?
変数を 半角の% で囲めば良いのです。
(【文字列を保有・伝達する"代理人"】を 半角の% で囲む。)
↓具体例の方が解りやすいでしょう。
[Strings]セクションの中で、Msft = "Microsoft" という記述があります。
ここでは 変数Msft に Microsoftという文字列を設定しています↑。
※Msftという茶碗に Microsoftという味噌汁を入れたと考えても良いでしょう。
で、その後 他の部屋で「味噌汁を食したい」時はどうするのでしょうか?
「 %Msft% = Msftという茶碗の中身 」と認識して要求すれば良いのです。
%Msft% と記述すれば Windowsが上記の「味噌汁」を渡してくれます。
[Version]セクションの中で、Provider=%Msft% という記述があります。
これは 「Provider は Microsoftです」という意味です。
※[Version]セクションが最後の方に記述されていますが、
INFファイルの処理時に Windowsが [Strings]セクションを認識して
自動的に執り行ってくれます。
■≪要 約≫ INFファイルを読んで【ドライバ名と そのコピー先】を特定する方法。
↓
1.デバイスの"Windows認識名"を特定(検索)する。(探す範囲は [Strings]セクション)
2."見つかった1行" で、【=の左辺】を「選択→コピー」する。
3.コピーした文字列を検索する(INFファイルの先頭から )。
%検索文字列%=セクション名,device-id という形式の行が見つかる。
4.このセクション名↑(文字列)をコピーする。
【この文字列の両側を 半角の[] で囲んだ文字列】で INFファイルの先頭から 文字列検索する。
【"デバイス固有の設定処理"の指示 が書かれているセクション】が見つかる。
5.このセクション↑に 【組み込み時にコピーされるファイル】が指定されている。
(あるいは、【「コピーファイルを記述したセクション」のセクション名】が指定されている。)
6.コピー先については、
【[DestinationDirs]セクション】の中の、
「セクション名 = 数字」 か 「DefaultDestDir = 数字」で決定される。
7.1〜6 の手順によって 【ドライバ名と そのコピー先ディレクトリ】が特定される。
8.Winセットアップ前(あるいは デバイス装着前)に ↑このディレクトリに 該当ドライバをコピーしておく。
(Winセットアップの場合は、Windowsディレクトリ と 上記ディレクトリは 予め作成。)
◆【ドライバのコピー先を調べる スタイルB の方法】の説明は ここまでです。
実際の作業としては、次の 9.も必要です。
9.該当の INFファイル(adpu160m.inf)を C:\windows\INFディレクトリにコピーする。
◆ポイント :
【田中式処置】の前に該当デバイスを組込み済みの場合は、
ドライバはコピーされているので 当該INFファイルをコピーするだけでOK。
レジストリの HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\デバイスカテゴリkey\000x に、
【InfPath】=INFファイル名 という形で 情報が格納されており、
該当の INFファイルの名前を確認できる。
(自動組込されたデバイスのINFファイルは C:\windows\INF に存在する。)
ただし、
SCSIカード等を "FDからインストール" した場合は 少し 状況が異なる ↓。
"FDからインストール" した場合は、C:\windows\INF\OTHER に【長い名前の INFファイル】が存在し、
それを示す情報として
レジストリの HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\デバイスカテゴリkey\000x に
【InfPath】=xxxxxx~1.INF という情報が格納されている。
レジストリの 情報の格納場所は 【自動組込み】させた場合と同じだが、
ファイル名が【xxxxxx~1.INF】の形式である点と INFファイルの格納先が【C:\windows\INF\OTHER】である点
が違う。
このままで、
【C:\windows\INF\OTHER に存在する INFファイル】を頼りに“自動組込”させても 駄目なのです。
Win98が デバイス検出する時、
情報の検索場所として C:\windows\INF は自動サーチしますが、C:\windows\INF\OTHER は自動サーチしません。
(つまり、後回しにされる。)
“自動組込”させる場合のINFファイルの、存在場所 = C:\windows\INFディレクトリ です。
INFファイルの名前も 【8.3形式】にします。
従って、コピーするのは 【xxxxxx~1.INF】ではありません。
中身が【xxxxxx~1.INF】と全く同じ内容のINFファイルが フロッピーに存在します(ファイル名は“8.3形式”)。
("FDからインストール" を行なった時のFDの該当フォルダ。)
これを C:\windows\INFディレクトリ直下にコピーします。
(あるいは、【xxxxxx~1.INF】を作業フォルダにコピー後に 【adpu160m.inf】に改名して
INFディレクトリにコピー してもOK。)
◆ポイント(その2):
上記のように INFファイルを C:\windows\INF にコピーした場合は、
田中式処置の完了後、C:\windows\INF\OTHER の 該当デバイスの【長い名前の INFファイル】は“ごみ”である。
田中式処置の完了後に確認して欲しい ↓。
レジストリの HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\デバイスカテゴリkey\000x に
格納されている【InfPath】のファイル名が、【xxxxxx~1.INF】という形式ではなく
【adpu160m.inf】という形の“8.3形式”になっているハズである。
【注意】:上記の 9.の説明は、
"FDからインストール" した時に あなたがFDのフォルダ指定を間違えていない 〜 と想定しての説明。
その後にWinセットアップを行う事によって、
Winセットアップの早い段階で、知らぬ内に【最善のタイミング】で "自動組み込み" される。
≪補 足≫
[SourceDisksNames] というセクションについては、
これを持つINFファイル と これを持たないINFファイルがあるが、ここでは気にしなくて良い。
このセクションでは、
Windowsが 「新しいデバイスが検出されました。××××ディスクをセットして下さい」との
メッセージを表示する時の 上記××××の文字列が指定されている。
Win標準のINFファイルの多くは [SourceDisksNames]セクションを持たない。
メーカー提供のINFファイルの多くは [SourceDisksNames]セクションを持っている。
≪参 考≫
INFファイルには この他にも 沢山の細かい約束事がありますが、【田中式処置】では あまり多用していません。
それら約束事の内、通常モードでは機能するのにセーフモードでは【機能してくれない】モノがあるので、
我慢してしまったのです。
=============================================
=============================================
■■■■【ドライバ・INF・Catファイルを "所定の場所" にコピーしてから検出させたのに、
自動検出で "別の型番" で認識されてしまうデバイス】についての対策
(例えば 私の使っている【REX PCI30】等のデバイス)
この原因は、
【REX PCI30】に関して SCSI.INF に "間違った情報" が書かれているからです。
※複数のINFファイルで "device-id"等の記述がダブっていた場合は
【Win98標準のINFファイル(例:SCSI.INF)】の記述が最優先されますから、
このような例外的なデバイスでは
Win98再セットアップ前に GUIで "infinst.exe" を実行すると良いでしょう。
接続されたデバイスが自動認識されない状態のままで【田中式】を実行しても、
"最適化"された再構築が成されるとは限りません。。
=======
◆【該当SCSIカードに関して SCSI.INF(あるいはSCSIJ.INF) に "間違った情報" が書かれているか否か】
の判定方法
新規にデバイスを取りつけて Win起動した時の【検出スタイル】で判断します。
≪A≫
Win98起動時の自動検出で "不明なデバイス" として認識される場合は
INFフォルダの中のINFファイルに情報が含まれていないだけです。
その場合は、本テキストのこれまでの説明に従って、
(例えばWinセットアップを睨んでの準備としては)
ドライバとINFファイルを 特定の場所 にコピーするだけです。
本テキストのこれまでの説明の他に 【Win98標準のINFファイル】に対して細工をする必要はありません。
≪B≫
Win98起動時の自動検出で 自動的に "別の型番のカード" として認識してしまう場合は
【Win98標準のINFファイル(SCSI.inf or SCSIJ.INF)】に "間違った情報" が書かれています。
この場合は、
本テキストのこれまでの説明に加えて
【Win98標準のINFファイル(SCSI.inf or SCSIJ.INF)】に対して 少し細工する必要があります。
即ち、
【Win98標準のINFファイル(SCSI.inf or SCSIJ.INF)】の中の記述の内、
"別の型番のカード" として誤認識された その"誤認識カード名"と情報を無効化する必要があります。
新規検出時に上記の A・B どちらであったか ハッキリと記憶していない場合は、
次の手順で いったん削除して 検出の挙動を確かめます。
最初に 用心のために、ScanregW.exe を実行しておきます。
1.デバイスマネージャで、 該当SCSIカードを削除する。
2.INF\OTHER を調べて、
該当デバイスを "フロッピーからインストール" で組込んだ時に作成された 【長い名前のINFファイル】
を削除する。(これは無理に削除しなくてもOK。)
3.再起動する。
この起動時の検出で 自動で(!) 勝手に 違うドライバが組み込まれるか?
(検出挙動確認)
※INF\OTHER の【長い名前のINFファイル】の内 どれであるかを特定する方法は、
レジストリエディタか【システム情報】を起動して デバイス名文字列を取得して INF\OTHERで検索する。
※システム情報 = "C:\Program Files\Common Files\Microsoft Shared\MSINFO\MSINFO32.EXE"
上記 3.の起動時に 自動で(!) 勝手に違うドライバがインストールされてしまう状況であるならば、
前途の≪B≫に該当します。
上記の3.で自動検出されるのではなく、
その後のハードウエアウイザードで ダア〜っと検出させた結果として
Win98が 『これですか?』--と確認してきたのであれば、
それは 非PnPデバイス検出の処理過程で 【似た型番】をサーチしただけで、
Win98の【自信の無い確認】と表現できる物です。
この場合は 前途の≪A≫に該当します。
◆上記1〜3の確認作業での 注意事項
起動ドライブ・スワップfileドライブ・temp設定ドライブ等が 該当SCSIカードに接続されている場合
は、
1の 【SCSIカード削除】は 必ず Safeモードで行なう必要があります。
また、Safeモードではなく 通常モードで削除する時、
SCSIのユーティリティが自動起動する設定にしてある場合は これをいったん無効にしておく
方が無難です。
※【システム設定ユーティリティ】(C:\WINDOWS\SYSTEM\MSCONFIG.EXE)の
スタートアップタブで簡単に設定変更できます。
※Safeモード起動した時だけは 勝手にOFFになります。
=======
◆【該当SCSIカードに関して SCSI.INF(あるいはSCSIJ.INF) に "間違った情報" が書かれている
場合の対策】
いちばん簡単な対策としては、(例:REX PCI30)
Win98のCDにある【infinst.exe】というツールを使って "インストールセット" を作成するのですが、
infinst.exeによって【改変版 scsi.inf】が自動作成されますので、
これを C:\windows\INF に上書きコピーします。
そして【REX PCI30】のドライバ・INFを "所定の場所" にコピーしてから 再起動すれば
自動検出・自動設定されます。
※"間違った情報" という言葉の意味は、ここでは厳密に考えないで下さい。
【REX PCI30】について ここで説明します。
【アメリカで販売されている 別のSCSIカード】が【REX PCI30】と同じ型番のコントロールチップを
使っている事が原因で "誤認識" が起きます。(アメリカ優先なんでしょうか・・)
組み込まれるべきドライバは 2つのカードで別物です。
通常は、【REX PCI30】を使っている人は 後で デバイスマネージャにて【FD使用で認識変更】を
行なっているハズですが、この方法ですと【FDからインストール】と同じであり、
【長い名前のINFファイル】が C:\windows\INF\OTHER に入ります。
開設当初のHPで「私はこのスタイルが嫌なので〜」と書いていたのは↑この事です。
で、当時から行なっていた方法が 【い. の方法】です。
※余談ですが、
SCSI.INF は Win98標準のINFファイルです。この 標準のINFファイル が優先されるのです。
メーカー提供の別のINFファイルが 「特定デバイス」について 特定の内容の "設定指示" をしていても、
"PnP検出"が行なわれた時には、
その 同一デバイスについて 標準のINFファイル の中に"設定指示"があれば それが優先されてしまいます。
◇【Win98標準のINFファイル】に対して 自分で 細工をする。
【Win98標準のINFファイル(SCSI.inf or SCSIJ.INF)】の中の記述の内、
"別の型番のカード" として誤認識された その"誤認識カード名"と情報を無効化すれば良いのですが、
INFファイルの修整方法は 必要が生じた時に説明します。(このテキストでは説明しません。)
◇【田中式】を実行する前の 事前の操作 としては 【Win98標準のINFファイル】を
"自分で修整する" だけで十分ですが、
◇Win98セットアップの場合は、
【自分で修整したINFファイル】を INFフォルダにコピーしておいても、
これは Win98標準のINFですから、
Winセットアップ初期段階で 【自分で修整したINFファイル】は上書きされてしまいます。
従って、
Win98のGUIモードで InfInst.exe を実行して【インストールセット】を作成
する事になります。
★【infinst.exe】を実行して "カスタムセットアップCD"を作成する・・・(例:REX PCI30)。
【REX PCI30】用のドライバとINFファイルを準備しておき、
Win98再セットアップ前に
GUIで "infinst.exe" を実行すると【カスタムセットアップCD】が作成されます。
InfInst.exe で【インストールセット作成】する時に "追加デバイス"のドライバ・INF・CAT等を
与えるのですが、
このデバイスに関して【Win98標準のINFファイル】が "誤った情報" を保有している場合は
その【Win98標準のINF の"誤った情報"】をコメントアウト(無効)してくれます。
InfInst.exe の実行手順は下記カッコ内↓。
(まず、Win98セットアップCDの Win98フォルダ(直下のみ)を HDDにコピーします。
例えば H:\W98_INST.SET\WIN98フォルダにコピー。フォルダ名は8.3文字で。
そして そのコピー先の全ファイルの "書き込み禁止属性" を解除します。
これが【インストールセット素材】です。
専用INFファイルと専用ドライバを用意(これも"書き込み禁止属性" を解除)しておいて、
InfInst.exe実行時に その↑専用INFファイルと専用ドライバ(デバイスによっては CATファイルも)
を指定しますと、それが 【インストールセット素材】にコピーされます。
【カスタムインストール】のための情報ファイルが自動作成されて格納されます。
これで【インストールセット】は完成です。
ここからWinセットアップ出来ますし、これを CDにコピーしてもセットアップ出来ます。)
※InfInst.exe実行時に「カスタム認識」させるためのINFファイルを指定してコピーさせるのですが、
この時 カスタム認識させるデバイス用のドライバ・CAT等も要求されます。
コピーさせる時の注意事項として、
コピー元のフォルダが【日本語名フォルダ】であると、InfInst.exe はコピーしてくれません。
※"書き込み禁止属性" の解除方法は次の通り。
【例】【Win98セットアップCD のコピー先】= H:\W98_INST.SET\WIN98 と仮定して、
H:\W98_INST.SET\WIN98フォルダ内の全ファイルの "書き込み禁止属性" を解除する場合
attrib -r H:\W98_INST.SET\WIN98\*.* /s
(↑最後の /s が重要です)
CDメディアからHDDにコピーした場合、コピー先ファイルの属性は【書き込み禁止】の
属性が設定されます。
で、InfInst.exe を実行する場合、処理対象となる【インストールセット素材】のファイルは
事前に 【書き込み可能】の属性に設定されている必要があります。
CDメディアからHDDにコピーした時に「システム属性」や「隠し属性」が設定される事は
ありませんが、自分の誤操作で「隠し属性」を設定してないとも限りません。
「システム属性」や「隠し属性」が設定されているファイルに対しては 【attrib -r】は無効です。
その意味では
上記の "属性解除" のコマンドラインは 次のように実行した方が良いでしょう。
attrib -s -h -r H:\W98_INST.SET\WIN98\*.* /s
※InfInst.exe 〜って どこに存在するの?
Win98セットアップCDの中に入っています。↓(初期バージョン用もSE用も同一プログラムです。)
CDのドライブが Nと仮定して・・ N:\tools\reskit\infinstフォルダ。
【ファイル名を指定して実行】にて実行できます。
CDのドライブに入っている InfInst.exe を いきなり実行しても問題ありません。
(このツールは "Windowsに組み込み処理" を行なう必要は無し。)
(Winフォルダ内に INFINSTフォルダを作り、
ここに infinst.exe と infinst.chm をコピーして これを実行してもOK。)
※InfInst.exe実行時の注意事項
1.InfInst.exe を実行する場合、処理対象となる【インストールセット素材】のファイルは
事前に 【書き込み可能】の属性に設定されている必要があります。
2.追加するドライバが "圧縮ファイル" であると受け付けてくれません。
3.コピー元のフォルダが【日本語名フォルダ】であると、InfInst.exe はコピーしてくれません。
4.InfInst.exeの機能を一言で表現すれば、
【インストールセットにデバイス情報・ドライバを追加する】機能ですが、
【特定情報無効化】などの "特殊な修整を加えたINFファイル" 追加指定すると
InfInst.exe は あまり賢くないです・・。
=============================================
=============================================
■■■■ 【CATファイルのコピー作業】に関して。
=======
ここでの報告・記述を書いた後で
私に依頼された知人は 自身のPCに 'Win98インストール' を行ないました。
そのPCは 実際に【19160_Ultra160を装着したPC】であり、
下の図のように このテキストで述べている形態でのインストールです。
ただし、adpu160m.inf は 私が修整した物を送り それを使ってもらいました。
(結果は 予想通り 自動組み込みされていました。)
C:\
└─WINDOWS
│
├─INF \ adpu160m.inf
│ │
│ └─ \ CATALOG \ adpu160m.cat
│
└─SYSTEM
│
└─IOSUBSYS \ adpu160m.mpd
adpu160m.inf に対する私の修整内容は 次の2点です。
1.【signature】の "$Windows 95$" を "$CHICAGO$" に訂正。
(これは "$CHICAGO$" が正しいと思います。)
2.ファイル名表記を "完全な8.3表記"に変更。 ← これは'気休め'です。
フォーマットしたHDDに FD起動したDosで上記の図のようにコピーし、
上記のwindowsディレクトリに対して setup を行なったのです。
使用したインストールCDは 多少のカスタマイズ版ですが 殆どオリジナル版と同じです。
このPCには 元々【19160_Ultra160】は装着されておらず、
PCの購入時に【19160_Ultra160】を '追加で装着'して届けられたPCです。
このPCが届けられた段階でのレジストリ情報が【参考_19160初期レジストリ】フォルダに
格納してあります。
このフォルダの LM_Class.txt を参照して判る事は、
このPCの販売店は 19160カードを【FDからインストール】して 手動で組み込んいます。
通常にWin98セットアップしますと【19160_Ultra160】を認識できません。
(当然ながら、後から【19160_Ultra160】を装着しても認識しません。)
※私は【19160_Ultra160】を持っていませんので 以下の検証作業は【AHA-2940・AHA-2940UW】で
行ない、以下は それに基づいて報告・記述したママです。
このテキスト全体は【AHA-2940U2W】での経験に基づいて記述し、
その後で 前途の LM_Class.txt を参照しながら【19160_Ultra160】用に修整しています。
さて、
INFファイルの [Version]セクションの中にに CatalogFile=xxxxxxxx.cat という記述が
存在する場合があります。
この CATファイルは 【検出 ⇒ ドライバ組込み】とは直接には関係ないのですが、
一応は必要です。
(INFファイルの中に CatalogFile=xxxxxxxx.cat という記述が存在する場合のみ必要。)
多くの場合 xxxxxxxx.infのペアになるxxxxxxxx.cat の xxxxxxxx部分の名前は 同じです。
(つまり adpu160m.infのペアになるCATファイルは scsi.cat。)
そして、
該当するINFファイルが "Win98標準のINF" である場合は CATファイルも"Winの標準保有"です
から、考える必要はありません。
"Win98標準のINF" でない場合 即ち 【自動認識・自動組み込みされないデバイス】の場合は
CATファイルを 事前にコピーしておきます。
※デバイスによっては
そのドライバ組込み作業を行なっても CATファイルがコピーされない場合があります。
(INFファイルには CatalogFile=xxxxxxxx.cat と記述されていても。)
その場合、何故 CATファイルがコピーされないのか未確認であり 私にも解りません。
でも、そんな事は考えずに 所定の場所にコピーしておけば間違いありません。
(不要なら認識されずに使われないだけの事です。)
■【CATファイルを どこにコピーしておくのか・・・】
※これについては、論理的な検証だけしか行なっていません。(完全な実地検証が出来ていません。)
次のスタイルでWin98セットアップを行ない、
以前のWin98セットアップデータと併せる事によって 論理的な検証 を行ないました。
"自動認識されないデバイス"を自動で組み込ませるための事前操作として
「CATファイルの コピー先」としての【所定のディレクトリ】は C:\windows\INF\CATALOG です。
※ここにあるCatファイルは Winインストーラによってコピーされた物である。
つまり、Winインストール時の検出マネージャは "CATALOGに存在するCatファイル" を認識して
SCSIカード等を設定した事になる。
従って、
◆あ◆【Win98セットアップ する場合】の事前操作。
セットアップの前に
INFディレクトリ配下に CATALOGディレクトリを作成して ここに CATファイルを置いておきます。
ここに置いたCATファイルの存在を認識してくれない事があれば要求してくるハズですから、
"ディレクトリ参照"を選択して ここを指定してやります。
※ひょっとしたら、
"CATファイルが必要なINFファイル"の場合は この方法でのWinセットアップは駄目かも知れません。
(例 : 【19160_Ultra160】)
もしそうであれば、 手間が余分にかかりますが 事前に Win98のGUIで InfInst.exe を
実行して【インストールセット】を作成しておいた方が良いでしょう。
ただし、InfInst.exeの方法では「デバイス追加・変更」があると その【セット】を作り直す
必要がある点が煩わしいです。
【INFファイル・ドライバ・CATファイル の事前コピー】のスタイルが 簡単で融通が利きます。
◆い◆【"普通にWin98セットアップ" の後、田中式処置に備える場合】の事前操作。
あるいは
【取り付け後、"FDからインストール"ではなく 自動認識させたい場合】の事前操作。
【a】 C:\windows\INF\CATALOGディレクトリと
【b】 Catroot配下の "多くのCATファイルが置かれているディレクトリ" に
CATファイルをコピーしておきます。(多分 【b】 だけで充分なのでは・・)
※ ↑【a】 と 【b】 のどちらであるか 自信が無いので 両方にコピーしておけば大丈夫でしょう。
(【b】 については、
〜〜 CATROOT\{127D0A1D-4EF2-11D1-8608-00C04FC295EE} か、
〜〜 CATROOT\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} の どちらかにコピー。)
※ Catrootディレクトリの有効位置は マザーボードによって2種類あります。
"440BXチップセットマザー"等のPCでは C:\windows\CATROOT です。
"i8xxチップセットマザー"等のPCでは C:\windows\SYSTEM\CATROOT です。
※余談ですが、
Win98セットアップした直後や
デバイス認識に"ある種の変更"が行なわれていないWin98や
"440BXチップセットマザー"等のPCでは 通常は {F750E6C3〜〜5EE} だけが存在します。
そして、【田中式処置】を行なうと {127D0A1D〜〜5EE} が出現します。
CATファイルコピーで 上記のように判断した"根拠"は 以下の通りです。
1.infinst.exe を実行して【インストールセット】を作成し、これを使って"Win98セットアップ"を
行なった場合の結果状況の観察。
・特定のマウスや特定のSCSIカードを "Win98が誤認識" してしまうため、
scsi.inf と msmouse.inf を 少々改変し、そのマウスとSCSIカード用のINFファイル・ドライバを
用意して "インストールセット" を作成し、これを使ってWin98をセットアップします。
"インストールセット" の作成時に INFファイル・ドライバの他に CATファイルも要求されます。
※マウスの場合、通常のドライバの他に Win3.x用ドライバも要求されます(system.ini参照)。
【Win98−インストールCD】の内容に加えて 上記の INFファイル・ドライバ・CATファイルが追加され、
さらに custom.inf が生成されて infinst.exe が完了します。
特定のマウスや特定のSCSIカードを "誤認識" せずにWin98セットアップするための "指示" が
custom.inf に記述されます。
で、
このインストールセットを使って Win98セットアップを行なうと どうなるか・・・。
(もちろん INFファイルを改変した目的の通りにデバイス認識されてセットアップされます。)
【前途の infinst.exe実行時に要求されたCATファイル】が C:\windows\INF\CATALOG の中に
コピーされます。(他のCATファイルは ここにはコピーされません。)
※通常のWin98セットアップを行なった場合は C:\windows\INF\CATALOG の中は "空っぽ" です。
つまり、C:\windows\INF\CATALOG は 特定デバイス用の "指定席" です。
(【"追加INF"のペアとなるCATファイル】の指定席)
ところが、
CATALOG の中にある物と同じCATファイルは Catroot配下にもコピーされています。
さて、2ヵ所に存在するCATファイルが利用される "目的" と "タイミング" は?・・・。
"目的" はさておいて、"タイミング" が重要です。
だって、Winインストール前に {127D0A1D-4EF2-11D1-8608-00C04FC295EE} や
{F750E6C3-38EE-11D1-85E5-00C04FC295EE} のディレクトリを Dosで作成する事は出来ませんから。
2.メモを記録しながら 通常のWin98セットアップを行なってみました。
※腕時計とPCのタイマーを "秒単位" まで正確に合わせておきます。
インストーラの挙動の内、【デバイス検出・設定】に関連するアクションが発生した時刻をメモします。
で、
途中で 【PC再起動】となったら PCの"BIOS初期化"が始まるタイミングで フロッピーを挿入して、
フロッピー起動します。
※マシンリブートされる時、HDDにアクセスが起きなければ PCは 【セットアップ途中】である事を
関知しません。
FD起動した時に HDDのファイルを書き換えたりしなければ、後で HDD起動した時に 何事も無く
セットアップが継続されます。
FD起動した時は ドライバ・INFファイル・デバイス検出・CAT関連のディレクトリに関して
ファイルやディレクトリの "生成状況・更新状況・更新時刻" を詳しくメモしてから再起動します。
そして これを【セットアップ途中のPC再起動】の度に行ないます。
※【PC再起動】の度に、FD起動の代わりに "Command Prompt Mode" で起動しても
問題なくセットアップ出来ます。この方法も試してみました。
この場合は "レジストリ書き出し" が出来るので "Command〜 Mode起動" の度に
Dosで 次のレジストリを書き出しておいて 後で比較してみました。
HKEY_LOCAL_MACHINE\Enum
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class
※「セットアップ途中の再起動」で FD起動した場合は データは手作業で調査・比較した。
"Command〜 Mode起動"した場合は BAT処理にて データ書き出しを行なった。
※テストマシンでの "有効なCatrootディレクトリ" は C:\windows\SYSTEM\CATROOT である。
これら↑の記録を整理すると 次の事が判ります([1]〜[5])。
※1回目の再起動 = セットアップ途中で促される "最初の再起動"。
[1] ・1回目の再起動時には C:\windows\SYSTEM\CATROOT は存在しない。
(このマザーボードでは CATROOTは C:\windows\SYSTEMに"有効"な形で生成される。)
・2回目の再起動時にも C:\windows\SYSTEM\CATROOT は存在しない。
・2回目の再起動時でも まだ CATファイルがコピーされていない。
・1回目の再起動時には C:\windows\CATROOT は存在するが 中身は catalog4.cab のみであり、
セットアップ完了後も配下のディレクトリは生成されず、中身は catalog4.cab のみ。
(Winインストーラの【"マザーボード種別" 判定】によって C:\windows\CATROOT が無視される。)
・1回目の再起動時に C:\windows\SYSTEM\PRECOPYディレクトリが存在し、
この中のファイルは catalog4.cab、base5.cab、base6.cab、base7.cab。
{注} :catalog4.cab は CATファイルの"圧縮集合体"。 セットアップCDの物と同じ。
(ドライバ類とCATファイルは "デバイス検出・組込み" の後で解凍されるのか?・・。)
・C:\windows\SYSTEM\PRECOPYディレクトリは セットアップ完了後に自動削除されている。
・1回目の再起動時の system.dat と C:\system.1st は全く同じ物。
この時↑の レジストリの【ハードウェア認識】は 実質的に "ゼロ" に等しい。
("カテゴリ分類キー" だけが設定されている。)
・1回目の再起動時には C:\windows\INF内のサブディレクトリは存在しない。
(C:\windows\INFディレクトリ内のINFファイルはコピーされている)
[2] ・1回目の再起動時には C:\windows\INF内に PNFファイル・drvidx.bin・drvdata.bin は存在せず、
まだデバイス検出が行なわれていない事が判る
・2回目の再起動時に C:\windows\INF内に PNFファイル・drvidx.bin・drvdata.bin が存在する。
(C:\windows\INF内のサブディレクトリは存在しない)
[3] ・1回目の再起動の時に すでに C:\windows\SYSTEM\IOSUBSYSディレクトリが存在する。
ただし、aic78xx.mpd(AHA-2940・AHA-2940UWのドライバ)は含まれていない。
・2回目の再起動の時に C:\windows\SYSTEM\IOSUBSYS 内に aic78xx.mpd がコピーされている。
(SCSIカードが組み込まれた。レジストリでも完全に組み込まれている。)
↑この段階でも CATファイルは まだ コピーされていない。
・3回目の再起動の時に C:\windows\SYSTEM\CATROOT が存在する。
C:\windows\SYSTEM\CATROOTディレクトリ生成時と同じ時刻に 配下の CBD・CBKファイルが生成
されている。配下の {F750E6C3-38EE-11D1-85E5-00C04FC295EE} の生成時刻も同じ。
({127D0A1D-4EF2-11D1-8608-00C04FC295EE} は セットアップ完了時も存在しない。)
[4] ・追加検出後の"3回目の再起動"時には サウンドチップ(onBoard)・末端デバイス(ex:CD-Rom) 等の
PNFファイルが 増えている。
ただし、2回目に生成されたPNFファイルは更新されていない。
(drvidx.bin・drvdata.bin は更新されている。)
・3回目の再起動時に 初めて C:\windows\INF\CATALOGディレクトリが生成されている。
ただし、セットアップ完了後も中身は空っぽ。
[5] SCSIカード以外の【Win98が自動設定しないデバイス】の例 :
ディスプレィモニターの INFファイル・ICMファイルを "セットアップ前" に【所定のディレクトリ】に
事前にコピーしてから Winセットアップ した場合↓。
(【ICMファイル のコピー先】= C:\windows\SYSTEM\COLOR )
※このモニターに必要なファイルは INFファイル・ICMファイル のみ。
※ICMファイル = モニターの色管理設定ファイル。
組込み作業をしなくても プロファイル設定まで自動的に完了している。
=============================================
=============================================
■【ツリー構造ごと1発でコピーするDosコマンド】の使い方 (起動Dos・Dosモードに限定して説明)
◇Xcopyコマンドを使います。
copyコマンドを使った場合と違い、1行だけの実行で "ツリー全体" をコピー出来ます。
フロッピー起動した場合に実行するには、
FDか どこかのHDDに【Xcopyコマンドセット】が存在している必要があります。(後述)
◇Dosでは、【コマンド実行の区切り】=【エンターkey入力】です。
コマンドを実行させるには コマンド行の最後に【エンターkey】を入力する必要があります。
MOドライブが Hドライブであると仮定し、下の図のようなツリー構造であるとします。
H:\ C:\
└─WINDOWS └─WINDOWS
│ │
├─INF \ xxxxxxxx.INF ├─INF
│ │
└─SYSTEM └─SYSTEM
│ │
└─IOSUBSYS \ ドライバ └─IOSUBSYS
xcopy H:\WINDOWS\*.* C:\WINDOWS\ /s /y
xcopy H:\WINDOWS\*.* C:\WINDOWS\ /e /y
↑上記のどちらかのコマンド実行で H: ⇒ C: へ【ツリー構造】ごと ツリー全体のファイルがコピーされます。
(「H:\WINDOWS 直下のファイル」もコピーされます。)
◆コピー先のフォルダ記述の最後に \ を追加するのが 重要 です。
(こうすると コピー先に「ツリー構造」が無くても コピー元と同じツリー構造が自動作成される)
/s の場合は 「コピー元の 空フォルダ」はコピーされません。
/e の場合は 「コピー元の 空フォルダ」もコピーされます。
※ /y は コピー先への上書きについての「Yes・No 確認」無しに上書きされる・・・の意味。
※ /s の s は SubDirectory の意味。
※ /e の e は Empty の意味。
◆【注意点1】: コピー元のファイル・フォルダの属性が「隠し属性 or システム属性」の場合は
それは コピーされません。
◆【注意点2】:【Xcopyコマンドセット】について。
コマンド実行する時に、
「現在のフォルダ」か「Pathを設定したフォルダ」に 下記のコマンドファイルが
存在しない場合は、
【コマンドfile が見つからない】という認識となり 実行不可能です。
◇↓【「起動Dosで xcopyコマンド実行」するために必要なファイル】
Xcopy.exe Xcopy32.exe Xcopy32.mod
3番目の modファイルが必要か否かは未確認です。
Xcopy32.exe は GUIのDos窓用のハズですが 無いとエラーとなります。
◆【注意点3】: 通常の【起動フロッピー】には 上記の【注意点2】で示したコマンドfile が含まれない
事が原因で xcopyコマンドは実行不可能です。
※ただし、
Cドライブに問題が無く そのドライブの COMMANDフォルダのファイルが正常なら
C:\WINDOWS\COMMAND に「Pathを追加設定」すれば実行できます。(後述)
◆【注意点4】: /s も /e も記述を省略すると 「H:\WINDOWS 直下のファイル」だけがコピーされます。
◆【注意点5】: これは ここでは該当しませんが、
同じ名前のファイルがコピー先に存在している場合、
コピー先のファイル・フォルダの属性が「書き込み禁止 or 隠し属性 or システム属性」
である時は "上書き拒否" されます。
※コピー先のフォルダを WINDOWS としたければ 次のように実行します。
xcopy H:\WINDOWS\*.* C:\WINDOWS\ /s /y あるいは xcopy H:\C_WIN\*.* C:\WINDOWS\ /e /y
※「C:\ 直下のファイル・フォルダ」ごとコピーしたければ 次のように実行します。
xcopy H:\*.* C:\ /s /y あるいは xcopy H:\*.* C:\ /e /y
※Path とは、【コマンドfileを Dosに自動的サーチさせる】目的で
「フォルダ経路」を設定した "道すじ" です。
通常の「Command Prompt Mode」でHDD起動した場合は
自動的に Path が設定(↓下記カッコ内)されています。
(C:\WINDOWS;C:\WINDOWS\COMMAND)←2つの道すじが設定されています。
↑ セミコロン(;) が 経路1つ1つの区切り です。
【現在のPath設定】を表示して確認するには 単に Path と入力実行します。
【現在のPath設定】に「D:\APLI へのフォルダ経路」を追加設定したい時は 次のように実行します。
SET PATH=%PATH%;D:\APLI
↑ %PATH% の意味は、【「PATH という名前の環境変数」に設定されている文字列】の意味です。
※【現在のフォルダ】という言葉
Dosでは「フォルダ」の事を「ディレクトリー(Directry)」と言います。
Dos起動した段階で(Dos窓でも)、
必ず【現在のドライブ】と【現在のフォルダ】が認識されています。
起動Dosで C:\WINDOWS\COMMAND> と表示されますネ、あれが【現在のフォルダ】です。
それでは、
C:\WINDOWS\COMMAND> と表示された状態で cd D:\ と実行するとどうなるでしょう?
(cd D:\ は 「Change the Current Directry D:\」の意味。)
やっぱり C:\WINDOWS\COMMAND> と表示されたママです。
この原因は 【現在のドライブ】が C: のママだからです。
D: と入力して下さい。 D:\> と表示されたでしょ。
※【ファイル・フォルダの属性】を解除するには 次のように実行します。
attrib -s -h -r ファイル (例: attrib -s -h -r C:\WORK_BOX\xxxx.bmp)
attrib -s -h -r フォルダ (例: attrib -s -h -r C:\WORK_BOX)
●ここまでの Dosコマンド説明 は「必要最低限度」です。
【xcopyコマンド】の細部については沢山の説明が必要です。
興味があるならば 【初・中級者への補足説明.sy3】をお読み下さい。
=============================================
=============================================
■【MOメディアを起動Dosで認識させる】ための Dosドライバ
HDD起動でも FD起動でも、
通常は 起動Dosで 【SCSIカード接続のドライブ】は認識できません。
Dos専用ドライバ が必要であり、
【Dos専用SCSIドライバ を 組み込む記述】を "起動時の config.sys" に記述しておく必要です。
正式パッケージとして SCSIカードを購入した場合は、
【Dos専用SCSIドライバ+Dos専用SCSIツール(一杯)】を組み込むユーティリティが付属しています。
しかし、
Dos専用SCSIツール は普通の人には無用の長物であり、
【CDとMOのための SCSIドライバ】のファイルが "何と何であるか" を把握しておく事は大切です。
これを把握しておかないと、
【HDDをフォーマットしてのWin再セットアップ】の時に困るのが普通です。
◇【Dos専用SCSIツール】を組み込まなくても "必要なドライバを選んで自分で解凍して 組み込む"
ための方法があります。(私はそうしています)
◇Dos専用としては 「CDとMOの通常ファイル」を読み書き出来れば充分です。
それ以上は まず不要です。
◇【CDとMOの Dos専用 SCSIドライバ・ASPIマネージャ】は 3本です。(殆どの場合)
1.ASPIマネージャ
※↑これは、多くの場合「そのSCSIカード専用」。
2940用のマネージャを 2940U2W に転用は不可である。(その逆も。)
2.MO用のドライバ
※↑これは 1枚のSCSIカードに3台以上のHDDを接続したPCで
Dosでその3台目以降のHDDを認識・読み書きする場合にも必要。
3.CD用のドライバ
config.sys への記述方法は SCSIカードのマニュアルに書いてあります。
◇【CDとMOの Dos専用SCSIドライバ】を組み込んだ【起動フロッピー】
を 1枚は作成しておく事が望ましい。
◇【参考】 :【19160_Ultra160】の場合の Dos専用ドライバ は次の通り。
1.ASPIマネージャ ASPI8U2.SYS
2.MO用のドライバ ASPIDISK.SYS
3.CD用のドライバ ASPICD.SYS
=============================================
●レジストリで示される【device-ID】の文字列が PC起動時に 画面に表示されている・・・。
PCが起動する時の【マザーボード初期化の"完了報告画面"】で表示されています。
(通常は直ぐにクリアされるので読めませんが、FD起動すると読めます。)
・ちなみに、私のPC(P3B-Fマザー)には
【Adaptec AHA-2940U2/AHA-2940U2W PCI SCSI Controller】と【Ultra SCSI PCI Card REX PCI30】
が接続されていますが、
この2つのデバイスに関して PC起動時に表示される【マザーボード初期化の"完了報告画面"】は
次の通りです。
Bus No. Device No. Function No. Vender ID Device ID IRQ
【2940U2W】 0 11 0 9005 0010 10
【REX PCI30】 0 10 0 10CD 1300 3
そして、
この2つのデバイスの【レジストリキー】とその情報は次の通りです。
【2940U2W】
HKEY_LOCAL_MACHINE\Enum\PCI\VEN_9005&DEV_0010&SUBSYS_A1809005&REV_00\BUS_00&DEV_0B&FUNC_00
HardwareID = PCI\VEN_9005&DEV_0010&SUBSYS_A1809005&REV_00,PCI\VEN_9005&DEV_0010&SUBSYS_A1809005,PCI\VEN_9005&DEV_0010&REV_00&CC_0100,
PCI\VEN_9005&DEV_0010&CC_010000,PCI\VEN_9005&DEV_0010&CC_0100
【REX PCI30】
HKEY_LOCAL_MACHINE\Enum\PCI\VEN_10CD&DEV_1300&SUBSYS_131010CD&REV_03\BUS_00&DEV_0A&FUNC_00
HardwareID = PCI\VEN_10CD&DEV_1300&SUBSYS_131010CD&REV_03,PCI\VEN_10CD&DEV_1300&SUBSYS_131010CD,PCI\VEN_10CD&DEV_1300&REV_03&CC_0100,
PCI\VEN_10CD&DEV_1300&CC_010000,PCI\VEN_10CD&DEV_1300&CC_0100
【注意】: ↑ 上の 「PCI\VEN_9005&DEV_0010&CC_010000 〜〜 &CC_0100」は、その前の行(HardwareID = 〜〜 &REV_00&CC_0100,)からの“続き”
です。
その4行あとの「PCI\VEN_10CD&DEV_1300&CC_010000 〜〜 &CC_0100」も 同様です。
ホームページでの可読性を考慮して、私が 勝手に改行したものです。
[参考] : 詳しく説明しませんが、
「デバイス種別によっては、Windows9xでのデバイス検出の【認識順】は、重要である」事と ここでの説明は関連しています。
|