Partager via


Utiliser un fichier INF pour remplacer les EDID

Cet article explique comment les vendeurs et les fabricants peuvent utiliser un fichier INF pour remplacer les données d’identification d’affichage étendu (EDID) de n’importe quel moniteur. Il inclut également un exemple de fichier INF (Monsamp.inf).

L’EDID est un format de métadonnées utilisé par les moniteurs pour communiquer leurs capacités à une source vidéo, telle qu’une carte graphique. Il contient des informations telles que l’identifiant du moniteur, les données du fabricant, l’identifiant matériel, les informations de synchronisation, etc. Ces données sont stockées dans l’EEPROM du moniteur dans un format spécifié par VESA. Tous les moniteurs, analogiques ou numériques, doivent prendre en charge l’EDID.

Les moniteurs fournissent l’EDID aux composants Windows, aux pilotes d’affichage et à certaines applications en mode utilisateur. Par exemple, lors de l’initialisation, le pilote de moniteur interroge le pilote WDDM (Windows Display Driver Model) pour son interface de requête de luminosité et la prise en charge de l’interface du pilote de périphérique (DDI), qui se trouvent dans l’EDID. Des informations EDID incorrectes ou invalides dans l’EEPROM du moniteur peuvent entraîner des problèmes tels que la définition de modes d’affichage incorrects.

Il existe deux approches pour corriger les EDID :

  • 1. Demander au client de renvoyer le moniteur au fabricant, qui reprogramme l’EEPROM avec l’EDID correct et renvoie le moniteur au client.
  • 2. Mettre en œuvre un fichier INF qui contient les informations EDID correctes et demander au client de le télécharger sur l’ordinateur connecté au moniteur. Windows extrait les informations EDID mises à jour du fichier INF et les fournit aux composants au lieu d’utiliser les informations EDID de l’EEPROM, remplaçant ainsi efficacement l’EDID de l’EEPROM. Cette approche plus simple est la meilleure solution pour le fabricant et le client.

En plus de remplacer les informations EDID, un vendeur peut fournir une modification pour le nom du moniteur et la résolution d’affichage préférée. Les clients peuvent souvent accéder à cette modification via Windows Update ou des supports numériques inclus dans la boîte du produit. Cette modification a une priorité supérieure à la modification de l’EDID décrite dans cet article. Pour plus d’informations, consultez Sections du fichier INF du moniteur.

Format EDID

Les données EDID sont formatées en blocs de 128 octets ou plus :

  • Les versions EDID 1.0 à 1.2 consistent en un seul bloc de données, conformément à la spécification VESA.
  • La version EDID 1.3 ou l’EDID amélioré (E-EDID) permet aux fabricants de spécifier un ou plusieurs blocs d’extension en plus du bloc principal.

Chaque bloc est numéroté, en commençant par 0 pour le bloc initial. Pour mettre à jour les informations EDID, l’INF du fabricant spécifie le numéro du bloc à mettre à jour et fournit 128 octets de données EDID pour remplacer le bloc original. Le pilote du moniteur obtient les données mises à jour pour les blocs corrigés à partir du registre et utilise les données de l’EEPROM pour les blocs restants.

Mise à jour d’un EDID

Pour mettre à jour un EDID en utilisant un INF :

  1. Le fabricant du moniteur met en œuvre un INF contenant les informations EDID mises à jour et télécharge le fichier sur l’ordinateur de l’utilisateur. Ce téléchargement peut se faire via Windows Update ou en fournissant un CD avec le moniteur.
  2. L’installation du périphérique lit les informations EDID mises à jour depuis l’INF et stocke les informations sous forme de valeurs dans la clé matérielle du périphérique du moniteur. Chaque modification d’EDID est stockée sous une clé distincte dans la clé matérielle du périphérique.
  3. Le pilote du moniteur vérifie le registre lors de l’initialisation et utilise toutes les informations EDID stockées dans le registre au lieu des informations correspondantes sur l’EEPROM. Les informations EDID ajoutées au registre prennent toujours la priorité sur les informations EDID de l’EEPROM.
  4. Les composants Windows et les applications en mode utilisateur utilisent les informations EDID mises à jour.

Remplacer un EDID avec un INF

Pour remplacer un EDID, incluez une directive AddReg dans l’INF pour chaque bloc que vous souhaitez remplacer, dans le format suivant :

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

Le numéro du bloc est une valeur à indice zéro du bloc EDID à remplacer. Les octets de données doivent être formatés sous la forme de 128 entiers hexadécimaux contenant les données binaires EDID. La valeur « 0x1 » après le numéro du bloc est un indicateur qui indique que cette valeur de registre contient des données binaires (FLG_ADDREG_BINVALUETYPE).

Les fabricants doivent mettre à jour uniquement les blocs EDID incorrects. Le système obtient les blocs restants depuis l’EEPROM. L’exemple suivant montre les sections pertinentes d’un INF qui met à jour les blocs EDID 0, 4 et 5. Le pilote du moniteur obtient les blocs 1 à 3 et tous les blocs d’extension suivants après le bloc 5 depuis l’EEPROM :

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

Pour plus d’informations sur les INF en général, et sur AddReg et DDInstall en particulier, consultez Création d’un fichier INF.

Exemple de fichier INF : Monsamp.inf

Pour des informations sur la façon d’utiliser et de modifier Monsamp.inf, consultez Sections du fichier INF du moniteur.

; 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"