2

現在、Jungo の WinDriver (あまり重要な部分ではありません) フレームワークに基づく Windows デバイス ドライバーに取り組んでいます。VeriSign 証明書があり、署名プロセスやドライバー機能に問題はありません。

ただし、(Windows 7 での) インストール テスト中に、ドライバーのインストール中にインストールの確認を求める Windows セキュリティ ダイアログに関して、奇妙な動作が見られます。

そのダイアログでは、3 つのフィールドが表示されているようです (ASCII 化された引用):

+----------------------------------------------------------------------+
| Windows Security                                                     |
+----------------------------------------------------------------------|
| Would you like to install this device software?                      |
|                                                                      |
| Name: <SOMETHING A> <SOMETHING B>                                    |
| Publisher: <COMPANY>                                                 |
|                                                                      |
+----------------------------------------------------------------------+
| <> Always trust software from "<COMPANY>"  [INSTALL] [DON'T INSTALL] |
+----------------------------------------------------------------------|
| Security info / warning etc.                                         |
+----------------------------------------------------------------------+

今、何らかの理由<SOMETHING A>で と<SOMETHING B>は同じテキストです。これにより、ダイアログが奇妙に見えます。この情報は INF ファイルから取得されます (少なくとも私は今のところそう信じています)。

現在、何らかの理由で (少なくとも私には) 不明な理由で、INF ファイル内の "プロバイダー" 情報の内容が 2 回繰り返されているようです。

この分野 (INF ファイル、ドライバーのインストールなど) でより多くの経験を持つ人は、この動作の原因を考えていますか?

または、これらのダイアログで使用される INF ファイルの情報に関する詳細情報へのリンクでしょうか。

この記事を読んでいただき、またこの問題に関するアドバイスをいただき、ありがとうございます。
-T

【小さな更新】 最初の部分( <SOMETHING A>)だけがINFから出てくるようです。どちらが起源または第2部をさらに不可解にします...

[更新 2] 要求ごとの INF のコピー (<...> はコンテンツの編集)

[Version]
Signature=$CHICAGO$

Provider=%PROVIDERNAME%

CatalogFile.NTamd64=<SOME CAT FILE NAME>.cat

DriverVer=<DATE>,<VERSION>

Class=<OUR COMPANY>
ClassGuid={<OUR CLASS ID>}

;---------------------------------------------------------------;
; Driver Information
;---------------------------------------------------------------;
[Manufacturer]
%PROVIDERNAME%=DeviceList,NTamd64

; x86 platform, Win9x, Windows 2000 and later
[DeviceList]
%DESCRIPTION%=DriverInstall,*<OUR DRIVER HANDLE>

; x64 platform, Windows XP x64 edition and later
[DeviceList.NTamd64]
%DESCRIPTION%=DriverInstall,*<OUR DRIVER HANDLE>

;---------------------------------------------------------------;

;---------------------------------------------------------------;
; Source/Destination Information
;---------------------------------------------------------------;
[DestinationDirs]
DefaultDestDir=10,System32\Drivers

[SourceDisksFiles]
<OUR DRIVER NAME>.sys=1

[SourceDisksNames]
;1=%INSTDISK%,,,.
;Delete the above line and uncomment the next line for WHQL
1 = %INSTDISK%,<SOME CAT FILE NAME>.cat,,

;---------------------------------------------------------------;

;---------------------------------------------------------------;
; Installation Section
;---------------------------------------------------------------;

; Installation script for Windows 2000 and later
[DriverInstall.NT]
CopyFiles=DriverCopyFiles

[DriverCopyFiles]
<OUR DRIVER NAME>.sys,,,0x22    ; COPYFLG_NOSKIP | COPYFLG_NO_VERSION_DIALOG

[DriverInstall.NT.hw]
AddReg=DriverHwAddReg

[DriverHwAddReg]
HKR,,SampleInfo,,""

; Register a new class in Windows 2000 and later
[ClassInstall32]  ; Register a new class in Windows 2000 and later
AddReg=UpDateRegistry

[UpDateRegistry]
HKR,,,,<OUR COMPANY>
HKR,,Icon,,-5

; Add device driver service
[DriverInstall.NT.Services]
AddService=<OUR SERVICE NAME>, 0x00000002, DriverService

[DriverService]
ServiceType    = 1                  ; SERVICE_KERNEL_DRIVER
StartType      = 3                  ; SERVICE_DEMAND_START
ErrorControl   = 1                  ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%\system32\drivers\<OUR DRIVER NAME>.sys

;------------------------------------------------------------------------------
;  String Definitions
;------------------------------------------------------------------------------

[Strings]
PROVIDERNAME=<THE NAME THAT SHOWS UP TWICE (BUT NOT REALLY)>
DESCRIPTION=<SOME DESCRIPTION>
INSTDISK="Driver Installation Disk"

<THE NAME THAT SHOWS UP TWICE (BUT NOT REALLY)>に表示されるのは<SOMETHING A>です。

ただし、小規模な更新 1 で指摘されているように、この値を変更すると、前述の部分が変更される<SOMETHING A>だけで、他の部分は変更されません。

テストのためにいくつかのものを変更した後、表示される値は<SOMETHING B>、ドライバーの INF または RC ファイルでまったく見つからないため、「何もない」ように見えます。

4

2 に答える 2

2

他の情報源 (osronline.com [esp. Maxim] の ntdev にいるすべての人に感謝します) とレジストリを掘り下げることで、ダイアログ コンテンツの出所を最終的に解決できたと確信しています。以下は、私たちが見つけたものです:

ダイアログの例をもう一度使用します。

+----------------------------------------------------------------------+
| Windows Security                                                     |
+----------------------------------------------------------------------|
| Would you like to install this device software?                      |
|                                                                      |
| Name: <SOMETHING A> <SOMETHING B>                                    |
| Publisher: <COMPANY>                                                 |
|                                                                      |
+----------------------------------------------------------------------+
| <> Always trust software from "<COMPANY>"  [INSTALL] [DON'T INSTALL] |
+----------------------------------------------------------------------|
| Security info / warning etc.                                         |
+----------------------------------------------------------------------+

フィールドは次のように解決されるようです。

<SOMETHING A>INFファイルの「プロバイダー」の下の値と等しいようです

<SOMETHING B>複数のケースがあるようです:

  • デバイス クラスが既に存在する場合、この値は適切なレジストリ キーの "ClassDesc" の値と同じです。(以下にあります: HKLM\SYSTEM\ControlSet001\Control\Class\<The GUID of your device class>)
  • ただし、システム内部のデバイス クラスの場合、"ClassDesc" は空ではありませんが、値が表示されないように見えます。これらの場合、値が正しく解決されていないか、「選択により」単に無視されている可能性もあります。
  • この特定のインストールが、このデバイス クラスがシステムに初めて導入された場合は、何も表示されません。

<COMPANY>ドライバーの署名に使用された証明書の CN 値と単純に等しいようです。

まだもう少しあるかもしれませんので、お気軽に追加情報を追加してください。しかし、これが少なくとも、同じ情報を探している人を正しい方向に向けるのに役立つことを願っています.

于 2012-01-12T02:28:16.627 に答える