本文介绍供应商和制造商如何使用 INF 文件替代任何监视器的扩展显示标识数据 (EDID)。 它还包括示例 INF 文件 (Monsamp.inf)。
EDID 是一种元数据格式,显示器使用这种格式将显示器的功能传达给视频源设备,比如图形卡等设备。 它包含监视标识符、制造商数据、硬件标识符、计时信息等信息。 监视器的 EEPROM 以 VESA 指定的格式存储此数据。 所有显示器(无论是模拟还是数字)都必须支持 EDID。
监视器为 Windows 组件、显示驱动程序和一些用户模式应用程序提供 EDID。 例如,在初始化过程中,监视器驱动程序向 Windows 显示驱动程序模型 (WDDM) 驱动程序查询 EDID 中的亮度查询接口和设备驱动程序接口 (DDI) 支持。 监视器 EEPROM 上不正确或无效的 EDID 信息可能会导致设置不正确的显示模式等问题。
可以通过两种方式更正 EDID:
- 让客户将监视器发送回制造商,该制造商使用正确的 EDID 重新刷新 EEPROM,并将监视器退还给客户。
- 实现一个包含正确 EDID 信息的 INF 文件,并让客户将其下载到连接到显示器的计算机上。 Windows 从 INF 中提取更新的 EDID 信息,并将其提供给组件,而不是使用 EEPROM EDID 信息,从而有效地替代 EEPROM EDID。 这种更简单的方法对制造商和客户来说都是更好的解决方案。
除了替换 EDID 信息之外,供应商还可以提供监视器名称和首选显示分辨率的替代。 客户可以经常通过 Windows 更新或包装箱中的数字媒体访问此替代。 此替代的优先级高于本文中所述的 EDID 替代。 有关详细信息,请参阅监视 INF 文件部分。
EDID 格式
EDID 数据被格式化为一个或多个 128 字节的块:
- 根据 VESA 规范,EDID 版本 1.0 至 1.2 由单个数据块组成。
- EDID 版本 1.3 或增强型 EDID (E-EDID) 允许制造商在主块之外指定一个或多个扩展块。
每个块都有编号,初始块从 0 开始。 为了更新 EDID 信息,制造商的 INF 指定了要更新的块的编号,并提供 128 字节的 EDID 数据来替换原始块。 监视器驱动程序从注册表中获取已更正块的更新数据,并使用 EEPROM 数据处理其余块。
更新 EDID
若要使用 INF 文件更新 EDID,请执行以下步骤:
- 监视器制造商创建一个 INF 文件,其中包含更新的 EDID 信息,并将该文件下载到用户的计算机上。 此下载可以通过 Windows 更新进行,也可以通过监视器传送 CD。
- 设备安装从 INF 文件中读取更新的 EDID 信息,并将信息存储为监视器设备 的硬件密钥 下的值。 每个 EDID 替代都存储在设备硬件键下的单独键下。
- 监视器驱动程序在初始化期间检查注册表,并使用存储在其中的任何 EDID 信息,而不是 EEPROM 上的相应信息。 添加到注册表的 EDID 信息始终优先于 EEPROM EDID 信息。
- Windows 组件和用户模式应用使用更新后的 EDID 信息。
使用 INF 替代 EDID
若要重写 EDID,请在要重写的每个块的 INF 文件中包括 AddReg 指令 ,格式如下:
HKR, EDID_OVERRIDE, BlockNumber, 0x1, Byte 1, Byte 2, Byte 3, Byte 4,...
块编号是要替代的 EDID 块的零索引值。 数据字节应格式化为包含二进制 EDID 数据的 128 个十六进制整数。 块编号后的“0x1”值是一个标志,指示此注册表值包含二进制数据 (FLG_ADDREG_BINVALUETYPE)。
制造商必须只更新那些不正确的 EDID 块。 系统从 EEPROM 获取剩余块。 以下示例显示更新 EDID 块 0、4 和 5 的 INF 文件的相关部分。 监视器驱动程序从 EEPROM 获得块 1-3 和块 5 之后的任何扩展块:
[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
...
有关 INF 的详细信息,特别是 AddReg 和 DDInstall,请参阅创建 INF 文件。
示例 INF 文件:Monsamp.inf
有关如何使用和修改 Monsamp.inf 的信息,请参阅监视 INF 文件部分。
; 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"