2

標準のコード - デプロイ - デバッグ サイクル中に "devcon" を使用して UMDF ドライバーを更新する際に問題が発生しています。問題は、DLL ファイルと INF ファイルのバージョン番号または日付が、システムのドライバー キャッシュ フォルダーに格納されているものから変更されていない限り、"devcon update" は実際には何も更新しないことです。途方もない一連の実験の後、最新のファイルを強制的に使用する方法の 1 つは、次のようにすることであることがわかりました。

  1. 「-v」オプションでバージョンを明示的に設定することにより、「makefile.inc」の「stampinf.exe」に渡されるパラメーターを変更します。
  2. リソース スクリプト ファイル ("DRIVER_NAME.rc") を変更して、 VER_USE_OTHER_MAJOR_MINOR_VER " " を含める前に最初に定義ntverp.hし、次に and を明示的に定義 VER_PRODUCTMAJORVERSIONVER_PRODUCTMINORVERSIONます。このシステムでは、ビルドとリビジョン番号を変更することはできません。Win7 では、これは " " で 7600 と 16385 に固定されているようntverp.hです。これは設計によるものですか?

そのため、最初に「makefile.inc」を変更し、「-v」オプションを「1.1.7600.16385」などに設定して、ビルドごとに手動でマイナー バージョンをインクリメントしてから、RC ファイルを変更VER_PRODUCTMINORVERSIONして同じ番号で更新します。

または、SYSTEM アカウントでコマンド プロンプトを実行し、「devcon」を実行する前に「C:\windows\system32\DriverStore\FileRepository\DRIVER FOLDER」のドライバー キャッシュ フォルダーを削除すると、それも機能します。

今、私はここでかなり基本的な何かが欠けていると考えています. 助けてください!ありがとう!

4

2 に答える 2

1

c:\windows\system32\drivers\umdf\Paul Betts が上記で提案したように、デバイス マネージャーまたは「devcon」を使用してデバイスを無効にした後、UMDF DLL をドライバー フォルダー (たとえば ) に直接置き換えるだけのようです。ここに投稿する前に Microsoft のデバイス ドライバー ニュースグループでこの質問をしましたが、満足のいく回答は得られませんでした。そのため、その投稿へのリンクも貼ります。

http://bit.ly/6PDxKT

于 2010-01-07T02:47:04.517 に答える
1

デバイスのプラグを抜いて、アンロードされた DLL を置き換えることができないのはなぜですか? ドライバーを再インストールする必要はありません。モジュールを交換するだけです。生産中または顧客と関係のある作業中にこれを行うべきではないことに注意してください。ただし、ドライバーを作成している場合は、同じバージョン番号で新しいモジュールを叩きつけてください。

Win7 では、これは "ntverp.h" で 7600 と 16385 に修正されているようです。これは設計によるものですか?

はい、少なくとも次のサービス パックまでは

于 2010-01-03T03:33:52.243 に答える