Freigeben über


Verwenden einer INF-Datei zum Überschreiben von EDIDs

In diesem Artikel wird beschrieben, wie Anbieter und Hersteller eine INF-Datei verwenden können, um die Extended Display Identification Data (EDID) eines beliebigen Monitors zu überschreiben. Es enthält auch eine BEISPIEL-INF-Datei (Monsamp.inf).

EDID ist ein Metadatenformat, das von Monitoren verwendet wird, um ihre Funktionen mit einer Videoquelle wie einer Grafikkarte zu kommunizieren. Sie enthält Informationen wie den Monitorbezeichner, Herstellerdaten, Hardwarebezeichner, Anzeigedauerinformationen usw. Diese Daten werden im EEPROM des Monitors in einem Format gespeichert, das VESA angibt. Alle Monitore, analoge oder digitale Monitore müssen EDID unterstützen.

Monitore stellen die EDID für Windows-Komponenten, Anzeigetreiber und einige Benutzermodusanwendungen bereit. Beispielsweise fragt der Monitortreiber während der Initialisierung den Windows Display Driver Model (WDDM)-Treiber für seine Helligkeitsabfrageschnittstelle und die DDI-Unterstützung (Device Driver Interface) ab, die sich in der EDID befindet. Falsche oder ungültige EDID-Informationen auf dem EEPROM des Monitors können zu Problemen führen, z. B. das Festlegen falscher Anzeigemodi.

Es gibt zwei Ansätze zur Korrektur von EDIDs:

  • Lassen Sie den Kunden den Monitor an den Hersteller zurückschicken, der das EEPROM mit der richtigen EDID neu flasht und den Monitor an den Kunden zurückschickt.
  • Implementieren Sie eine INF-Datei, die die richtigen EDID-Informationen enthält, und lassen Sie ihn vom Kunden auf den Computer herunterladen, der mit dem Monitor verbunden ist. Windows extrahiert die aktualisierten EDID-Informationen aus dem INF und stellt sie Komponenten bereit, anstatt die EEPROM EDID-Informationen zu verwenden und die EEPROM EDID effektiv zu überschreiben. Dieser einfachere Ansatz ist die bessere Lösung sowohl für den Hersteller als auch für den Kunden.

Neben dem Ersetzen der EDID-Informationen kann ein Anbieter eine Überschreibung für den Monitornamen und die bevorzugte Anzeigeauflösung bereitstellen. Kunden können häufig auf diese Überschreibung über Windows Update oder digitale Medien im Versandfeld zugreifen. Diese Überschreibung erhält eine höhere Priorität als die in diesem Artikel beschriebene EDID-Außerkraftsetzung. Weitere Informationen finden Sie unter Überwachen von INF-Dateiabschnitten.

EDID-Format

EDID-Daten werden als mindestens eine 128-Byte-Blöcke formatiert:

  • EDID Version 1.0 bis 1.2 besteht aus einem einzelnen Datenblock pro VESA-Spezifikation.
  • Mit EDID Version 1.3 oder erweiterter EDID (E-EDID) können Hersteller zusätzlich zum primären Block einen oder mehrere Erweiterungsblöcke angeben.

Jeder Block wird nummeriert, beginnend mit 0 für den anfänglichen Block. Um EDID-Informationen zu aktualisieren, gibt der INF des Herstellers die Anzahl des zu aktualisierenden Blocks an und stellt 128 Byte EDID-Daten bereit, um den ursprünglichen Block zu ersetzen. Der Monitortreiber ruft die aktualisierten Daten für die korrigierten Blöcke aus der Registrierung ab und verwendet die EEPROM-Daten für die verbleibenden Blöcke.

Aktualisieren einer EDID

So aktualisieren Sie eine EDID mithilfe einer INF:

  1. Der Monitorhersteller implementiert eine INF, die die aktualisierten EDID-Informationen enthält, und lädt die Datei auf den Computer des Benutzers herunter. Dieser Download kann über Windows Update erfolgen oder eine CD mit dem Monitor versenden.
  2. Die Geräteinstallation liest die aktualisierten EDID-Informationen aus dem INF und speichert die Informationen als Werte unter dem Hardwareschlüssel des Monitorgeräts. Jede EDID-Überschreibung wird unter einem separaten Schlüssel unter dem Hardwareschlüssel des Geräts gespeichert.
  3. Der Monitortreiber überprüft die Registrierung während der Initialisierung und verwendet alle dort gespeicherten EDID-Informationen anstelle der entsprechenden Informationen zu EEPROM. EDID-Informationen, die der Registrierung hinzugefügt werden, haben immer Vorrang vor EEPROM EDID-Informationen.
  4. Windows-Komponenten und Benutzermodus-Apps verwenden die aktualisierten EDID-Informationen.

Überschreiben einer EDID mit einem INF

Um eine EDID zu überschreiben, fügen Sie eine AddReg-Direktive für jeden Block, den Sie überschreiben möchten, in das folgende Format ein:

HKR, EDID_OVERRIDE, BlockNumber, 0x1, Byte 1, Byte 2, Byte 3, Byte 4,...

Die Blocknummer ist ein nullindizierter Wert des EDID-Blocks, der überschrieben werden soll. Die Datenbytes sollten als 128 Hexadezimalzahlen formatiert werden, die die binären EDID-Daten enthalten. Der Wert „0x1” nach der Blocknummer ist ein Flag, das angibt, dass dieser Registrierungswert Binärdaten (FLG_ADDREG_BINVALUETYPE) enthält.

Hersteller müssen nur die EDID-Blöcke aktualisieren, die falsch sind. Das System ruft die verbleibenden Blöcke von EEPROM ab. Das folgende Beispiel zeigt die relevanten Abschnitte eines INF, in denen EDID-Blöcke 0, 4 und 5 aktualisiert werden. Der Monitortreiber erhält Blöcke 1 - 3 und alle Erweiterungsblöcke, die Block 5 von EEPROM folgen:

[ABC.DDInstall.HW]
ABC.AddReg
...
[ABC.AddReg]
HKR, EDID_OVERRIDE, 0, 1, 00, FF, ..., 3B
HKR, EDID_OVERRIDE, 4, 1, 1F, 3E, ..., 4E
HKR, EDID_OVERRIDE, 5, 1, 24, 5C, ..., 2D
...

Weitere Informationen zu INFs im Allgemeinen sowie zu AddReg und DDInstall finden Sie unter Erstellen einer INF-Datei.

Beispiel-INF-Datei: Monsamp.inf

Informationen zur Verwendung und Änderung von Monsamp.inf finden Sie in den Abschnitten Überwachen von INF-Dateiabschnitten .

; monsamp.INF
;
; Copyright (c) Microsoft Corporation.  All rights reserved.
;
; This is a generic INF file for overriding EDIDs
; of any monitors, starting with Windows Vista.
;

[Version]
Signature="$WINDOWS NT$"
Class=Monitor
ClassGuid={4D36E96E-E325-11CE-BFC1-08002BE10318}
Provider=%MS_EDID_OVERRIDE%
DriverVer=04/18/2006, 1.0.0.0
PnpLockdown=1

; Be sure to add the directive below with the proper catalog file after
; WHQL certification.
;CatalogFile=Sample.cat


[DestinationDirs]
DefaultDestDir=23

[SourceDisksNames]
1=%SourceDisksNames%

; Enable the following section to copy a monitor profile.
[SourceDisksFiles]
;profile1.icm=1

[Manufacturer]
%MS_EDID_OVERRIDE%=MS_EDID_OVERRIDE,NTx86,NTamd64

; Modify the hardware ID (MON1234) to match that of the monitor being used.
[MS_EDID_OVERRIDE.NTx86]
%MS_EDID_OVERRIDE-1%=MS_EDID_OVERRIDE-1.Install, MONITOR\MON1234

; Modify the hardware ID (MON1234) to match that of the monitor being used.
[MS_EDID_OVERRIDE.NTamd64]
%MS_EDID_OVERRIDE-1%=MS_EDID_OVERRIDE-1.Install.NTamd64, MONITOR\MON1234

[MS_EDID_OVERRIDE-1.Install.NTx86]
DelReg=DEL_CURRENT_REG
AddReg=MS_EDID_OVERRIDE-1.AddReg, 1024, 1280, DPMS
CopyFiles=MS_EDID_OVERRIDE-1.CopyFiles

[MS_EDID_OVERRIDE-1.Install.NTamd64]
DelReg=DEL_CURRENT_REG
AddReg=MS_EDID_OVERRIDE-1.AddReg, 1024, 1280, DPMS
CopyFiles=MS_EDID_OVERRIDE-1.CopyFiles

[MS_EDID_OVERRIDE-1.Install.NTx86.HW]
AddReg=MS_EDID_OVERRIDE-1_AddReg

[MS_EDID_OVERRIDE-1.Install.NTamd64.HW]
AddReg=MS_EDID_OVERRIDE-1_AddReg

[MS_EDID_OVERRIDE-1_AddReg]
HKR,EDID_OVERRIDE,"0",0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x35,\
0xEE,0x34,0x12,0x01,0x00,0x00,0x00,0x0A,0x0E,0x01,0x03,0x68,0x22,0x1B,\
0x78,0xEA,0xAE,0xA5,0xA6,0x54,0x4C,0x99,0x26,0x14,0x50,0x54,0xA5,0x4B,\
0x00,0x71,0x4F,0x81,0x80,0xA9,0x40,0x01,0x01,0x01,0x01,0x01,0x01,0x01,\
0x01,0x01,0x01,0x30,0x2A,0x00,0x98,0x51,0x00,0x2A,0x40,0x30,0x70,0x13,\
0x00,0x52,0x0E,0x11,0x00,0x00,0x1E,0x00,0x00,0x00,0xFF,0x00,0x41,0x42,\
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x0A,0x00,0x00,0x00,\
0xFC,0x00,0x4D,0x53,0x20,0x31,0x32,0x33,0x34,0x0A,0x0A,0x0A,0x0A,0x0A,\
0x0A,0x00,0x00,0x00,0xFD,0x00,0x38,0x4C,0x1F,0x50,0x12,0x00,0x0A,0x20,\
0x20,0x20,0x20,0x20,0x20,0x00,0xDB

[DEL_CURRENT_REG]
HKR,MODES
HKR,,MaxResolution
HKR,,DPMS
HKR,,ICMProfile

; Pre-defined AddReg sections. These can be used for default settings
; when a given standard resolution is used.

[1024]
HKR,,MaxResolution,,"1024,768"
[1280]
HKR,,MaxResolution,,"1280,1024"

[DPMS]
HKR,,DPMS,,1

[MS_EDID_OVERRIDE-1.AddReg]
HKR,"MODES\1024,768",Mode1,,"31.0-94.0,55.0-160.0,+,+"
HKR,"MODES\1280,1024",Mode1,,"31.0-94.0,55.0-160.0,+,+"

; Enable the following section to copy a monitor profile.
[MS_EDID_OVERRIDE-1.CopyFiles]
;PROFILE1.ICM

[Strings]
MonitorClassName="Monitor"
SourceDisksNames="MS_EDID_OVERRIDE Monitor EDID Override Installation Disk"

MS_EDID_OVERRIDE="MS_EDID_OVERRIDE"
MS_EDID_OVERRIDE-1="MS EDID Override"