dpinstによるセットアップでWDFとWDMで挙動が違う
投稿者: misono 投稿日時: 水, 2009/12/23 - 15:50
こんにちは。
dpinstでwdmとwdfのドライバの挙動の差異について質問があります。
自前のWDMで設計したUSBドライバにCAによる署名を行った上でdpinstすると、インストールの途中で「このドライバはロゴ認証に合格してない」という表示があります。whqlにまだ申請していないので至極当たり前のように思えるのですが、
一方で、日高さんの記事(http://www.devdrv.co.jp/download/interface/0812/)で提示しているtestInst1によるdpinstではインストール中に上述の表示はありません。TestInst1に含まれるドライバはWDFで作成されているようです。そして、日高さんのデジタル署名が行われていました。
INFの設定内容も確認しましたがTestInst1のINFについても、特筆点はないように見受けられます。
上述からすると、状況としてはWDMかWDFの差異の違いで、インストール時の警告表示の有無が異なるように思えたのですが、正しいでしょうか。
現状は、dpinstでプリインストールしたときの警告と、その後にUSBケーブルを挿したときにも同様の警告が表示されてしまうので、dpinst時は何とか消せないものかと考えています。ロゴ認証を受ければ何ら問題はないのですが。
よろしくご教授いただけましたら幸いです。

DPinstの
DPinstの legacyModeフラグでは回避できないでしょうか?
バッキー@最近ドライバ周りはとんとご無沙汰です
質問の内容はわかり
質問の内容はわかりました。
しかし実行条件に不明な点があるので、以下を教えて下さい。
1.インストール先のターゲットOS名、SP種類
2.インストール先のターゲットOSにおいて、Windows Updateでルート証明書の更新の最新版を
実行したか。もしもしてない場合、ルート証明書の更新を実行しても状況は変わらないか。
3.(差支えなければ)CAによる署名を付加した際に証明書を提供したCAの業者名
4.CATファイルとSYSファイルの両方に署名したかどうか。
してない場合、両方に署名しても変化がないか。
5.dpinstの入手先
backyさん、hidakaさん、
backyさん、hidakaさん、コメントありがとうございました。
コメントしていただいていたのを、今気がついて、お二人のアドバイスをもとに検証しました。
結論から先に書きます。
dpinst.xml中の の記述が悪さしていました。
デジタル署名されたドライバでこのフラグをセットすると反対に先の投稿で述べた現象が発生しました。
OSはXP-SP2で、dpinstはV2.1.0.0(07/2009)です。
お二人のご助言で感嘆に解決できました。ありがとうございました。
追記と質問です。 .sys
追記と質問です。
.sysファイルに対しても署名を行いました。
dpinst実行時、認証を表示させないためには、sysファイルにも署名しなければならないのでしょうか?
また、
一度インストールして、プログラムの追加と削除でアンインストールを行い、PCの再起動を行ってから、再度、dpinstでインストールしようとするとロゴ認証画面が表示されてしまいました。
windows\infのコピーを削除してからも、試してみましたが、やはり認証画面が表示されてしまいます。
おかしいと思って、
システムの復元で、ドライバのインストール以前にもどしてから、dpinstでインストールを行ったところ、認証画面は表示されませんでした。
この理由はなぜでしょうか?
なるほど、署名付き
なるほど、署名付きドライバに legacyModeフラグを使うとこういう現象になるんですか。
そんな(いぢわるな?)設定は試したことがなかったので勉強になりました。
再インストール時のロゴ認証の挙動についてですが、基本的にアンインストールで完全に削除されるはずなので再実行で問題は出ないはずです。
しかし、先の現象でドライバのインストール状態がおかしくなっていたのかもしれませんね。
(その証拠にINFファイルが残っていたのだと思います)
次の対処としてINFを削除されていますが、hogehoge.infを削除した時に hogehoge.pnfも一緒に削除されましたか?
pnf(infのバイナリ表記)が残っているとドライバのインストールが失敗することがありますよ。
以上、ご参考までに。
XP-SP2とは結構古いで
XP-SP2とは結構古いですね。
確かこのOSでは、SPC署名付きドライバのインストールに対する動作が、怪しかったように思います。
記憶を頼りに書きますと、この頃は確かWindows Updateでルート証明書の更新の最新版をインストールしないと
SPC署名のドライバのインストール時に「ドライバに署名が無い」の警告が出ていたと思います。
# 「ロゴ認証画面」とは、「ドライバの署名無し警告」の事ですよね。
しかしインストール方法やdpinstのパラメータによって警告が出たり出なかったり、というのは経験ありません。
Windows Vistaが出てKMCSやSPC署名の方法が公開された頃(XPがSP2からSP3になった頃)に、
SPC署名はセキュリティカタログ(.CAT)だけでなく、「.SYSファイルやDLLにも署名せよ」
とMicrosoftから聞いた(文献で見た?)ので、私の場合は以降、特に考えずに、なるべく両方に署名しています。
ですので.SYSファイルに署名が無かったときに警告が出る場合があるか、ということはわかりません。
> dpinst実行時、認証を表示させないためには、sysファイルにも署名しなければならないのでしょうか?
「.SYSファイルやDLLにも署名せよ」というのは、警告を表示させないためではなく、
そのファイルのプロパティを表示させた時に素性がわかるようにしておく、という意味だったと思います。
ただ前述の様に、XP-SP2はSPC署名付ドライバ自体が認知されていない時代のOSですので、
SPC署名付ドライバのインストールに対して「署名無しの警告を出さない」という動作が、
正しく行われない場合があるのかも知れません。
お返事が大変遅れて
お返事が大変遅れてしまいました。
今はドライバ本体のバグがありその修正をしています。とほほ。
と、別ドライバを先にリリースするということになっており、そちらでこちらのスレッドに関するテストを行いました。
いろいろとお騒がせしていましたが、Hidakaさんのサンプルインストーラで自分の署名に置き換えたり、INF内を書き換えてテストしたところ、原因は[Version]のClassを変更すると認証画面が出たり出なかったりします。
HidakaさんのサンプルインストーラはClass=Sampleとなっています。一方、こちらのINFはClass=Portsです。これを書き換えたり、元に戻したりなどすると、必ず再現できることがわかりました。
いわゆる仮装コムドライバなのでClassはPortsにしています。
というわけですが、このようなあ場合はドライバとcatに署名してあったとしてもロゴ認証画面はプリインストール時でも出てしまうという理解をしています。
これについて、この理解で回避策やアドバイスがございましたらよろしくお願いします。
ちなみに、WinXP SP2はドライバの最小条件の下でテストするためにこの環境にしていました。署名に関してはややこしいことがあること、アドバイスありがとうございます!
高速なマシンにしたら、バグが出たというのが今のデバッグ作業なんですがね(汗)。
1点だけ、 >
1点だけ、
> これを書き換えたり、元に戻したりなどすると、必ず再現できることがわかりました。
当然ながら、これを書き換える度に毎回必ず、セキュリティカタログ(.CAT)ファイルを1から作成し直して、
そしてそのCATファイルに毎回、SPC署名を付けているのですよね。
もしそうでなく、署名付CATファイルはそのままで、INFファイルを変更しているのだとしたらば、それが原因です。
署名とはそういうものです。CATファイルが作られた時から1文字も変更されてない時にだけ、有効に働きます。
はい、その点は十分
はい、その点は十分満たしています。
毎回infを書き換えるたびにcatファイルを作成して、
catファイルに署名しなおしています。
たまたま私も、仮想CO
たまたま私も、仮想COM PortのClass=Portsのドライバに署名をすることになり、私も同じ問題にはまりました。
全く同じ状況を確認しましたので、先人のmisonoさんの情報は非常に役に立ちます。
Windows2000では発生しませんが、Windows XP系とWindows Server2003系では発生するので仕様である可能性が高いと思います。
Windows XPでのこのおかしな動作は、プレ・インストーラを作成した場合に、その後のデバイス・プラグイン時に自動インストールが出来ないという影響があるので困ったものです。どうやって対応しようかと考えています。