112 lines
4.5 KiB
HTML
112 lines
4.5 KiB
HTML
<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>
|