Lägga till inställningar för programvaruregister

Inf-filer för visningsdrivrutiner måste lägga till alla programvarurelaterade registerinställningar i PnP-programvarunyckeln (Plug and Play). PnP-programvarunyckeln (även kallad drivrutinsnyckeln) lagrar drivrutinsspecifika konfigurationsdata som bevaras mellan systemomstarter.

För skärmadapter skapas programvarunyckeln under enhetsklassen GUID {4d36e968-e325-11ce-bfc1-08002be10318} för skärmadapter.

Mer information finns i Plug and Play Registry-rutiner.

Grundläggande INF-struktur

INF-filer för visningsdrivrutiner är vanligtvis mycket stora och komplexa, som innehåller många avsnitt för olika arkitekturer, enhetsmodeller, filkopiering, tjänstinstallation med mera. Exemplen nedan visar endast registerrelaterade delar som är relevanta för att lägga till programvaruinställningar i PnP-programvarunyckeln.

INF-filen för visningsdrivrutinen måste innehålla avsnitt som definierar vilka registerinställningar som ska läggas till. Här är ett förenklat fragment som visar den grundläggande strukturen:

[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 ...

Det här fragmentet visar:

  • [Xxx.Mfg]: Avsnittet tillverkare/modeller som mappar maskinvaru-ID:er till installationsavsnitt
  • [R200_R200]: Avsnittet DDInstall som anger vad som ska installeras för den här enheten
  • AddReg-direktiv: Referensavsnitt som definierar vilka registervärden som ska läggas till
  • DelReg-direktiv: Refererar till avsnitt som definierar vilka registervärden som ska tas bort (för uppgraderingsscenarier)

Definiera registerinställningar

Direktiven AddReg refererar till avsnitt som innehåller de faktiska registervärdena. Här är ett exempel som visar vad som händer i de refererade avsnitten. Obs! En fullständig visningsdrivrutin inf skulle innehålla många ytterligare registervärden; i de här exemplen visas endast de vanligaste inställningarna för programvarunycklar:

[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 ...

Registervärdeformat

Varje registerpost följer det här formatet:

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

Where:

  • HKR: Representerar roten för maskinvaru-/programvarunyckeln (PnP-programvarunyckeln)
  • undernyckel: Valfri sökväg för undernyckel (ofta tom)
  • value-name: Namnet på registervärdet
  • flaggor: Datatypskonstant (till exempel %REG_DWORD%, %REG_SZ%, %REG_MULTI_SZ%)
  • värde: De faktiska data som ska lagras

Vanliga registerinställningar

Visningsdrivrutiner anger vanligtvis följande registervärden:

Värdenamn Typ Avsikt
InstalleradeBildskärmsdrivrutiner REG_MULTI_SZ Lista över DLL-namn för användarlägesdrivrutiner (utan .dll tillägg)
Användarlägesdrivrutinsnamn REG_SZ Sökväg till drivrutins-DLL för primärt användarläge
VgaKompatibel REG_DWORD Anger VGA-kompatibilitet (0 = inte kompatibel, 1 = kompatibel)
Accelerationsnivå REG_DWORD Grafikaccelerationsnivå (0 = full, 5 = ingen)
Förmågeöverskridning REG_DWORD Bitmask för att åsidosätta maskinvarufunktioner

Strängkonstanter

Definiera registertypskonstanterna i inf-filens [Strängar]-avsnitt:

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

Exempel på flera enheter

Om drivrutinspaketet stöder flera enhetsmodeller använder du enhetsspecifika AddReg-avsnitt:

[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

Metodtips

  1. Använd HKR för programvaruinställningar: Använd alltid HKR (inte absoluta sökvägar) för att se till att inställningarna går till rätt PnP-programvarunyckel
  2. Gemensamma inställningar för grupper: Använd delade AddReg-avsnitt för inställningar som är gemensamma för alla enhetsmodeller
  3. Använda enhetsspecifika avsnitt: Skapa separata AddReg-avsnitt för inställningar som skiljer sig åt mellan enhetsmodeller
  4. Rensa vid uppgradering: Använd DelReg-avsnitt för att ta bort föråldrade registervärden när du uppgraderar drivrutiner
  5. Dokumentanpassade värden: Lägg till kommentarer i INF-filen som förklarar eventuella leverantörsspecifika eller icke-standardregistervärden

Se även