Reading the EDID for the Current Monitor

Your display driver or mini-VDD can use the EDID structure returned to the VDD at boot time by retrieving this structure from the registry. This can be done once your display driver (or mini-VDD) has called VDD_GET_DISPLAY_CONFIG (or VDD_GetDisplayInfo if your mini-VDD is issuing the call from ring 0). To retrieve the EDID for the current monitor:

1. Get and save the diMonitorDevNodeHandle member of the DISPLAYINFO structure.

2. Call CONFIGMG_Read_Registry_Value. Make sure that you have CONFIGMG.INC in your include directory. The parameters for the call should be as follows:

Parameter

Value

dnDevNode

diMonitorDevNodeHandle retrieved from the DISPLAYINFO

pszSubKey

NULL (no subkey needed)

pszValueName

A pointer to the ASCIIz string "EDID"

ulExpectedType

REG_BINARY

Buffer

A pointer to a 128 byte buffer (the EDID plus the null terminator) which will receive the EDID data back

pulLength

Size of Buffer (129 bytes or longer)

ulFlags

CM_REGISTRY_HARDWARE


If CONFIGMG_Read_Registry_Value returns CR_SUCCESS, the EDID structure for the current monitor will be in your Buffer, available for use by your driver or mini-VDD to determine appropriate timings from it.

If the call fails, then there is no EDID structure for the monitor present in the registry. In this case your driver should use an alternate means for setting monitor timings.