none
Win7でUSBドライバーがインストールできません RRS feed

  • 質問

  • はじめまして。

    WinXP時代に、USBドライバー生成ツール(既にサポート終了品)が

    自動生成したUSBドライバーを、そのままWin7にインストールしようとしたのですが、

    エラーが発生してインストール出来ませんでした。

    setupapi.dev.log を見ると、下記の様なエラーが発生していました。(抜粋)

    !    dvi:                Selecting driver failed(0xe0000228)
    !    dvi:      Error 0xe0000228: There are no compatible drivers for this device.
    !    ndv:      Queueing up error report since device installation failed...
         ndv:      Device install status=0xe0000203

    ネット検索で、「WDKの chkINF というツールを使えば、手掛かりが得られそう」

    ということまではわかったのですが、ここで躓いてしまい、先に進めない状況です。

    どなかた、アドバイスをいただきたく、よろしくお願い致します。

    • 編集済み takabisha 2011年12月3日 4:30
    • 移動 Mike Wang (MSCS) 2012年10月2日 12:58 (移動元:Windows デバイスドライバー開発)
    2011年12月3日 4:29

回答

  • chkinfとて完璧なツールとは言えません。

    chkinfを通した後のインストール時に何が起きているのかの情報が全く無いので、何ともコメントできません。

    なぜ失敗だと判断しているか、i386,amd64の使い分けとか、64bit KMCSに引っかかっているのでは?とか、inf2catでカタログが作成できるかとか、気になる点はまだまだあります。

     

    ところで9604のドライバは、Windows 2000時代のものをちょい替えでWindows 7にインストールできるようになりましたし、またKMDFで書き直したものも製品に組み込まれて問題なく動作しています。先日偶然にも某番組で取り上げられているのを見て、ドキドキしてしまいました。

    2012年1月10日 14:13
    モデレータ

すべての返信

  • 自己レスです。

    ようやく chkINF を入手し、エラーを回避しました。

    しかし、依然としてUSBドライバーのインストールが失敗します。

    具体的には、.sys および、上記の .inf ファイルのある場所を指定しても、

    「適合するドライバーが見つからない」旨のメッセージが現れます。

    USBデバイスは、USBN9604 というナショナルセミコンダクター社製の

    チップに自作のファームウェアを実装したものです。

    もしかすると、USBデバイス側の問題でしょうか?

    ご助言をお待ちしております。

    • 回答の候補に設定 Mrist 2012年1月6日 7:38
    • 回答の候補の設定解除 Mrist 2012年1月6日 7:38
    2011年12月27日 19:36
  • 「適合するドライバーが見つからない」ということは、INFファイルの記載に誤りがあると思われます。

    デバイスマネージャからINFインストールされているのだと思いますが、

    デバイスマネージャで見える、インストールしようとしているデバイスの[プロパティ]-[詳細]-[ハードウェアID]と、

    INFファイル内の、Modelsセクション内に定義されているハードウェアID(多分、USB\VID_XXXX&PID_YYYY)

     は、一致していますでしょうか?

     

    2012年1月6日 7:40
  • chkinfとて完璧なツールとは言えません。

    chkinfを通した後のインストール時に何が起きているのかの情報が全く無いので、何ともコメントできません。

    なぜ失敗だと判断しているか、i386,amd64の使い分けとか、64bit KMCSに引っかかっているのでは?とか、inf2catでカタログが作成できるかとか、気になる点はまだまだあります。

     

    ところで9604のドライバは、Windows 2000時代のものをちょい替えでWindows 7にインストールできるようになりましたし、またKMDFで書き直したものも製品に組み込まれて問題なく動作しています。先日偶然にも某番組で取り上げられているのを見て、ドキドキしてしまいました。

    2012年1月10日 14:13
    モデレータ
  • Mristさま、Atomu Hidaka-さま、アドバイスをありがとうございました。

    単純に、生成されたデバドラが32bit版なので64bit版OSでは動かないだけ、
    という模様です。
    大昔によく言われていたことなのに、全く思い出せず、大変お騒がせしました。

    以下、詳細状況です。
    32bit版のWin7 PCにデバイスを繋ぐと、
    「新しいデバイスが見つかった」と表示され、ドライバの場所さえ尋ねられずに
    「デバドラは正しくインストールされなかった」と表示されます。(何故でしょうか?)
    続いて、デバイスマネージャから該当デバイスの「ドライバの更新」を実行し、
    .sysファイルおよび修正した.infファイルを指定すると、デバドラが正常に
    インストールされ、期待通りに動作する事を確認しました! 3台の異なるPCで同じ結果でした。
    ⇒未確認ですが、32bitのWin7ならば、.infファイルが未修正のままでも
     動くのかもしれませんね。。。

     Mristさま>以上より、VIDとPIDの整合性は問題ないはずです。が、両IDは
    [Manufacturer]セクションに記載されています。
    (Modelsセクションというものは、現状存在していません。)

    しかし、64bit版のWin7 PCの場合、上記と同じ手順を実施しても、
    「インストールできませんでした。」と表示されます。4台の異なるPCで同じ結果でした。

     Atomu Hidaka-さま>ご指摘のKernel Mode Driver Framework、Kernel Mode
    Code Signing、ともに次元が高すぎて理解出来ていませんが、少なくとも、
    認証に関する申請は未実施です。(許されるなら、申請の手間は惜しみたいです。)
    なお、Vistaへのインストールは、無修正の.infのままで問題ありませんでした。

    当時使用したデバドラ生成ツールのマニュアルに、"64bit生成オプション"なるものを
    見つけたので、環境を再構築して試すつもりです。

    先走った話ですが、仮に64bit版生成がうまく行ったとしても、単純に考えると、
    デバドラの配布は32bitOS版と64bitOS版の二本立てになるかと思うのですが、
    OSに自動切替させて一本化する手法はあるのでしょうか?

    よろしくお願いいたします。


    • 編集済み takabisha 2012年1月17日 1:12
    2012年1月17日 1:06
  • > 単純に考えると、
    > デバドラの配布は32bitOS版と64bitOS版の二本立てになるかと思うのですが、
    > OSに自動切替させて一本化する手法はあるのでしょうか?

    はいその通りです。いくつかの手段が提供されています。

    まず(敷居は少し高いものの)Windows Updateで配布すれば、ドライバ・パッケージを2種類作ることにはなりますが、まさしくそれに近い事ができます。

    次にローカルでインストールする場合です。OSは実は、自動切り替えや自動判定の機能をインストール・パッケージやアプリケーションに対しては提供してくれません。

    なぜならば64bit OS環境は、32bit版のアプリケーションやインストール・パッケージに対して全く32bit OSの環境と同様に振る舞うからです。
    つまり32bit用のアプリケーションやインストーラは、それがいつの時代に作られたものであっても、64bit版OSのWow64(64bit版OSが32bitアプリケーションに提供する32bit OS互換環境)上に動作しているか、32bit版 OSで動作しているかを、通常知ることはありません。

    それではどうするかというと、setup.exe等の名前でWindowsが提供しているWow64か実際のx86かを見分ける機能を持つ32bit版アプリケーションを開発して、それを最初に起動させて(起動して)、そのsetup.exeが環境に適合したドライバ・インストール・パッケージを起動するという手法を取ります。これを具体的に実現するには、いくつかの方法(コード)がありますが、通常配布されている32/64両用ドライバのインストール・パッケージは皆、このようなことをやっているようです。

    ところで、USBN9604のUSBドライバを署名を付けずに(即ち証明書を購入せずに)64bit環境で正当に動作させる方法は、次の2種類がありますので検討してみてください。USB Device Resetの機能が不要であれば、容易に開発可能です。こうして開発したドライバも、32bitOS版と64bitOS版の二本立てになるので、インストール・パッケージには前述のような仕組みが必要になります。

    1. WinUSBを使用する

    2. UMDFを使用する。

    2012年1月18日 13:33
    モデレータ
  • 時間が経ってしまいましたが、問題が解決しているようですので回答済としてマークさせて頂きました。
    2012年7月7日 14:14
    モデレータ