Monitor Class Function Driver

Each video output on the display adapter that has a monitor connected to it is represented by a device node that is a child of the display adapter's device node.

Typically, there are only two device objects in the device stack that represent a (video output, monitor) pair: the physical device object (PDO) and the functional device object (FDO). In some cases, there is a filter DO, associated with a vendor-supplied filter driver, above the FDO. For integrated monitors, such as the built-in flat panel on a laptop computer, there might be a filter DO, associated with the Advanced Configuration and Power Interface (ACPI) driver, above the PDO.

The following table shows the device stack for a video output that has a connected monitor.

Device object Required/Optional Driver

Filter DO

Optional, typically not needed

Filter driver supplied by monitor vendor



Monitor class function driver (Monitor.sys) supplied by Microsoft

Filter DO

Required only for integrated ACPI display panels

ACPI driver (Acpi.sys) supplied by Microsoft



Bus driver (display miniport/port pair) supplied by display adapter vendor

User-mode applications use WMI to invoke the services of the monitor class function driver. Those services include exposing a monitor's identification data and (in the case of an ACPI display) setting the brightness of the display.

A monitor stores its identification and capability information in an Extended Display Identification Data (EDID) structure. A request, from a user-mode application, to read a monitor's EDID is processed by the function driver (Monitor.sys) in that monitor's device stack. When the monitor function driver receives a request to retrieve the monitor's EDID, it sends a request to the display port/miniport driver pair that is represented by the physical device object (PDO) at the bottom of the monitor's device stack. The display port/miniport driver pair uses the Display Data Channel (DDC) protocol to read the monitor's EDID over the I²C bus, which is a simple two-wire bus built into all standard monitor cables.

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.

For more information about communication between display adapters and monitors, see the following topics:

I2C Bus and Child Devices of the Display Adapter

I2C Functions

I2C Functions Implemented by the Video Port Driver

For details about EDID structures and the DDC protocol, see the following standards published by the Video Electronics Standards Association (VESA):

  • Enhanced Display Data Channel Standard

  • Enhanced EDID Standard

For details about the I²C bus, see the I²C Bus Specification published by Philips Semiconductors.

Send comments about this topic to Microsoft