- ベストアンサー
WindowsXP embeddedのコンポーネント追加時のエラーについて
- WindowsXP embeddedの開発において、ドライバの.infファイルをComponent Designerにimportするとエラーが発生します。空のフォルダが作成されるだけでコンポーネントが追加されません。ヘルプには、適当なセクションを.infファイルに加えるように書かれていますが、具体的な方法がわかりません。
- また、同じConcordance IDを持つコンポーネントが複数作成されることや、レジストリの登録に失敗していることもあります。レジストリキーの追加方法や、同じ名前のコンポーネントについての対応方法がわかりません。どうすればこれらのエラーを解決できるでしょうか?
- WindowsXP embeddedの開発において、Component Designerでのドライバのインポート時に以下のエラーが発生します。 1. [セクション名] is missing. 2. More than one component has the same Concordance ID. 3. [セクション名] is Empty. 4. An error occurred when trying to add a registry resource HKEY_LOCAL_MACHINE\SOFTWARE\xxx\Display Driver. 5. [セクション名]: cannot handle key "UninstallFiles". これらのエラーにどのように対処すればよいでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
INFファイルのインポートはAutomaticにて行っていますか? Automaticで行ってINFファイルをインポートしてコンポーネントが作成されなかった場合、そのINFファイルの中にはデバイスの記述が無かったのだと思います。 またINFファイルをインポートした際に重要なのは、INFファイルをどれだけトレース出来たかではなく、"Resources"の中に自分が使用しようとしたデバイスのPnP情報と、サービスが作成されているかです。 INFファイルの中には、デバッグのために残っているセクション等使用していないセクションが沢山含まれています。 また、Windowsにデバイスドライバをインストールする事は可能だけど、エラーのあるINFファイルは沢山あります。これらがワーニングとして検出されているのです。 Importは、Windowsのインストーラがデバイスを発見した時に行う処理と基本的には同じです。 ですので、これらのワーニングが出ている部分は、普通のWindowsXPにインストールした場合も正常に動作しない部分であることがほとんどですので、あまり気にしなくて大丈夫です。 動かしてみて正しく動作していないようでしたら調査してみてください。 レジストリが必要なものに比べて不足していると思った場合には、普通のWindowsXPにドライバをインストールした結果を「InCtrl5」にて抽出して、それをコンポーネントファイルに追加してみてください。 また、デュアルディスプレイ対応のディスプレイドライバは個性が強いので、ファイルや、レジストリの設定等に問題が無くても解像度の変更が出来ない事もあります。 この場合も「InCtrl5」にてトレースする必要があります。その結果、レジストリや、INFファイルを修正する事になると思います。 > 同じ名前のコンポーネント複数ができてしまう これは、INFファイル内に同一の名前で違うデバイスが記述してあるために起こっています。 この場合は、それぞれ手動にて適切な名前に変更しましょう。 これらの作業を行う場合には、INFファイルの内容がある程度読める事が前提となります。 このサイトが参考になるかと思いますので、見てみてください。 [What is an INF?] http://sekida.dynsite.net/~yuuki/inf/index.html
その他の回答 (3)
- catby
- ベストアンサー率65% (50/76)
薄くなっているのは、既存のコンポーネントと競合しているためです。 ご自身が使用しないデバイスコンポーネントならば、削除しても問題ありません。 No.1にも書きましたが、INFファイルのImportで重要なのは、"Resources"の中に自分が使用しようとしたデバイスのPnP情報と、サービスが作成されているかです。 Importで作成されたコンポーネントで、ここが全く同じものというのは無いはずです。 同一名のコンポーネントが複数でき、"Resources"の"PnP Device ID"以外同じであれば、"PnP Device ID"を1つのコンポーネントにまとめても良いとは思います。 それから、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1256129 に同様の質問を挙げています。 これは、マルチポストにあたり、本サイトの禁止事項に抵触します。
お礼
INFファイルには、ある程度互換性のあるドライバがまとめて入っているので、極端な話、デバイスが特定できていれば、それ専用のコンポーネント以外はすべて削除しても一向に差し支えないということでしょうか。(そのデバイスが実際どのコンポーネントを必要としているのか特定が難しいですが。) >マルチポスト 申し訳ありません、私の中では若干、質問の内容とニュアンスが微妙に違っていたもので。こちらでまとめてご回答いただきありがとうございます。削除可能(24時間後)になったら削除します。
- catby
- ベストアンサー率65% (50/76)
NICの方を試しにComponent Designerにかけてみました。 確かに、INFファイルにバグがあったようです。 R54656\Drivers\WinXP\v5.30\b57xp32.inf の21行目 %BRCM% = Broadcom, NTx86.5.1 となっていますが、正しくは、 %BRCM% = Broadcom.NTx86.5.1 です。 変更してもう一度Importしてみてください。 ワーニングが何箇所かで出ていましたが、特に問題無いでしょう。 グラフィックに関しては、実際に動かしてみないと分からないので何とも・・・
お礼
できました。こんなバグ入りファイルが出回っているとは。 ワーニング"cannot handle key"というのはグラフィックドライバのワーニングと同じです。このエラーはあまり気にしなくてよいのでしょうか? 長くなって申し訳ありませんが、ついでにもうひとつ。 importが終わった後のコンポーネントのアイコンが薄くなって、プロパティも変更できないものが混じりますよね?あれはなぜでしょうか?このワーニングと関係があるのでしょうか?
- catby
- ベストアンサー率65% (50/76)
「InCtrl5」の簡単な使い方としては、 1.InCtrl5起動し、[Go]ボタンを押す 2.インストーラにてドライバをインストールしたり、 Wiindowsの設定を行う。 3.InCtrl5起動し、[Install Complete]ボタンを押す これで、2の処理にて行った変更を抽出可能です。 > iniファイルを見てみましたが、どこが悪いのかわかりませんでした。 INIファイルではドライバはインストールできませんよ! INIファイルは、インストールプログラムの設定情報等が格納されているだけで、ドライバとは一切関係ありません。 ドライバのインストールに最低限必要なのは、INFファイル、SYSファイル、(CATファイル)くらいです。 NICに関しては、これらが揃っているのでドライバファイルとして特に問題がるとは思えません。 まずは、色々なドライバのINFファイルを見て、ドライバのインストールファイルとはどういうものなのか勉強してください。 また、INFファイルだけでインストールできるかどうか判断する方法として、 抽出したINFファイルと、INFファイルが必要としているファイルをまとめて、普通のWindowsXPにインストールしてください。 これで、デバイスが検出できなかった場合、それはそのデバイスドライバの設定ファイルでは無かったという事です。 また、正常にドライバが動かなかった場合は、インストーラにてドライバを動かすのに必要な処理をしているという事です。 INFファイルにてドライバをインストールした時と、インストーラにてドライバをインストールした時の違いを「InCtrl5」にてチェックしてみてください。
お礼
ご回答ありがとうございます。 「InCtrl5」の使い方は、Install programのところにinfファイルを指定して「GO!」ボタンを押していました。 教えてもらった方法で試してみます。 >INIファイルではドライバはインストールできませんよ! ごめんなさい。私のタイプミスです。INFのつもりで書いたのですが、この「教えて!goo」では訂正とか追記ができなくて。 結局、うまくいかない時は「InCtrl5」を使って、普通にドライバをインストールするときの処理をトレースし、それをそっくり再現させるように、うまく導くのが基本ということですね。(それが難しいんでしょうけど。)
お礼
>そのINFファイルの中にはデバイスの記述が無かった そうなんですか。INFファイルの中にはいろいろ書いてあるようでしたが。少しINFファイルの研究をしてみます。 レジストリはやっかいです。おっしゃるとおり、ディスプレイドライバで問題が起きています。ちなみにATIのMOBILITY RADEON 9000です。Target Designerでコンポーネントの解像度を変更しても反映されません。「InCtrl5」についても使い方がまだよくわからないのでこちらも研究してみます。
補足
iniファイルを見てみましたが、どこが悪いのかわかりませんでした。 大変厚かましいお願いで恐縮ですが、もし時間が許すようでしたらちょっと見ていただけないでしょうか? ここ(コンポーネントが作られない) http://support.jp.dell.com/jp/jp/download/document.asp?dn=301665 ここ(レジストリ登録失敗) http://support.jp.dell.com/jp/jp/download/document.asp?dn=302415 です。