VideoPortDDCMonitorHelper function

Queries a monitor for EDID information using the DDC protocol.

Syntax

VIDEOPORT_API BOOLEAN VideoPortDDCMonitorHelper(
  IN PVOID      HwDeviceExtension,
  IN PVOID      DDCControl,
  IN OUT PUCHAR EdidBuffer,
  IN ULONG      EdidBufferSize
);

Parameters

HwDeviceExtension

A pointer to the miniport driver's device extension.

DDCControl

A pointer to a DDC_CONTROL structure.

EdidBuffer

A pointer to a buffer in which the video port driver returns the EDID structure. For ACPI devices, the first four bytes are preset by the video port driver to indicate an attempt to read the EDID.

EdidBufferSize

The size in bytes of the buffer to which EdidBuffer points.

Return Value

VideoPortDDCMonitorHelper returns TRUE if successful.

Remarks

Note  

This function existed prior to the Windows XP release, but has been changed.

The video miniport driver's HwVidGetVideoChildDescriptor function can call VideoPortDDCMonitorHelper for assistance in reading the EDID structure from a DDC2-compliant monitor. VideoPortDDCMonitorHelper implements the details of reading the EDID structure according to the I²C specification, but must call back into the video miniport driver to read and write individual data bits to the I²C serial clock and data lines.

The four functions, implemented by the video miniport driver, that read and write individual bits to the I²C clock and data lines are ReadClockLine, ReadDataLine, WriteClockLine, and WriteDataLine. When the video miniport driver calls VideoPortDDCMonitorHelper, it supplies pointers to those four functions in DDCControl->I2CCallbacks.

The EDID can be obtained using the ACPI_METHOD_OUTPUT_DDC method whose alias is defined in Dispmprt.h. This method is required for integrated LCDs that do not have another standard mechanism for returning EDID data.

In a 256-byte buffer, a caller of this function can receive:

  • One 128-byte EDID
  • Two 128-byte EDIDs
  • One 256-byte EDID (from P&D display)
  • No EDID

The caller should always ask for the full 256 bytes, because it is impossible to read just the second 128-byte block of the segment.

 

Requirements

   
Minimum supported client Available in Windows 2000 and later versions of the Windows operating systems.
Target Platform Desktop
Header video.h (include Video.h)
Library Videoprt.lib
DLL Videoprt.sys
IRQL PASSIVE_LEVEL

See Also

HwVidGetVideoChildDescriptor

I2C Functions

ReadClockLine

ReadDataLine

WriteClockLine

WriteDataLine