Cloning a display is tricky, under XP. Here is a quotation by "Camford" from StackOverflow:

"Windows XP and earlier uses a different display driver model (XPDM) from Vista and later (WDDM). Mirroring on XPDM depends very much on your graphics card vendor. The general idea is that for extending the desktop, you provide an extend driver; for mirroring a portion of the desktop, you provide a mirror driver.

In most cases, each extend driver is responsible for one output on your graphics card. Let's say that you have a dual DVI card, then you should see two extend drivers in your Device Manager, each is responsible for one of the DVI port. When you want to set your monitor to extend the desktop, you enable the extend driver and give it a sensible location.

Mirroring is trickier. This is where the behaviour can vary a bit between the different card vendors. From the perspective of the OS, this is what's happening. The extend driver associated with the graphics card port is disabled. The mirror driver is enabled if it was not enabled already. The mirror driver is then placed at (0, 0). Then some trickery happens inside your graphics card/driver and the monitor is showing what's inside the mirror driver's screen buffer.

In order to set a monitor into mirror mode on XPDM, you need find the extend driver it's currently showing stuff from and disable it. This may be all you have to do. Some of the vendors will automatically do the rest for you and start mirroring the primary display. Some vendors will do whatever your monitor was doing last before it was put into extend mode. If you find your monitor not showing anything, you can try to enable the mirror driver. If you manage to find the mirror driver and enable it, what happens after is anyone's guess. There isn't a universal way to wire up a monitor to a mirror driver.

I totally agree with this. My research has led me to exact same answer, and it completely depends of graphics card.

For that purpose, my plan is next:
  • Wrap up NVAPI into a C# class, that takes care of NVIDIA specific stuff. It should take care of a lot of nVIDIA cards hopefully.
  • See what ADL(AMD Display library) provides, and perhaps wrap that too. This should take care of ATI cards.
  • Check what Intel Media SDK offers.

Last edited Apr 22, 2013 at 6:06 PM by ertichris, version 1


No comments yet.