2025-04-27 07:49:33 -04:00

85 lines
4.2 KiB
HTML

<html>
<head>
<title>Newdisp </title>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
</head>
<body>
<h1>Newdisp - Windows NT 5.0 Display Driver Tool<font SIZE="2"><b></h1>
<p>Newdisp</b> is a tool that provides two capabilities: it can be used to dynamically
reload a GDI display driver without rebooting, and it can be used to adjust the maximum
graphics acceleration level that the system allows the display driver to do.</p>
<p>(After NT 5.0 Beta Two, a slider control will be added to the control panel video
applet to allow users to control the acceleration level via the user interface, as is done
in Windows 95 and Windows 98. The <b>newdisp</b> tool is useful for allowing this value to
be set by testing automation.)</p>
<p>To run <b>newdisp</b>, first close all Direct3D and OpenGL applications. Then invoke it
as follows, with an optional acceleration level parameter:</p>
<b>
<p>newdisp [-Ln]</p>
<blockquote>
<blockquote>
<p>n</b> is the optional maximum graphics acceleration level that the system will allow.
It may be any of the following values:</p>
<b><blockquote>
<blockquote>
</b><p>0 - All display driver accelerations are permitted;</p>
<p>1 - DrvSetPointerShape and DrvCreateDeviceBitmap are disabled;</p>
<p>2 - In addition to 1, more sophisticated GDI accelerations are disallowed, including
DrvStretchBlt, DrvFillPath, DrvGradientFill, DrvLineTo, DrvAlphaBlend, and
DrvTransparentBlt;</p>
<p>3 - In addition to 2, all DirectDraw and Direct3D accelerations are disallowed;</p>
<p>4 - In addition to 3, almost all GDI accelerations are disallowed, except for solid
color fills, DrvCopyBits, DrvTextOut, and DrvStrokePath. DrvEscape is disabled;</p>
<p>5 - No hardware accelerations are allowed at all. The driver will only be called to do
blts from a system memory surface to the screen.</p>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<p>Every time <b>newdisp</b> is invoked, it will reload the GDI display driver. In this
way, the display driver can be updated without rebooting, by copying the new driver to the
<i>\system32 </i>directory and invoking <b>newdisp</b>. This capability is intended only
for easing the burden of display driver development, so that during development reboots
aren&#146;t needed as frequently when updating display driver code.</p>
<p>Note that <b>newdisp </b>does not currently cause the miniport to be reloaded.
Consequently, if the miniport is changed, the system will still have to be rebooted.</p>
<p>&nbsp;<b></p>
<p>Newdisp</b> accomplishes the dynamic reload by doing the following, assuming that no
driver references exist at the time of invocation. First, it does a ChangeDisplaySettings
call to 640x480x16 colors, which causes the system to load and run the 16 color VGA
display driver .DLL, and at the same causes the old display driver .DLL to be unloaded
from memory<i><b>. </b></i>Then, <b>newdisp</b> immediately does a ChangeDisplaySettings
call back to the original mode, which causes the new display driver .DLL to be loaded from
<i>\system32</i> directory, and the 16 color VGA display driver .DLL to be unloaded.</p>
<p>A reference to the driver instance will exist if the driver has active Direct3D,
WNDOBJ, or DRIVEROBJ objects. When <b>newdisp</b> is run while a reference to the driver
instance exists, the old display driver .DLL will never be unloaded, and correspondingly
the new display driver .DLL will never be loaded. </p>
<p>Thus, by copying an updated version of the display driver .DLL to the <i>\system32</i>
directory and then invoking <b>newdisp</b>, the display driver is reloaded without having
to wait for a reboot.</p>
<p>&nbsp;<b></p>
<p>Newdisp </b>relies on dynamic driver loading functionality that has been added to NT
5.0 to reload the driver, and consequently will not work on NT 4.0 or older systems. It
will also not work if the VGA driver cannot be loaded on the graphics device, or if the
native display driver supports a mode of 640x480x16 colors, instead of letting that mode
be handled by the VGA driver.</font></p>
</body>
</html>