Expand Minimize

VideoPortDDCMonitorHelper function

Queries a monitor for EDID information using the DDC protocol.

Syntax


BOOLEAN VideoPortDDCMonitorHelper(
  _In_     PVOID HwDeviceExtension,
  _In_     PVOID DDCControl,
  _Inout_  PUCHAR EdidBuffer,
  _In_     ULONG EdidBufferSize
);

Parameters

HwDeviceExtension [in]

A pointer to the miniport driver's device extension.

DDCControl [in]

A pointer to a DDC_CONTROL structure.

EdidBuffer [in, out]

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 [in]

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 I2C specification, but must call back into the video miniport driver to read and write individual data bits to the I2C serial clock and data lines.

The four functions, implemented by the video miniport driver, that read and write individual bits to the I2C 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

Version

Available in Windows 2000 and later versions of the Windows operating systems.

Header

Video.h (include Video.h)

Library

Videoprt.lib

DLL

Videoprt.sys

IRQL

PASSIVE_LEVEL

See also

I2C Functions
HwVidGetVideoChildDescriptor
ReadClockLine
ReadDataLine
WriteClockLine
WriteDataLine

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft