Problems with Windows 7 parsing MCCS information

Symptoms

Displays that are MCCS compliant provide an MCCS capability string to be read and parsed by the system to provide information about that display through GetMonitorCapabilities API. The VESA Monitor Control Command Set Version 2.2a Standard provides a sample string as follows:

Prot(display) type(lcd) model(xxxxx) cmds(xxxxx) vcp(02 03 10 12 C8 DC(00 01 02 03 07) DF) mccs_ver(2.2) window1(type (PIP) area(25 25 1895 1175) max(640 480) min(10 10) window(10)) vcpme(10(Brightness))

This string would not be parsed correctly with the current parser in Windows 7 and GetLastError will return an error - STATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING

"The monitor returned a DDC/CI capabilities string which did not comply with the ACCESS.bus 3.0, DDC/CI 1.1, or MCCS 2 Revision 1 specification."

Cause

This is caused by some overly restrictive rules in the parser that are not required in the specification.

Resolution

To work around these restrictions, the display firmware would need to follow some more restrictive criteria to be properly parsed by the system.

1. The string must be encapsulated in parentheses

2. Each header must not be preceded by a space after the ending parentheses of the previous header

3. Windows 7 supports only MCCS versions 1.0, 2.0, and 2.1. Any reported versions other than those will not be parsed correctly and would return an error and GetLastError will return ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION. 

4. The display firmware needs to ensure that the version reported in the capability string matches the version info returned by GetVCPFeatureAndVCPFeatureReply() or else the system will return an error and GetLastError will return ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH error.


Rekvizīti

Raksta ID: 2515532. Pēdējo reizi pārskatīts: 2011. gada 28. febr.. Pārskatījums: 1

Atsauksmes