ソフトウェアのレジストリ設定の追加

ディスプレイ ドライバー INF ファイルは、プラグ アンド プレイ (PnP) ソフトウェア キーにすべてのソフトウェア関連のレジストリ設定を追加する必要があります。 PnP ソフトウェア キー (ドライバー キーとも呼ばれます) には、システムの再起動後も保持されるドライバー固有の構成データが格納されます。

ディスプレイ アダプターの場合、ソフトウェア キーはディスプレイ アダプター デバイス クラス GUID {4d36e968-e325-11ce-bfc1-08002be10318}の下に作成されます。

詳細については、「 プラグ アンド プレイ レジストリ ルーチン」を参照してください。

基本的な INF 構造体

通常、ディスプレイ ドライバー INF ファイルは非常に大きく複雑であり、さまざまなアーキテクチャ、デバイス モデル、ファイルコピー、サービスインストールなどの多くのセクションが含まれています。 次の例は、PnP ソフトウェア キーへのソフトウェア設定の追加に関連するレジストリ関連の部分のみを示しています。

ディスプレイ ドライバー INF ファイルには、追加するレジストリ設定を定義するセクションが含まれている必要があります。 基本的な構造を示す簡略化されたフラグメントを次に示します。

[Xxx.Mfg]
"RADEON 8500/RADEON 8500LE (R200 LDDM)" = R200_R200, PCI\VEN_1002&DEV_514c&SUBSYS_003a1002

[R200_R200]
Include=msdv.inf
CopyFiles=R200.Miniport, R200.Display
AddReg = R200_SoftwareDeviceSettings
AddReg = R200_R200_SoftwareDeviceSettings
DelReg = R200_RemoveDeviceSettings
; ... many other directives omitted ...

このフラグメントは次を示しています。

  • [Xxx.Mfg]: ハードウェア ID をインストール セクションにマップする製造元/モデル セクション
  • [R200_R200]: このデバイスのインストール内容を指定する DDInstall セクション
  • AddReg ディレクティブ: 追加するレジストリ値を定義する参照セクション
  • DelReg ディレクティブ: 削除するレジストリ値を定義するセクションを参照します (アップグレード シナリオの場合)

レジストリ設定の定義

AddReg ディレクティブは、実際のレジストリ値を含むセクションを参照します。 参照先のセクションの内容を示す例を次に示します。 : 完全なディスプレイ ドライバー INF には、多くの追加のレジストリ値が含まれます。次の例では、最も一般的なソフトウェア キー設定のみを示します。

[R200_SoftwareDeviceSettings]
HKR,, InstalledDisplayDrivers, %REG_MULTI_SZ%, R200umd
HKR,, UserModeDriverName, %REG_SZ%, %13%\R200umd.dll
HKR,, VgaCompatible, %REG_DWORD%, 0
HKR,, Acceleration.Level, %REG_DWORD%, 0
HKR,, CapabilityOverride, %REG_DWORD%, 0x8

[R200_R200_SoftwareDeviceSettings]
HKR,, VideoDebugLevel, %REG_DWORD%, 0
; ... device-specific settings ...

レジストリ値の形式

各レジストリ エントリは、次の形式に従います。

HKR, [subkey], value-name, flags, value

Where:

  • HKR: ハードウェア/ソフトウェア キー ルート (PnP ソフトウェア キー) を表します
  • subkey: 省略可能なサブキー パス (ほとんどの場合は空)
  • value-name: レジストリ値の名前
  • flags: データ型定数 (%REG_DWORD%、%REG_SZ%、%REG_MULTI_SZ%など)
  • value: 格納する実際のデータ

一般的なレジストリ設定

ディスプレイ ドライバーは、通常、次のレジストリ値を設定します。

値の名前 タイプ 目的
インストール済みディスプレイドライバーズ REG_MULTI_SZ ユーザー モード ドライバー DLL 名の一覧 (拡張子 .dll なし)
UserModeDriverName REG_SZ プライマリ ユーザー モード ドライバー DLL へのパス
VGAコンパチブル REG_DWORD VGA の互換性を示します (0 = 互換性なし、1 = 互換性あり)
加速レベル REG_DWORD グラフィックス アクセラレーション レベル (0 = 完全、5 = なし)
機能オーバーライド REG_DWORD ハードウェア機能をオーバーライドするためのビットマスク

文字列定数

INF ファイルの [Strings] セクションでレジストリ型の定数を定義します。

[Strings]
REG_SZ = 0x00000000
REG_MULTI_SZ = 0x00010000
REG_DWORD = 0x00010001

複数のデバイスの例

ドライバー パッケージで複数のデバイス モデルがサポートされている場合は、デバイス固有の AddReg セクションを使用します。

[Manufacturer]
%Contoso%=Contoso.Mfg, NTamd64

[Contoso.Mfg.NTamd64]
%Device1.DeviceDesc% = Device1_Install, PCI\VEN_1234&DEV_0001
%Device2.DeviceDesc% = Device2_Install, PCI\VEN_1234&DEV_0002

[Device1_Install]
CopyFiles = Miniport.Files, UMD.Files
AddReg = Common_Settings, Device1_Settings

[Device2_Install]
CopyFiles = Miniport.Files, UMD.Files
AddReg = Common_Settings, Device2_Settings

[Common_Settings]
HKR,, InstalledDisplayDrivers, %REG_MULTI_SZ%, ContosoUMD
HKR,, VgaCompatible, %REG_DWORD%, 0

[Device1_Settings]
HKR,, DeviceSpecificValue, %REG_DWORD%, 1

[Device2_Settings]
HKR,, DeviceSpecificValue, %REG_DWORD%, 2

ベスト プラクティス

  1. ソフトウェア設定に HKR を使用する: 設定が正しい PnP ソフトウェア キーに移動するようにするには、必ず HKR (絶対パスではない) を使用します
  2. グループ共通設定: すべてのデバイス モデルで共通の設定に共有 AddReg セクションを使用する
  3. デバイス固有のセクションを使用する: デバイス モデル間で異なる設定用に個別の AddReg セクションを作成する
  4. アップグレード時のクリーンアップ: DelReg セクションを使用して、ドライバーをアップグレードするときに古いレジストリ値を削除する
  5. ドキュメントのカスタム値: ベンダー固有または非標準のレジストリ値を説明するコメントを INF ファイルに追加する

こちらもご覧ください