<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>To install</title>
</head>
<body>
<p>To install:<br>
<br>
1. Copy mirror.dll to %winnt%\system32, mirror.sys to %winnt%\system32\drivers</p>
<p><br>
2. These are added during .inf file installation:<br>
Sets registry values (where '#' is a
number):<br>
HKLM\System\CurrentControlSet\Services\mirror<br>
device#\Device Description "Microsoft Mirror Driver" (SZ)<br>
device#\Installed Display Drivers "mirror" (MULTI_SZ)<br>
device#\MirrorDriver 0x1 (DWORD)<br>
device#\xxx possibly other keys<br>
enum\xxx keys for enumerating devices<br>
<br>
3. When invoking the mirrored driver on a mirrored device:</p>
<blockquote>
<p><br>
To change the settings for your mirrored device, you must know the
'\\.\DISPLAY#' name<br>
associated with your mirrored display. In the case of multiple instances, '#'
will be<br>
a different number. This can be found by iterating through the available
display devices<br>
using EnumDisplayDevices(). For reference/testing only, this information can
be<br>
found under the following key:<br>
<br>
HKLM\Hardware\DeviceMap\Video<br>
<br>
To attach the mirrored device to the desktop pdev list, you must add a
registry value<br>
'Attach.ToDesktop' = 0x1. Subsequent ChangeDisplaySettings() will then
dynamically load<br>
the mirrored display driver for use.<br>
<br>
HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\<br>
Services\mirror [where 'mirror' is
short name of mirrored surface]<br>
device#\Attach.ToDesktop
0x1 (DWORD)<br>
<br>
To disable the attachment, set 'Attach.ToDesktop' to 0x0. Otherwise your
driver will<br>
invoked again at boot up time. There are also other Default.Settings values
saved under<br>
this key, use ChangeDisplaySettings() with dwFlags=CDS_UPDATEREGISTRY to
properly save<br>
them.<br>
<br>
To create a DC, device managed bitmap, etc. using the mirrored surface, use
the<br>
ordinary GDI APIs. To create the DC specify, use the following:<br>
<br>
HDC hdc = CreateDC("DISPLAY", // driver name<br>
deviceName, // example 'mirror' device name<br>
NULL,<br>
NULL);<br>
<br>
See DDK sample for a working demonstration.</p>
</blockquote>
<p><br>
Minimum requirements for barebones mirrored display driver:<br>
<br>
DrvEnableDriver [exported]<br>
DrvEnablePDEV<br>
DrvCompletePDEV<br>
DrvDisablePDEV<br>
DrvEnableSurface<br>
DrvDisableSurface<br>
DrvBitBlt<br>
DrvCopyBits<br>
DrvCreateDeviceBitmap<br>
DrvDeleteDeviceBitmap<br>
DrvTextOut<br>
<br>
Minimum requirements for barebones mirrored miniport driver:<br>
<br>
DriverEntry [exported]<br>
HwFindAdapter<br>
HwInitialize<br>
HwStartIO<br>
<br>
Since there is no physical display device associated with a mirrored surface,
these routines<br>
can return positive results.<br>
</p>
</body>
</html>