home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1991-03-01 | 95.8 KB | 1,935 lines
%@1@%%@AB@%Microsoft Windows Device Development Kit - Installation and Update%@EH@% %@AB@%Guide - %@AE@%%@NL@% ────────────────────────────────────────────────────────────────────────────%@NL@% %@AB@%Microsoft (R) Windows (tm) Device Development Kit - Installation and Update %@AB@%Guide - %@AE@%%@NL@% %@AB@%development tools for providing Microsoft Windows device support %@AB@%VERSION 3.0%@AE@% ────────────────────────────────────────────────────────────────────────────%@NL@% for the MS-DOS (R) or PC-DOS Operating System%@NL@% Microsoft Corporation %@NL@% Information in this document is subject to change without notice and does not represent a commitment on the part of Microsoft Corporation. The software described in this document is furnished under a license agreement or nondisclosure agreement. The software may be used or copied only in accordance with the terms of the agreement. It is against the law to copy the software on any medium except as specifically allowed in the license or nondisclosure agreement. No part of this manual may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying and recording, for any purpose without the express written permission of Microsoft. U.S. Government Restricted Rights The SOFTWARE and documentation are provided with RESTRICTED RIGHTS. Use, duplication, or disclosure by the Government is subject to restrictions as set forth in subparagraph (c) (1) (ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013 or subparagraphs (c) (1) and (2) of the Commercial Computer Software ─ Restricted Rights at 48 CFR 52.227-19, as applicable. Contractor/manufacturer is Microsoft Corporation/One Microsoft Way/Redmond, WA 98052-6399.%@NL@% (C) Copyright Microsoft Corporation, 1990. All rights reserved. Simultaneously published in the U.S. and Canada.%@NL@% Printed and bound in the United States of America.%@NL@% Microsoft, MS, MS-DOS, GW-BASIC, QuickC, CodeView, the Microsoft logo, and XENIX are registered trademarks and Windows, Windows/286, and Windows/386 are trademarks of Microsoft Corporation.%@NL@% AT&T is a registered trademark of American Telephone and Telegraph Company.%@NL@% COMPAQ is a registered trademark of Compaq Computer Corporation.%@NL@% Epson is a registered trademark of Epson America, Inc.%@NL@% Hercules is a registered trademark of Hercules Computer Technology.%@NL@% HP, LaserJet, and PCL are registered trademarks of Hewlett-Packard Company.%@NL@% IBM is a registered trademark of International Business Machines Corporation.%@NL@% Intel is a registered trademark and 386 is a trademark of Intel Corporation.%@NL@% Paintbrush is a registered trademark of Zsoft Corporation.%@NL@% PostScript is a registered trademark of Adobe Systems, Inc.%@NL@% Video Seven is a trademark of Headland Technology, Inc.%@NL@% The Symbol fonts provided with Windows 3.0 are based on the CG Times font, a product of AGFA Compugraphic Division of Agfa Corporation.%@NL@% Document No. SY0324-300-R00-1089 %@NL@% %@NL@% %@AB@%Chapter 1%@AE@%%@BO: 1d64@% %@AB@%Overview of the Windows 3.0 DDK%@AE@% 1.1%@BO: 21da@% New Features in Windows 3.0 1.2%@BO: 2792@% Changes in the New DDK 1.3%@BO: 2b00@% Contents of the Device Development Kit 1.4%@BO: 3ad6@% Where to Look in the DDK Documentation Set %@AB@%Chapter 2%@AE@%%@BO: 4a0b@% %@AB@%Deciding on Whether or Not to Update%@AE@% 2.1%@BO: 4bb0@% Updating 2.x Drivers to Run Under Windows 3.0 2.2%@BO: 582f@% Updating Windows/386 2.x Virtual Devices to Run Under Windows 3.0 386 Enhanced Mode %@AB@%Chapter 3%@AE@%%@BO: 5f3d@% %@AB@%Required Development Environment%@AE@% 3.1%@BO: 6389@% Languages and Other Tools 3.2%@BO: 6828@% Recommended Hardware 3.3%@BO: 6b3d@% Updating the CONFIG.SYS and AUTOEXEC.BAT Files 3.4%@BO: 6cbd@% Special Tools 3.5%@BO: 709e@% Libraries 3.6%@BO: 73d2@% INCLUDE Files 3.7%@BO: 7e3a@% Special INCLUDE Files For Building Virtual Devices 3.8%@BO: 81ed@% Special Tools For Building Virtual Devices 3.9%@BO: 88bb@% Summary List of Special Files %@AB@%Chapter 4%@AE@%%@BO: 9106@% %@AB@%Recommended Development Process%@AE@% 4.1%@BO: 92be@% Copy All Required Tools and Sources To Your Hard Disk 4.2%@BO: 9505@% Familiarize Yourself With the Debugging Tools 4.3%@BO: 984c@% Build a Sample Driver 4.4%@BO: a098@% Use the Test Applications 4.5%@BO: a40c@% Create a Distribution Disk %@AB@%Chapter 5%@AE@%%@BO: a60d@% %@AB@%System Setup and Tools Installation%@AE@% 5.1%@BO: a872@% Copy the Required Files From the Disks 5.2%@BO: b0d6@% Expand the Compressed Files to Their Normal Size 5.3%@BO: b51c@% Other Considerations 5.4%@BO: ba3a@% Checking Your Tools Setup %@AB@%Chapter 6%@AE@%%@BO: bea9@% %@AB@%Windows 3.0 Device Driver Sources%@AE@% 6.1%@BO: ce3f@% Display Driver Sources 6.1.1%@BO: d212@% 1-Plane Drivers: CGA, EGA Monochrome, EGA High Resolution B&W, Hercules, Plasma,and MCGA%@AI@%%@AE@% 6.1.2%@BO: da68@% 4-Plane Drivers: EGA and VGA 6.1.3%@BO: e202@% 8-Plane Drivers: Video Seven VGA and 8514/a%@AI@%%@AE@% 6.1.4%@BO: ea46@% Windows Real and Standard Mode Grabbers 6.1.5%@BO: ef93@% System Font Sources 6.2%@BO: ff5a@% Display Driver Test Applications 6.3%@BO: 1033b@% Printer Driver Sources 6.3.1%@BO: 105bc@% PCL/HP LaserJet Printer Driver%@AI@%%@AE@% 6.3.2%@BO: 10fbd@% PostScript Printer Driver 6.3.3%@BO: 11b7a@% Raster Driver Sample Sources 6.4%@BO: 1203d@% Printer Driver Test Applications 6.5%@BO: 12435@% Keyboard Driver Sources 6.6%@BO: 12946@% Mouse Driver Sources 6.7%@BO: 12c60@% COMM Driver Sources 6.8%@BO: 12ff5@% Sound Driver Sources 6.9%@BO: 132e5@% Network Driver Sources 6.10%@BO: 135f6@% Network Driver and HCT Test Applications %@AB@%Chapter 7%@AE@%%@BO: 13a8e@% %@AB@%Windows 3.0 Virtual Device Sources%@AE@% 7.1%@BO: 14709@% The Display Devices (CGA, EGA, VGA, 8514/a, HERC) 7.2%@BO: 14eb6@% The Display/Windows Interface (GRABBER) 7.3%@BO: 1579b@% The DMA Device (VDMAD) 7.4%@BO: 15b77@% The EBIOS Device (EBIOS) 7.5%@BO: 15e5d@% The Hard Disk Device (VHD) 7.6%@BO: 160bb@% The Keyboard Device (VKD) 7.7%@BO: 16342@% The Mouse Device (VMD) 7.8%@BO: 1653a@% The NetBIOS Device (VNETBIOS) 7.9%@BO: 16914@% The Local DOS Network Device (LDOSNET) 7.10%@BO: 1706a@% The BIOS Device (BIOSXLAT) 7.11%@BO: 17355@% The Paging Device (PAGESWAP) 7.12%@BO: 17553@% The Printer Device (VPD) 7.13%@BO: 177ee@% The COMM Device (VCD) 7.14%@BO: 17a47@% The COM Buffer Device (COMBUFF) 7.15%@BO: 17cf1@% The Floppy Drive Device (VFD) %@CR:C6A00010001 @%%@1@%%@AB@%Chapter 1 Overview of the Windows 3.0 DDK%@AE@%%@EH@%%@NL@% %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@% The %@AI@%Microsoft%@AE@%(R) Windows(tm) Device Development Kit (DDK) provides documentation and sample sources to assist you in developing the features you may want to support in your Microsoft Windows 3.0 device drivers and/or virtual devices. Along with this DDK, you must purchase the %@AI@%Microsoft %@AI@%Windows Software Development Kit%@AE@% (SDK) and the retail Windows 3.0 software. We recommend you review the SDK documentation and install the software in that kit before installing the DDK. The SDK also contains some of the Windows tools you will need to build your driver. %@NL@% The primary objective of the Windows 3.0 DDK is to provide you with the updated tools and sample sources required to do the following: %@NL@% ■ Test, debug, and modify existing 2.x drivers to work properly under Windows 3.0.%@NL@% ■ Develop a 3.0 driver that takes advantage of the new features provided only in Windows 3.0. %@NL@% %@2@%%@CR:C6A00010002 @%%@AB@%1.1 New Features in Windows 3.0%@AE@%%@EH@%%@NL@% Windows 3.0 provides many enhancements over previous versions and added features. This section summarizes the major changes to the Windows environment. For further information on each item, refer to the documentation provided with the %@AI@%Microsoft Windows Software Development Kit%@AE@% (SDK). %@NL@% ■ A new user shell, file manager, and enhanced accessory programs%@NL@% ■ The ability to run in protected mode, which gives applications direct access to extended memory%@NL@% ■ The swapping of memory pages to and from disk, which enables the 386(tm) enhanced mode of Windows to provide more virtual memory than is physically available%@NL@% ■ Color palette management, which enables applications to take full advantage of the color capabilities of a device%@NL@% ■ Device-independent color bitmap support%@NL@% ■ The availability of device-independent icons and cursors by automatically selecting the appropriate device-specific image from a set of images provided by the application%@NL@% ■ Improved network support%@NL@% ■ Changes to the application user interface, including the addition of new dialog box controls, new menu types, and a more attractive system font%@NL@% ■ Additional fonts for higher resolution displays, such as the 8514/a, and for math symbols%@NL@% %@2@%%@CR:C6A00010003 @%%@AB@%1.2 Changes in the New DDK%@AE@%%@EH@%%@NL@% The 3.0 version of the %@AI@%Microsoft Windows Device Development Kit%@AE@% is substantially different from the previous version. The following list highlights the changes: %@NL@% ■ The Windows/286(tm) Device Driver Kit (DDK) and the Windows/386(tm) Binary Adaptation Kit (BAK) have been combined into one %@AI@%Microsoft %@AI@% Windows Device Development Kit%@AE@% (DDK).%@NL@% ■ All the files provided on the DDK disks are compressed and must be expanded before using.%@NL@% ■ Additional sources have been provided on the disks.%@NL@% ■ The documentation is more extensive and totally reorganized.%@NL@% ■ Areas of duplication have been minimized by making numerous references to the %@AI@%Microsoft Windows Software Development Kit%@AE@%.%@NL@% %@2@%%@CR:C6A00010004 @%%@AB@%1.3 Contents of the Device Development Kit%@AE@%%@EH@%%@NL@% The 3.0 version of the %@AI@%Microsoft Windows Device Development Kit%@AE@% now consists of the following: %@NL@% ■ %@AI@%Microsoft Windows Device Driver Adaptation Guide%@AE@%, which covers how to write or modify device drivers for Windows 3.0.%@NL@% ■ %@AI@%Microsoft Windows Virtual Device Adaptation Guide%@AE@%, which covers how to write virtual devices for Windows 3.0 when running in 386 enhanced mode.%@NL@% ■ %@AI@%Microsoft Windows Installation and Update Guide%@AE@%, which provides information on the source code, test scripts, utilities, and building tools provided with the DDK and the development environments required for Windows 3.0 when running in either real, standard, or 386 enhanced mode. %@NL@% ■ %@AI@%Microsoft Windows Printers and Fonts Kit%@AE@%, which includes information on the Printer Font and Cartridge Metrics (PFM and PCM) file formats and the new PFM Editor, along with technical notes on the PCL(R)/HP(R) LaserJet(R) and PostScript(R) printer drivers. %@NL@% ■ Windows 3.0 driver and font sources:%@NL@% %@STUB@% 1-plane mode (2 colors) display drivers and grabbers for CGA, Hercules(R), Compaq(R) Plasma, IBM(R) MCGA, EGA high resolution black and white, and EGA monochrome displays%@NL@% %@STUB@% 4-plane mode (16 colors) display drivers and grabbers for EGA high resolution and VGA displays%@NL@% %@STUB@% 8-plane mode (256 colors) display drivers and grabbers for the Video Seven(tm) VGA and 8514/a displays%@NL@% %@STUB@% Printer drivers for the PCL/HP LaserJet printer (HPPCL) and PostScript printer (PSCRIPT) %@NL@% %@STUB@% Epson(R) 9-pin printer and IBM Color Printer driver sample sources%@NL@% %@STUB@% Mouse drivers for Microsoft bus or serial mouse%@NL@% %@STUB@% COMM driver source for parallel and serial ports (LPT1 - LPT3 and COM1 - COM4)%@NL@% %@STUB@% Sound driver source%@NL@% %@STUB@% Network driver source for Microsoft Network (MS-NET)%@NL@% %@STUB@% IBM AT-style keyboard driver and international keyboard tables%@NL@% %@STUB@% Fonts for CGA, EGA, VGA, and 8514/a resolution, including Windows 3.0 proportional system and Windows 2.x fixed-pitch system fonts%@NL@% ■ 386 enhanced-mode virtual device sources:%@NL@% %@STUB@% CGA, Compaq Plasma, Hercules, EGA, VGA color, VGA monochrome, and 8514/a display (VDD)%@NL@% %@STUB@% CGA, Compaq Plasma, Hercules, EGA, VGA color, VGA monochrome, and 8514/a display/Windows interface (GRABBER)%@NL@% %@STUB@% Mouse pointing device (VMD)%@NL@% %@STUB@% Keyboard device (VKD)%@NL@% %@STUB@% Hard Disk device (VHD)%@NL@% %@STUB@% COMM port device (VCD)%@NL@% %@STUB@% COM Buffer device (COMBUFF)%@NL@% %@STUB@% DMA device (VDMAD)%@NL@% %@STUB@% Printer port device (VPD)%@NL@% %@STUB@% Floppy drive device (VFD)%@NL@% %@STUB@% NetBIOS device (VNETBIOS)%@NL@% %@STUB@% Network device (LDOSNET)%@NL@% %@STUB@% Extended (EBIOS) device (EBIOS)%@NL@% %@STUB@% Memory Page Swapping device (PAGESWAP)%@NL@% %@STUB@% ROM BIOS device (BIOSXLAT)%@NL@% ■ Utilities and building tools:%@NL@% %@STUB@% PFM Editor for PFM and PCM fonts (PFMEDIT.EXE)%@NL@% %@STUB@% PostScript resource tool for creating Windows Printer Description (WPD) files (MKPRN.EXE)%@NL@% %@STUB@% A special version of the C Linker (LINK4.EXE)%@NL@% %@STUB@% MASM 5.10B for 386 virtual devices (MASM5.EXE)%@NL@% %@STUB@% LINK386 for 386 virtual devices (LINK386.EXE)%@NL@% %@STUB@% Special Add Header utility for 386 virtual devices (ADDHDR.EXE)%@NL@% %@STUB@% Special MAPSYM for 386 virtual devices (MAPSYM32.EXE)%@NL@% %@STUB@% Test scripts and files for printers, displays, and networks and for overall hardware compatibility%@NL@% %@2@%%@CR:C6A00010005 @%%@AB@%1.4 Where to Look in the DDK Documentation Set%@AE@%%@EH@%%@NL@% The %@AI@%Microsoft Windows Device Driver Adaptation Guide%@AE@% provides detailed information on the new Windows 3.0 feature support you should consider implementing in your device driver. The sample sources for the device drivers provided on the DDK disks contain additional examples of how to support these new features. See Chapter 6, "Windows 3.0 Device Driver Sources," of this guide for more information on the sample sources. %@NL@% You should review each chapter that applies to your type of device. A complete list with descriptions of each chapter is provided in the "Introduction to Device Drivers." The following is simply an overview of what you will find in the DDK documentation. %@NL@% Chapter 2, "Display Drivers," and Chapter 3, "Display Drivers: New Features," contain new information on writing display drivers and on the new Windows 3.0 features such as: %@NL@% ■ Color-palette management%@NL@% ■ Device-independent bitmaps (DIBs)%@NL@% ■ Greater than (>) 64K font support%@NL@% ■ Running in protected mode%@NL@% ■ Support for new visuals (cursors, icons, and bitmaps)%@NL@% Chapter 5, "Printer Drivers," contains new information on writing printer drivers. One of the major discussions is on device initialization. Two new APIs have been added to Windows 3.0 to give Windows applications the ability to initialize printer settings: %@AB@%ExtDeviceMode()%@AE@% and %@AB@%DeviceCapabilities()%@AE@%. Your printer driver should support these new functions. New printer escapes have also been added (mainly for high end devices) and some have been updated. You should evaluate if your driver needs to support the new escapes or if you need to modify any existing ones. Chapter 11, "Device Driver Escapes," provides descriptions of all the escapes. %@NL@% The Windows 3.0 SDK documentation provides an overview of the new Help system provided under Windows 3.0. You should consider using the Help system for Windows printer and network drivers in place of README.TXT files. The PCL/HP LaserJet and PostScript printer driver sources included in this kit demonstrate the use of the Help manager (the Help button is accessible via the printer dialog box). %@NL@% Chapter 6, "Network Support," and Chapter 7, "Network Drivers," document the new Windows network interface. %@NL@% Chapter 8, "Keyboard Drivers," documents the new keyboard structure supported under Windows 3.0. If you are writing a keyboard driver, you should review this information. %@NL@% Chapter 9, "Miscellaneous Drivers," discusses the sound, communications, and mouse drivers. No new support has been added in the sound and mouse drivers other than modifications to run correctly in protected mode. The COMM driver has been enhanced to support COM1 through COM4 and to run in protected mode. %@NL@% Chapter 10, "Common Functions," contains information on the common functions used by different types of graphics device drivers. You should be sure to review the new enhancements to %@AB@%StretchBlt()%@AE@% if you are writing a display or printer driver. %@NL@% Chapter 16, "Overview of Windows in 386 Enhanced Mode," summarizes how installable virtual devices work under Windows 3.0, but you should read all the chapters in the %@AI@%Microsoft Windows Virtual Device Adaptation Guide%@AE@% for complete details on this new support. %@NL@% A complete reference to all the new virtual device functions and services has been provided in that document's Part 4, "Virtual Device Services." In addition, we have provided on the DDK disks various sample virtual device sources demonstrating the use of the Virtual Machine Manager (VMM) services. See Chapter 7, "Windows 3.0 Virtual Device Sources," of this guide for more information on the sample sources. %@NL@% %@CR:C6A00020001 @%%@1@%%@AB@%Chapter 2 Deciding on Whether or Not to Update%@AE@%%@EH@%%@NL@% %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@% The following two sections provide background information to help you determine whether you will need to write a new device driver and/or virtual device, or simply update your existing 2.x driver and/or virtual device. %@NL@% %@2@%%@CR:C6A00020002 @%%@AB@%2.1 Updating 2.x Drivers to Run Under Windows 3.0%@AE@%%@EH@%%@NL@% Because of the new protected-mode memory model, it will probably be necessary for you to update your device driver to work properly under Microsoft Windows 3.0 when running in standard and 386 enhanced mode (both of which run with the processor in protected mode). Certain coding rules need to be followed to avoid General Protection (GP) violations that stop the execution of Windows. (See the SDK documentation for details on memory management and the rules for protected mode. See also Chapter 3, "Display Drivers: New Features," in the %@AI@%Microsoft Windows Device Driver Adaptation %@AI@%Guide%@AE@%.) Notice that users do have the option of running Windows in real mode to run 2.x level Windows applications and drivers. However, they then lose the additional memory capability of Windows 3.0. %@NL@% When running in protected mode, Windows 3.0 will check each driver loaded to verify that it has been marked for running in protected mode. Windows 3.0 may refuse then to load some 2.x drivers. The display, communications, mouse, sound, system, and keyboard drivers fall into this category because they are integral to the system. If they fail, Windows will crash. %@NL@% When attempting to load Windows with a 2.x driver, an error message is displayed and you are returned to the MS-DOS(R) prompt. However, printer and network drivers are exceptions and are treated similarly to 2.x applications. This is because they are loaded and run only on the behalf of particular applications. Therefore, if the driver fails, only the current application is affected. For example, when a 2.x printer driver is loaded, a warning message dialog box is displayed in Windows. This can occur many times within a work session, depending on the currently active application. %@NL@% With this in mind, it is important for you to evaluate your current level of support and determine which of the following options you choose to follow: %@NL@% 1. Develop a new Windows 3.0 driver that is based on your existing 2.x driver or from the driver samples in this kit and built with the 3.0 tools.%@NL@% %@STUB@% This is the most desirable solution since your driver will be able to take full advantage of the new 3.0 features. The user will also get the full benefit of the Windows product and your hardware device.%@NL@% 2. Test, debug, and mark your existing driver to run under Windows 3.0. However, this is not an option for display or keyboard drivers. This will enable your driver to run under both Windows 2.x and Windows 3.0 in real and protected mode.%@NL@% %@STUB@% The driver should be built with the Windows/286 2.1 DDK tools. Then, you will need to use the MARK utility supplied in the 3.0 SDK to mark your driver for memory use. Notice that drivers built with the 3.0 tools will %@AI@%not%@AE@% run under Windows 2.x.%@NL@% %@STUB@% Although this is not the most desirable option, it does at least give the user the opportunity to run Windows 3.0 with full protected-mode memory support.%@NL@% %@2@%%@CR:C6A00020003 @%%@AB@%2.2 Updating Windows/386 2.x Virtual Devices to Run Under Windows 3.0 386%@EH@% %@AB@%Enhanced Mode%@AE@%%@NL@% Under 386 enhanced mode in Windows 3.0, a new structure for installable virtual device support has been added. The interface for virtual devices is very different from the 2.x versions of Windows/386. All new DDK documentation has been written to cover the new support available in Windows 3.0 when running in 386 enhanced mode. %@NL@% The 2.x versions of Windows/386 virtual devices (VxD) are not compatible with Windows 3.0 when running in 386 enhanced mode because of this new interface. You should evaluate whether or not it is more beneficial for you to convert your existing VxD to the new interface or to start building a new VxD based on the sample sources provided in this kit. This decision will depend on your device and the extent to which you choose to support it. (See Chapter 1, "Overview of Windows," in the %@AI@%Microsoft Windows Device Driver %@AI@%Adaptation Guide%@AE@% for estimates of the time required to write various drivers.) %@NL@% You also need to be aware of the following: %@NL@% ■ The OFFSET32 macro should be used, in place of the standard MASM OFFSET directive, in all virtual device code. This will allow the code to adapt to future versions of the macro assembler. (See Chapter 17, "Virtual Device Programming Topics," in the %@AI@%Microsoft Windows Virtual %@AI@% Device Adaptation Guide%@AE@% for more information on this macro.)%@NL@% ■ The V86 Memory Manager (V86MMGR) services enable real-mode devices to tell 386 enhanced mode about the API they provide and enable a generic virtual device to map these calls between virtual 8086 and protect modes. %@NL@% %@CR:C6A00030001 @%%@1@%%@AB@%Chapter 3 Required Development Environment%@AE@%%@EH@%%@NL@% %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@% The tools and documentation in the Microsoft Windows 3.0 SDK are %@AI@%required%@AE@% for developing device drivers and virtual devices. There are several references to the SDK documentation throughout the DDK. You should plan to review first the documentation provided in the SDK to get a better understanding of the new feature support available in Windows 3.0. The DDK documentation contains additional information on these subjects, as necessary for writing Windows device drivers and virtual devices. When writing 386 enhanced-mode virtual devices, you will need to use the tools available in both the Windows 3.0 SDK and DDK. %@NL@% To get technical assistance while you are developing your driver or virtual device, you can connect to the Microsoft OnLine system. If this is your first time using the system, you should carefully review the Microsoft OnLine documentation before accessing it. %@NL@% %@2@%%@CR:C6A00030002 @%%@AB@%3.1 Languages and Other Tools%@AE@%%@EH@%%@NL@% To produce a Windows 3.0 device driver and/or virtual device, you will need the following languages, tools, and software: %@NL@% ■ Microsoft Macro Assembler (MASM) version 5.10 (for all drivers)%@NL@% ■ Microsoft C Compiler version 6.0 (generally used for printer drivers)%@NL@% ■ Microsoft C Compiler version 5.1 (for those developers who are still using the 5.1 version Compiler, or who want to binary compare files they create with the Compiler with files provided in Windows 3.0). Version 6.0 of the Microsoft C Compiler is the only version now commercially available and so we recommend using it as soon as possible. However, the drivers released in the Windows 3.0 retail product were built with C 5.1.%@NL@% ■ The tools and files included with the %@AI@%Microsoft Windows Device %@AI@% Development Kit%@AE@% and the %@AI@%Microsoft Windows Software Development Kit%@AE@%%@NL@% ■ The Windows 3.0 retail product and various Windows applications (for debugging and testing the more complicated areas of your device)%@NL@% %@2@%%@CR:C6A00030003 @%%@AB@%3.2 Recommended Hardware%@AE@%%@EH@%%@NL@% The following is the minimum hardware configuration recommended for developing Windows 3.0 device drivers and/or virtual devices: %@NL@% ■ A 286- or 386-based computer (with a clock speed of 16 MHz or above)%@NL@% ■ At least 2 megabytes or more of memory (4 megabytes is recommended for 386 enhanced mode)%@NL@% ■ A fast hard disk for your compiler/linker%@NL@% ■ A fully configured EGA or VGA display card (or other device if you are developing a display driver and virtual display device)%@NL@% ■ A debugging terminal connected to your serial port%@NL@% ■ A Microsoft Mouse or any other mouse compatible with Windows%@NL@% ■ A Windows-compatible printer%@NL@% %@2@%%@CR:C6A00030004 @%%@AB@%3.3 Updating the CONFIG.SYS and AUTOEXEC.BAT Files%@AE@%%@EH@%%@NL@% It is important to note that, during the installation of the Microsoft Macro Assembler and Microsoft C Compiler tools, you may need to make some changes to the CONFIG.SYS and AUTOEXEC.BAT files. Consult the reference manuals for these products for the recommended changes. %@NL@% %@2@%%@CR:C6A00030005 @%%@AB@%3.4 Special Tools%@AE@%%@EH@%%@NL@% You may also need the IMPLIB.EXE tool, which is provided with the Microsoft C Compiler, when building the drivers provided in this kit. This tool is %@AI@%not%@AE@% installed automatically when you install the Microsoft C Compiler version 5.1 software. You need to do this manually. However, C 6.0 %@AI@%does%@AE@% install it for you. %@NL@% You will find the LINK4.EXE utility on the Device Driver Samples and Tools disk # 8 (5.25 inch) or 14 (3.5 inch) under the \TOOLS directory. However, we recommend you modify the MAKE files to use the linker provided with your program language software. LINK4.EXE is only provided to help you build the sources with the MAKE files included in this kit. If you choose to use LINK4, you should copy this utility to the \TOOLS directory on your hard disk. This should correspond to the \TOOLS directory you may have set up with your programming language and/or with the SDK. %@NL@% %@2@%%@CR:C6A00030006 @%%@AB@%3.5 Libraries%@AE@%%@EH@%%@NL@% These files are located in the \LIB directory on the Device Driver Samples and Tools disk # 6 (5.25 inch) or 10 (3.5 inch). They consist of four libraries and a subdirectory that are required for writing particular types of device drivers and virtual devices. The other required libraries are provided in the SDK. %@NL@% %@TH: 7 403 02 24 52 @%Library Used for building%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%SWINLIBC.LIB All Windows device driversUSER.LIB Printer driversGDI.LIB Printer driversKERNEL.LIB Communications driversC51 subdirectory Drivers with the C5.1 Compiler only%@TE: 7 403 02 24 52 @% %@2@%%@CR:C6A00030007 @%%@AB@%3.6 INCLUDE Files%@AE@%%@EH@%%@NL@% Most of these files are located in the \INCLUDE directory on the Device Driver Samples and Tools disk # 6 (5.25 inch) or 10 (3.5 inch). They are updated INCLUDE and header (.H) files for building Windows device drivers and virtual devices. %@NL@% If you are writing a virtual device, you also need to use some additional INCLUDE files. See the following section on virtual device INCLUDE files for more information on these files. %@NL@% You should add the appropriate Windows INCLUDE and header files to the Windows 3.0 \INCLUDE directory that you created during the SDK Install procedure. When writing assembly language drivers, you will need to incorporate at least the following INCLUDE (.INC) files: %@NL@% %@TH: 5 319 02 19 57 @%INCLUDE file Used for building%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%CMACROS.INC All assembly-language driversGDIDEFS.INC Display and printer driversWINDEFS.INC Drivers affected by asynchronous interrupts%@TE: 5 319 02 19 57 @% Some of these contain both C and ASM definitions and, therefore, can also be used in drivers written in C. (See Chapter 1, "Overview of Windows," in the %@AI@%Microsoft Windows Device Driver Adaptation Guide%@AE@% for more detailed information on INCLUDE files.) %@NL@% The most important INCLUDE file is CMACROS.INC, which contains a set of assembly-language macros that provide a simplified interface to the function and segment conventions of high-level languages such as C and Pascal. %@NL@% GDIDEFS.INC enables you to follow the good practice of referring to symbolic constants and structures by their Windows standard names. %@NL@% WINDEFS.INC contains two very useful macros that are used to turn off hardware interrupts such as those from the floppy and hard disk controllers, math coprocessor, timer, keyboard, and mouse. Use the %@AB@%EnterCrit%@AE@% and %@AB@%LeaveCrit%@AE@% macros whenever you do not want an asynchronous interrupt to reenter an area of code that Windows is executing. %@NL@% The following is a list of some of the other required INCLUDE files. %@NL@% %@TH: 8 408 02 21 55 @%INCLUDE file Used with%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%WINDOWS.H Printer driversSPOOLS.H Printer driversPRINTER.H Printer driversGRABBER.INC Display driversWINNET.H Network drivers (C Version)WNET.INC Network drivers (Assembler version)%@TE: 8 408 02 21 55 @% %@2@%%@CR:C6A00030008 @%%@AB@%3.7 Special INCLUDE Files For Building Virtual Devices%@AE@%%@EH@%%@NL@% To build the sample virtual devices correctly, you need to install all the files in the \INCLUDE directory from the Virtual Device Samples and Tools disks. The \INCLUDE directory contains .INC files used by the sample virtual device sources. This directory must be placed at the same directory level as the source directories, because they are referenced in the MAKE files in the following manner: %@NL@% %@STUB@% ..\..\..\INCLUDE\%@AI@%SAMPLE.INC%@AE@%%@NL@% This requirement, however, does not apply to INCLUDE files provided on the Device Driver Samples and Tools disks, or to those with the Windows 3.0 SDK or standard Microsoft language products. It only pertains to the virtual device sample sources provided in this kit. %@NL@% The \INCLUDE directory can be moved, though, if you modify the MAKE files appropriately. %@NL@% %@2@%%@CR:C6A00030009 @%%@AB@%3.8 Special Tools For Building Virtual Devices%@AE@%%@EH@%%@NL@% To build the sample virtual devices correctly, you need to install all the files in the \TOOLS directory on the Virtual Device Samples and Tools disks. The files in the \TOOLS directory should be put into the Windows 3.0 \TOOLS directory that was created by the SDK Install program. %@NL@% The \TOOLS directory contains utilities that are required for building virtual devices. However, these are not currently part of the standard Windows 3.0 SDK tool set and are not readily available with most Microsoft language products. %@NL@% This directory contains the following tools, each of which is necessary to build the virtual device sample sources with the MAKE files provided: %@NL@% ■ ADDHDR is a utility used to modify the headers of virtual devices. It takes only one parameter, the name of the virtual device file, and should be run as a standard part of every build procedure.%@NL@% ■ LINK386 is a special version of the Microsoft Segmented-Executable Linker that is provided specifically for building virtual devices. This version has been modified to understand 32-bit offsets.%@NL@% ■ MAPSYM32 is a version of the standard MAPSYM utility that is used to convert map files produced by the linker into symbol files used by some debuggers. This version has been modified to understand 32-bit offsets.%@NL@% ■ MASM5 is a special version of the Microsoft Macro Assembler, version 5.10B, that supports the 32-bit address space required for virtual devices. It has been named MASM5.EXE so it will not conflict with your standard MASM executables. %@NL@% %@2@%%@CR:C6A00030010 @%%@AB@%3.9 Summary List of Special Files%@AE@%%@EH@%%@NL@% The following is a list of all the special files referred to in this chapter along with directions on where to find them on the 5.25 inch (or 3.5 inch) disks: %@NL@% %@TH: 28 1837 02 20 56 @%Special file Where to find it%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%IMPLIB.EXE Microsoft C CompilerLINK4.EXE DDK Device Driver S & T Disk # 8 (14) - \TOOLSSWINLIBC.LIB DDK Device Driver S & T Disk # 6 (11) - \LIBUSER.LIB DDK Device Driver S & T Disk # 6 (11) - \LIBGDI.LIB DDK Device Driver S & T Disk # 6 (11) - \LIBKERNEL.LIB DDK Device Driver S & T Disk # 6 (11) - \LIBC51 subdirectory DDK Device Driver S & T Disk # 6 (11) - \LIBCMACROS.INC Microsoft Windows SDKGDIDEFS.INC DDK Device Driver S & T Disk # 6 (10) - \INCLUDEWINDEFS.INC DDK Device Driver S & T Disk # 6 (10) - \INCLUDEWINDOWS.H Microsoft Windows SDKSPOOL.H DDK Device Driver S & T Disk # 6 (10) - \INCLUDEPRINTER.H DDK Device Driver S & T Disk # 6 (10) - \INCLUDEGRABBER.INC DDK Device Driver S & T Disk # 6 (10) - \INCLUDEWINNET.H DDK Device Driver S & T Disk # 6 (10) - \INCLUDEWNET.INC DDK Device Driver S & T Disk # 5 (9) - \NETINT31.INC DDK Virtual Device S & T Disk # 1 (1) - \INCLUDEVMM.INC DDK Virtual Device S & T Disk # 1 (1) - \INCLUDEDEBUG.INC DDK Virtual Device S & T Disk # 1 (1) - \INCLUDEVPICD.INC DDK Virtual Device S & T Disk # 1 (1) - \INCLUDESHELL.INC DDK Virtual Device S & T Disk # 1 (1) - \INCLUDEVDD.INC DDK Virtual Device S & T Disk # 1 (1) - \INCLUDEADDHDR.EXE DDK Virtual Device S & T Disk # 1 (1) - \TOOLSLINK386.EXE DDK Virtual Device S & T Disk # 1 (1) - \TOOLSMAPSYM32.EXE DDK Virtual Device S & T Disk # 1 (1) - \TOOLSMASM5.EXE DDK Virtual Device S & T Disk # 1 (1) - \TOOLS%@TE: 28 1837 02 20 56 @% %@CR:C6A00040001 @%%@1@%%@AB@%Chapter 4 Recommended Development Process%@AE@%%@EH@%%@NL@% %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@% This chapter provides an ordered outline of the steps you should follow when developing a new device driver or virtual device. It also directs you to the appropriate sections for the detailed information you will need to accomplish each step. %@NL@% %@2@%%@CR:C6A00040002 @%%@AB@%4.1 Copy All Required Tools and Sources To Your Hard Disk%@AE@%%@EH@%%@NL@% See Chapter 5, "System Setup and Tools Installation," in this guide to assist you in copying to your hard disk all the files that you will need to create your device driver and/or virtual device. It is important to remember that the files have been provided in a compressed format and need to be restored first to their original size before using them. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for further information on how to do this. %@NL@% %@2@%%@CR:C6A00040003 @%%@AB@%4.2 Familiarize Yourself With the Debugging Tools%@AE@%%@EH@%%@NL@% There are several debugging tools provided with and documented in the SDK: CodeView(R) Windows (CVW), SYMDEB, and WDEB386. CodeView is used mainly for C debugging (e.g., printer drivers) and WDEB386 is used for assembly debugging (e.g., display drivers). %@NL@% If you have the appropriate hardware necessary for running CVW, you should try using this tool for your debugging. Otherwise, you should use the SYMDEB debugger whenever you are debugging in the real-mode memory model and the WDEB386 debugger when debugging in protected mode. Notice that, despite the name, the WDEB386 debugger can be used with either the 80286, 80386, or 80486 processors. See the SDK documentation for more information on using these debuggers. %@NL@% %@2@%%@CR:C6A00040004 @%%@AB@%4.3 Build a Sample Driver%@AE@%%@EH@%%@NL@% The best way to test your development environment is to build one of the sample device drivers included in this kit. To build one, follow these general steps. More detailed instructions are given in the remaining chapters. How to build a virtual device is described in greater detail in the %@AI@%Microsoft Windows Virtual Device Adaptation Guide%@AE@%. %@NL@% 1. Choose the disk containing the sample driver most similar to your device. (See Chapter 6, "Windows 3.0 Device Driver Sources," and Chapter 7, "Windows 3.0 Virtual Device Sources," in this guide for a complete list of the sample drivers included with this kit.)%@NL@% 2. Copy from the floppy disk to your hard disk and then expand all the files pertaining to that driver. (See Chapter 5, "System Setup and Tools Installation," for more information on these files.)%@NL@% 3. Follow the instructions in the MAKE file for that driver. Be sure to read the important building information in the header for the MAKE file before attempting to build the driver. %@NL@% 4. Modify the SYSTEM.INI file, which is located in the Windows directory, to set the "currently selected" driver to your newly built driver so that you can test it. To understand the structure and format of the SYSTEM.INI file, read the SYSINI.TXT file.%@NL@% %@STUB@% The following is a debugging example using a VGA display driver as a sample. To debug it, enter the following command:%@NL@% %@AS@% WDEB386 -S:<path>VGA.SYM[-S:other symbol maps] WIN/3 (or WIN/2 or %@AS@% WIN/r)%@AE@% %@STUB@% All debugging output is then directed to COM1, with a 9600 baud rate, no parity, 8 bits-per-character, and 1 stop bit. For further details on debugging, see the %@AI@%Microsoft Windows Software Development Kit%@AE@%.%@NL@% %@STUB@% If you built a sample printer driver, use the Control Panel program provided with the Windows 3.0 retail product to install your driver for testing.%@NL@% %@2@%%@CR:C6A00040005 @%%@AB@%4.4 Use the Test Applications%@AE@%%@EH@%%@NL@% To help you in the testing of your display and printer drivers, we have included test applications and test files for use in printing from various Windows applications. These test applications can be found under the \TESTS\ITE directory, where ITE stands for Integrated Test Environment, and the test files are under the \TESTS\PRINT directory. %@NL@% See Section 6.2, "Display Driver Test Applications," and Section 6.4, "Printer Driver Test Applications," in this guide for more information on these applications and files. See Section 6.10, "Network Driver and HCT Test Applications," for more information on the hardware compatibility test and network test applications. %@NL@% The SDK also contains several test applications that are mentioned, where appropriate, later in this guide. %@NL@% %@2@%%@CR:C6A00040006 @%%@AB@%4.5 Create a Distribution Disk%@AE@%%@EH@%%@NL@% Once you are convinced that you have thoroughly tested your device driver or virtual device and have found it to be functioning properly, you should create the distribution disk with which the end-user will install your new device driver or virtual device. See Appendix C, "Creating Distribution Disks for Drivers," in the %@AI@%Microsoft Windows Virtual Device Adaptation Guide%@AE@% for the detailed steps involved. %@NL@% %@CR:C6A00050001 @%%@1@%%@AB@%Chapter 5 System Setup and Tools Installation%@AE@%%@EH@%%@NL@% %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@% Before installing the DDK software, you must first install the SDK software. The SDK %@AI@% Installation and Update Guide%@AE@% contains directions for installing the basic tools you will need for building device drivers. If you plan to debug and test your driver, you must also install the retail Microsoft Windows 3.0 software following the instructions in the %@AI@%Microsoft Windows %@AI@%Users Guide%@AE@%. %@NL@% %@2@%%@CR:C6A00050002 @%%@AB@%5.1 Copy the Required Files From the Disks%@AE@%%@EH@%%@NL@% Once you have installed the SDK tools, you should determine which sources you need a nd copy these to the appropriate directory on your hard disk. The software provided with the DDK is mainly comprised of compressed driver and virtual device sources. There is no formal installation process for these files. They can simply be copied from the floppy disks to your hard disk and then expanded. (See Chapter 6, "Windows 3.0 Device Driver Sources," and Chapter 7, "Windows 3.0 Virtual Device Sources," in this guide for detailed descriptions of the sources provided in the DDK.) %@NL@% Many of the driver source directories are organized into source trees containing files and subdirectories. They also contain all the software modules and MAKE and batch files necessary to build the drivers. We recommend you use the MS-DOS %@AB@%XCOPY%@AE@% command in most cases to ensure you are copying the directory images just as they are on the disks. Unlike the %@AB@%COPY%@AE@% command, the %@AB@%XCOPY%@AE@% command can copy all the files contained in the entire hierarchical file structure of the source disk to the destination disk. %@NL@% The following is an example showing how to use the %@AB@%XCOPY%@AE@% command and several of its optional switches: %@NL@% %@AS@% XCOPY A:\DISPLAY\1PLANE C:\DISPLAY\1PLANE /s /e /v%@AE@% The %@AB@%/s%@AE@% switch tells %@AB@%XCOPY%@AE@% to copy all the subdirectories. The %@AB@%/e%@AE@% switch ensures that empty directories get copied. The %@AB@%/v%@AE@% switch is optional but recommended since it enables you to verify that the files are copied correctly. %@NL@% It is important to maintain the directory structure for the provided MAKE and batch files to work properly. If you change the organization of the files on your hard disk, be sure to make the appropriate changes to the MAKE or batch file for building the driver. Notice that a source directory tree may span across several of the DDK disks. Therefore, be sure to review all the disks to ensure you have copied all the appropriate files. %@NL@% %@2@%%@CR:C6A00050003 @%%@AB@%5.2 Expand the Compressed Files to Their Normal Size%@AE@%%@EH@%%@NL@% Notice that the files on the disks in the DDK are provided in a compressed format to conserve disk space. However, they cannot be used in that form. After the %@AB@%XCOPY%@AE@% command has been used to copy all the disks to your hard disk, you must expand either all the compressed files or just the files you need to create the device driver or virtual device you plan to develop. %@NL@% To convert all the files to their normal size, we have included, in the root directory of the Device Driver Samples and Tools disk # 1 (1), the following four files that need to be copied to your hard disk: %@NL@% ■ TREEEX2.BAT%@NL@% ■ TREEEX3.BAT%@NL@% ■ TREEEXP.BAT%@NL@% ■ WALK.EXE%@NL@% After you have copied from the disks the compressed directory that you need, move to that directory and type the following: %@NL@% %@AS@% TREEEXP%@AE@% This batch file will expand to their normal size all the files in the current directory and any of its subdirectories. %@NL@% %@2@%%@CR:C6A00050004 @%%@AB@%5.3 Other Considerations%@AE@%%@EH@%%@NL@% If you have directories for the 2.0 version tools on your hard disk, be sure to set your MS-DOS %@AB@%PATH%@AE@% and %@AB@%SET%@AE@% commands to include, instead of or before the 2.0 directories, all the 3.0 tools, INCLUDE, and library directories. %@NL@% Also, you need to determine whether you need the device driver sources, the virtual device sources, or both. For example, if you are writing a printer driver, you do not need to write a virtual device because access to these devices is already virtualized at the printer port level in the Virtual Printer Device. However, if you are writing a display driver you probably will need them. If your device can be shared among several virtual machines (VMs) while running under 386 enhanced mode (e.g., if DOS standard applications can call your device, as well as Windows), then you should provide a virtual device. Some examples of devices for which we will provide virtual device support in Windows include the following: %@NL@% ■ Displays%@NL@% ■ Printer or parallel ports%@NL@% ■ Serial ports%@NL@% ■ Keyboards%@NL@% ■ Pointing devices%@NL@% ■ Network API (e.g., NetBIOS)%@NL@% ■ Special hard disks%@NL@% ■ Math co-processors%@NL@% %@2@%%@CR:C6A00050005 @%%@AB@%5.4 Checking Your Tools Setup%@AE@%%@EH@%%@NL@% To check if you have installed the tools correctly, enter (one at a time) the following commands: %@NL@% %@STUB@% %@AB@%MAKE%@AE@%%@NL@% %@STUB@% %@AB@%LINK%@AE@%%@NL@% %@STUB@% %@AB@%LINK386%@AE@%%@NL@% %@STUB@% %@AB@%RC%@AE@%%@NL@% %@STUB@% %@AB@%MAPSYM%@AE@%%@NL@% %@STUB@% %@AB@%MASM%@AE@%%@NL@% %@STUB@% %@AB@%MASM5%@AE@%%@NL@% %@STUB@% %@AB@%CL%@AE@%%@NL@% %@STUB@% %@AB@%ADDHDR%@AE@%%@NL@% After you enter each command, the appropriate version banner for that tool should appear on the screen. Ensure that you are using the correct version per the following list: %@NL@% %@STUB@% %@AB@%MAKE %@AE@%(4.07)%@NL@% %@STUB@% %@AB@%LINK%@AE@% (5.10 for C 6.0 or 5.01.21 for C 5.1)%@NL@% %@STUB@% %@AB@%LINK386%@AE@% (1.00.058)%@NL@% %@STUB@% %@AB@%RC%@AE@% (3.0)%@NL@% %@STUB@% %@AB@%MAPSYM%@AE@% (4.11)%@NL@% %@STUB@% %@AB@%MASM%@AE@% (5.10)%@NL@% %@STUB@% %@AB@%MASM5 %@AE@%(5.10B)%@NL@% %@STUB@% %@AB@%CL %@AE@%(6.0 or 5.1)%@NL@% %@STUB@% %@AB@%ADDHDR %@AE@%(1.01)%@NL@% %@CR:C6A00060001 @%%@1@%%@AB@%Chapter 6 Windows 3.0 Device Driver Sources%@AE@%%@EH@%%@NL@% %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@% The following sections contain detailed descriptions of the Microsoft Windows 3.0 device driver sources provided in the DDK. The information includes where you can find the code on the disks, the procedure for building the driver, and the features demonstrated by the code. %@NL@% The sources in this DDK are provided for your development use. You should use the sources provided as a code base or as examples of how you should structure your driver. %@NL@% The sources are set up in subdirectories on the enclosed disks. You should use the MS-DOS %@AB@%COPY%@AE@% or %@AB@%XCOPY%@AE@% command to copy all the files and related subdirectories to your hard disk. It is important that you maintain the structure as provided on the disks to ensure that the accompanying MAKE and batch files work properly. Also, be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% The following table provides a summary of all the source files mentioned in this chapter and their locations on the 5.25 inch (or 3.5 inch) DDK Device Driver Samples and Tools Disks: %@NL@% %@TH: 79 2556 02 27 12 37 @%Sources for On disk # Directory name%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%1-plane displays 1 (2) and \DISPLAY\1PLANE 2 (3/4) 4-plane displays 1 (1/2) \DISPLAY\4PLANE8-plane displays 2 (4) and \DISPLAY\8PLANE 3 (5) CGA grabbers 8 (14) \GRABBERS\CGAHERC\CGACompaq Plasma 8 (14) \GRABBERS\CGAHERC\CGAgrabbers Hercules grabbers 8 (14) \GRABBERS\CGAHERC\HERCULESEGA color grabbers 8 (14) \GRABBERS\EGA\EGACOLOREGA mono grabbers 8 (14) \GRABBERS\EGA\EGAMONOVGA color grabbers 8 (14) \GRABBERS\VGA\VGACOLOR8514/a grabbers 8 (14) \GRABBERS\VGA\VGACOLORVGA mono grabbers 8 (14) \GRABBERS\VGA\VGAMONOProportional system font 7 (13) \FONTS\SYSTEMFixed-pitch system font 7 (13) \FONTS\FIXEDDisplay driver test app 7 (13) \TESTS\ITE\BIN\DISPTEST.EXEDisplay driver test app 6 (11) \TESTS\DTA\DTA.EXEDisplay driver test docs 7 (13) \TESTS\ITE\DOCS\DISPTEST.TXTDisplay driver test docs 6 (11) \TESTS\DTA\DTA.DOCPCL/HP LaserJet printers 3 (5) \PRINTERS\HPPCLPrinter Font Installer 4 (7) \PRINTERS\FINSTALLPFM Editor 8 (13) \TOOLS\PFMEDIT.EXEPostScript printers 4 (7) \PRINTERS\PSCRIPTMKPRN tool 8 (13) \TOOLS\MKPRN.EXEEpson printers 5 (8) \PRINTERS\RASTER\EPSONIBM Color Printer 5 (9) \PRINTERS\RASTER\COLOR\IBMCOLORPrinter driver test app 7 (12) \TESTS\ITE\BIN\PRNTTEST.EXEPrinter driver test docs 7 (12) \TESTS\ITE\DOCS\PRNTTEST.TXTKeyboard drivers 5 (13) \KEYBOARDMouse drivers 6 (10) \MOUSECommunications drivers 6 (10) \COMMSound drivers 6 (10) \SOUNDMS-Net network driver 5 (9) \NETNetwork driver test app 7 (12) \TESTS\NETTEST\BIN\NETTEST.EXENetwork driver test docs 7 (12) \TESTS\NETTEST\README.TXTHardware compatibility 7 (13) \TESTS\HCTtest applications Hardware compatibility 7 (13) \TESTS\HCT\README.DOCtest docs %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%%@TE: 79 2556 02 27 12 37 @% %@2@%%@CR:C6A00060002 @%%@AB@%6.1 Display Driver Sources%@AE@%%@EH@%%@NL@% We are providing 1-, 4-, and 8-plane display driver sources in the DDK on the Device Driver Samples and Tools disks. See the table at the beginning of this chapter for their exact locations. %@NL@% While many of the display drivers use common code, several drivers compile with different switches. Therefore, if you build one display driver and, then, want to build a different one, you must delete all the .OBJ files in the following directories: %@NL@% %@TH: 7 413 02 31 45 @%1-plane drivers 4-plane drivers%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%\1PLANE \4PLANE\1PLANE\BW \4PLANE\COLOR\1PLANE\BW\CGAHERC \4PLANE\COLOR\EGA\1PLANE\BW\EGA%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%%@TE: 7 413 02 31 45 @% %@3@%%@CR:C6A00060003 @%%@AB@%6.1.1 1-Plane Drivers: CGA, EGA Monochrome, EGA High Resolution B&W,%@EH@% %@AB@%Hercules, Plasma, and MCGA%@AI@%%@AE@%%@AE@%%@NL@% All the above-mentioned drivers are 1-plane drivers. These drivers have been modified to run bimodal (in real and protected memory modes), support device-independent bitmaps (DIBs), and support greater than (>) 64K fonts. They are located on the Device Driver Samples and Tools disks # 1 (2) and 2 (3/4) under the \DISPLAY\1PLANE directory. %@NL@% These drivers share common code in many areas. Therefore, you need to copy all the files in the directory structure to your hard disk. We suggest you use the MS-DOS %@AB@%XCOPY%@AE@% command to do this. Also, be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% You need to change to the appropriate subdirectory for the driver you want to build. Each driver directory has a MAKEIT.BAT batch file to build the driver. You will find a batch file for each driver under the following pathnames: %@NL@% %@TH: 15 664 02 34 44 @%Driver Location%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%CGA \DISPLAY\1PLANE\BW\CGAHERC\CGA\ AKEIT.BATCompaq Plasma \DISPLAY\1PLANE\BW\CGAHERC\COMPAQ \MAKEIT.BATHercules mono \DISPLAY\1PLANE\BW\CGAHERC\HERC\MAKEIT.BATEGA hi res B&W \DISPLAY\1PLANE\BW\EGA\EGAHIBW\MAKEIT.BATEGA mono \DISPLAY\1PLANE\BW\EGA\EGAMONO\MAKEIT.BATMCGA (VGAmono) \DISPLAY\1PLANE\BW\EGA\MCGA\MAKEIT.BAT%@TE: 15 664 02 34 44 @% If your 1-plane display device is based on the CGA, EGA, or Hercules standard, you should base your driver code on one of these drivers. Otherwise, these sources can provide you with the sample code necessary for you to design and plan for a new 1-plane driver. %@NL@% %@3@%%@CR:C6A00060004 @%%@AB@%6.1.2 4-Plane Drivers: EGA and VGA%@AE@%%@EH@%%@NL@% Both the EGA and VGA driver sources use all 4 planes to support 16 colors. These drivers have been modified to run bimodal (in real and protected memory modes), support device-independent bitmaps (DIBs), and support greater than (>) 64K fonts. They are located on the Device Driver Samples and Tools disk # 1 (1/2) under the \DISPLAY\4PLANE directory. %@NL@% You may also find samples of IFDEF palette management code in these sources. However, we recommend that you do not follow these examples. See the following section on 8-plane VGA drivers for more complete information on sample sources with palette management support. %@NL@% These drivers share common code in many areas. Therefore, you need to copy all the files in the directory structure to your hard disk. We suggest you use the MS-DOS %@AB@%XCOPY%@AE@% command to do this. Also, be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% You need to change to the appropriate subdirectory for either the VGA or EGA driver and execute the MAKEIT.BAT batch file to build the driver. You will find a batch file for each driver under the following pathnames: %@NL@% %@TH: 4 282 02 21 55 @%Driver Location%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%EGA hi res color \DISPLAY\4PLANE\COLOR\EGA\EGAHIRES\MAKEIT.BATVGA \DISPLAY\4PLANE\COLOR\EGA\VGA\MAKEIT.BAT%@TE: 4 282 02 21 55 @% If your 4-plane display device is based on either the EGA or VGA standard, you should base your driver code on the appropriate driver. Otherwise, these sources can provide you with the sample code necessary for you to design and plan for a new 4-plane driver. %@NL@% %@3@%%@CR:C6A00060005 @%%@AB@%6.1.3 8-Plane Drivers: Video Seven VGA and 8514/a%@AI@%%@AE@%%@AE@%%@EH@%%@NL@% We have provided you with sources for the Video Seven VGA and the 8514/a drivers. These drivers use all 8 planes available on the adapter for 256 color support. The code provides a good example of the use of color-palette management and device-independent bitmaps (DIBs). These drivers have been adapted to run bimodal and support >64K fonts. Both driver sources can be used as examples of how a packed-pixel driver is implemented under Windows. %@NL@% To demonstrate the use of DIBs and color-palette management in these drivers, you can run the sample application, SHOWDIB, provided in the SDK. %@NL@% You will find these sources on the Device Driver Samples and Tools disks # 2 (4) and 3 (5) under the \DISPLAY\8PLANE (\V7 or \8514) directory. You need to copy all the files in the appropriate directory structure to your hard disk. These two drivers do %@AI@%not%@AE@% share any common code, so you must choose one or both depending on your needs. Use the MS-DOS %@AB@%XCOPY%@AE@% command to do this. Also, be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% Notice that the \8PLANE\V7 directory contains an empty subdirectory called \DEBUG. The \8PLANE\8514 directory also has an empty \OBJ subdirectory. You must have these subdirectories available when you build the driver, otherwise the MAKE files will fail. %@NL@% You need to change to the appropriate subdirectory for the driver you want to build. You will find a batch file for the Video Seven VGA driver under the following pathname: %@NL@% %@STUB@% \DISPLAY\8PLANE\V7\MKP.BAT%@NL@% This will build the V7VGA.DRV file into the \DEBUG subdirectory. %@NL@% For the 8514/a driver, change to the following subdirectory (\DISPLAY\8PLANE\8514\SOURCE) and then type: %@NL@% %@STUB@% MAKE DRIVER%@NL@% This will build the 8514.DRV file into the \OBJ subdirectory. %@NL@% %@3@%%@CR:C6A00060006 @%%@AB@%6.1.4 Windows Real and Standard Mode Grabbers%@AE@%%@EH@%%@NL@% The Windows real and standard mode grabbers are on the Device Driver Samples and Tools disk # 8 (14) under the \GRABBERS directory. Since much of the grabber code for different displays is common, you should copy the \GRABBERS sub-directory in its entirety to your hard disk. Also, be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% The individual grabbers are in the following directories: %@NL@% %@TH: 8 481 02 30 46 @%Grabber Location%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%CGA and Compaq Plasma \GRABBERS\CGAHERC\CGAHercules \GRABBERS\CGAHERC\HERCULESEGA color \GRABBERS\EGA\EGACOLOREGA mono \GRABBERS\EGA\EGAMONOVGA color and 8514/a \GRABBERS\VGA\VGACOLORVGA mono (MCGA) \GRABBERS\VGA\VGAMONO%@TE: 8 481 02 30 46 @% After changing to the appropriate subdirectory, use the MAKE files provided in each of these directories to build the grabber by typing: %@NL@% %@STUB@% MAKE %@AI@%grabbername%@AE@%%@NL@% %@3@%%@CR:C6A00060007 @%%@AB@%6.1.5 System Font Sources%@AE@%%@EH@%%@NL@% We have provided both the new Windows 3.0 proportional system font and the old Windows 2.0 fixed-pitch system font. If your display driver supports resolutions other than the display resolutions provided in Windows, you may need to modify the system fonts for your display. %@NL@% You will need to copy the \FONTS directory to your hard disk in its entirety. Use the MS-DOS %@AB@%XCOPY%@AE@% command to do this. You will find this directory on the Device Driver Samples and Tools disk # 7 (13). Also, be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% The Windows 3.0 proportional system fonts are hand tuned for the screen and match the Adobe font widths for their Helv font. If you need to adapt the system font for a display with a different horizontal resolution than the ones supported by these fonts, you will need to adjust the font widths accordingly. This ensures that the character will do the best "copy fit" of the printed character with those on the screen. To modify these (.FNT) files before building the .FON file, use the Font Editor tool provided with the SDK. %@NL@% Before you build any fonts, you must make the FONTS.OBJ file, which you can do by running the following once from the \FONTS directory: %@NL@% %@STUB@% MASM FONTS;%@NL@% You can easily build the proportional system font files by executing the MAKE file from the \FONTS\SYSTEM directory: %@NL@% %@STUB@% MAKE SYSTEM%@NL@% The font filenames for the new proportional system fonts are as follows: %@NL@% %@TH: 6 351 02 18 58 @%Filename Resolution%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%CGASYS.FON (640 x 200) CGA EGASYS.FON (640 x 350) EGA high resVGASYS.FON (640 x 480) VGA (square pixels, 96 dpi)8514SYS.FON (1024 x 768) 8514/a (square pixels, 120 dpi)%@TE: 6 351 02 18 58 @% In addition to the new Windows 3.0 proportional system font, the Windows 2.0 fixed-pitch system font is necessary for older Windows applications running under Windows 3.0. All Windows applications that are not "marked" to run with the new proportional font, or that were not developed as a Windows 3.0 application, will be given the fixed-pitch font for displaying text in dialog and message boxes and in the client area. %@NL@% Since Windows 3.0 supports both of these files, it may be necessary for you to also modify the appropriate fixed-pitch system font. %@NL@% You will find these fonts, as well as the terminal (OEM) fixed-pitch fonts, in the \FONTS\FIXED directory. Execute from this directory the MAKE file called FIXED by running: %@NL@% %@STUB@% MAKE FIXED%@NL@% The font filenames for the Windows 2.0 fixed-pitch system and terminal (OEM) fonts are as follows: %@NL@% %@TH: 15 840 02 18 58 @%Filename Resolution%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%CGAFIX.FON (640 x 200) CGA CGAOEM.FON (640 x 200) CGA EGAFIX.FON (640 x 350) EGA high resEGAOEM.FON (640 x 350) EGA high resVGAFIX.FON (640 x 480) VGA (square pixels, 96 dpi)VGAOEM.FON (640 x 480) VGA (square pixels, 96 dpi)VGA850.FON (640 x 480) VGA (square pixels, 96 dpi)VGA860.FON (640 x 480) VGA (square pixels, 96 dpi)VGA861.FON (640 x 480) VGA (square pixels, 96 dpi)VGA863.FON (640 x 480) VGA (square pixels, 96 dpi)VGA865.FON (640 x 480) VGA (square pixels, 96 dpi)8514FIX.FON (1024 x 768) 8514/a (square pixels, 120 dpi)8515OEM.FON (1024 x 768) 8514/a (square pixels, 120 dpi)%@TE: 15 840 02 18 58 @% If you want to build both the system proportional and fixed fonts at the same time, you can run the MAKE file called FONTS from the \FONTS directory. %@NL@% %@2@%%@CR:C6A00060008 @%%@AB@%6.2 Display Driver Test Applications%@AE@%%@EH@%%@NL@% The DDK now contains a display driver test application. You will find the complete documentation, program executable, and source to this test under the \TESTS\ITE directory on the Device Driver Samples and Tools disk # 7 (13). The program is called DISPTEST.EXE and is in the \TESTS\ITE\BIN subdirectory. The documentation for running the program is in \TESTS\ITE\DOCS\DISPTEST.TXT. %@NL@% The sources have been provided to aid in your debugging should you find a problem while running the display test program. If you need to build this program for some reason, you should follow the instructions in the README.TXT file under the \TESTS\ITE directory. %@NL@% A more comprehensive display driver test application called DTA.EXE is also included and can be found under \TESTS\DTA on the Device Driver Samples and Tools disk # 6 (11). The documentation for running it is in \TESTS\DTA\DTA.DOC. %@NL@% %@2@%%@CR:C6A00060009 @%%@AB@%6.3 Printer Driver Sources%@AE@%%@EH@%%@NL@% We are providing driver sources for our PCL/HP LaserJet and PostScript printer drivers. In addition, sample sources for dot-matrix black/white and color raster printers are also included. All of these sample sources provide full support for Windows 3.0 features. %@NL@% After copying all the appropriate files to your hard disk with the MS-DOS %@AB@%XCOPY%@AE@% or %@AB@%COPY%@AE@% command, be sure to expand the compressed files to their normal size. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% %@3@%%@CR:C6A00060010 @%%@AB@%6.3.1 PCL/HP LaserJet Printer Driver%@AI@%%@AE@%%@AE@%%@EH@%%@NL@% The PCL/HP LaserJet printer driver sources are being provided as examples for using the new device initialization APIs, the Printer Font Installer, the new Windows 3.0 controls in the printer dialog box, and the new Help Manager. The two new APIs (%@AB@%ExtDeviceMode()%@AE@% and %@AB@%DeviceCapabilities()%@AE@%) for device initialization are documented in the DDK in Chapter 5, "Printer Drivers," of the %@AI@%Microsoft Windows Device Driver Adaptation Guide%@AE@%. %@NL@% The device-mode dialog box should be used as an example for designing a driver dialog box interface only for Windows 3.0. The design should follow the guidelines described in the %@AI@%Systems Application Architecture, Common %@AI@%User Access: Advanced Interface Design Guide%@AE@%. If this dialog box offers the user any options, some mechanism should be included to enable the user to access online help. How to use the Windows 3.0 Help Engine is described in the %@AI@%Microsoft Windows Software Development Kit%@AE@%. %@NL@% The PCL/HP LaserJet core driver sources are on the Device Driver Samples and Tools disk # 3 (5) under the \PRINTERS\HPPCL directory. The \HPPCL directory contains subdirectories necessary for building the driver. You can build the driver by running the MAKEIT.BAT batch file from the \HPPCL directory. %@NL@% Included in the DDK documentation set is the %@AI@%Microsoft Windows Printers and %@AI@%Fonts Kit%@AE@%. You should review this document for information on font support under the PCL/HP LaserJet printer driver and for new features that have been incorporated into this version of the driver. For example, the Soft Font Installer has been removed from the core driver and placed into a separate dynamic-link library (DLL). It will install font information for both soft and cartridge fonts. A new source tree was created for the installer (now called the Printer Font Installer). %@NL@% The Printer Font Installer source is on the Device Driver Samples and Tools disk # 4 (7) under the \PRINTERS\FINSTALL directory. You can build the font installer by running the MAKEIT.BAT file from the \FINSTALL directory. This module is called by selecting the "Fonts..." button in the HPPCL driver dialog box. %@NL@% The Printer Font Metrics (PFM) Editor (PFMEDIT.EXE), also documented in the %@AI@%Microsoft Windows Printers and Fonts Kit%@AE@%, is provided on the Device Driver Samples and Tools disk # 8 (13) under the \TOOLS directory. %@NL@% %@3@%%@CR:C6A00060011 @%%@AB@%6.3.2 PostScript Printer Driver%@AE@%%@EH@%%@NL@% The PostScript printer driver is also a good example of how to use the new device initialization APIs (%@AB@%ExtDeviceMode()%@AE@% and %@AB@%DeviceCapabilities()%@AE@%), the new Windows 3.0 controls, and the Help Manager. It can also provide an example of Windows support for vector devices such as plotters. %@NL@% Notice that the device-mode interface between the PCL/HP LaserJet driver and the PostScript driver are consistent wherever possible. These sources also serve as an example of the new and updated escapes documented in Chapter 11, "Device Driver Escapes," of the %@AI@%Microsoft Windows Device Driver Adaptation %@AI@%Guide%@AE@%. %@NL@% This version of the driver provides RGB color PostScript support. Percent scaling has also been added to the driver. The user can specify the scale of the output to be printed in the printable area of the page. %@NL@% Device-independent color bitmaps (DIBs) are supported directly in the driver. This is a good example of how you can support this Windows 3.0 feature on color printer devices. For more information on DIBs, see Chapter 3, "Display Drivers: New Features," in the %@AI@%Microsoft Windows Device Driver %@AI@%Adaptation Guide.%@AE@% %@NL@% The option to change the Graphics Resolution has been removed from the device-mode dialog interface. Under Windows 3.0, %@AB@%StretchBlt()%@AE@% is implemented at the driver level. Therefore, the need to change the device resolution to speed up bitmap output is no longer needed. See Chapter 10, "Common Functions," in the %@AI@%Microsoft Windows Device Driver Adaptation Guide%@AE@% for more information on the %@AB@%StretchBlt()%@AE@% enhancements. An example of its use is in the PostScript driver source file STRCHBLT.C. %@NL@% Another new GDI device driver function for scaling DIBs is the %@AB@%StretchDIBits()%@AE@% function. See Chapter 3, "Display Drivers: New Features," for more information on this and other DIBs functions. An example of its use is in the PostScript driver source file DIBTODEV.C. %@NL@% The driver sources are on the Device Driver Samples and Tools disk # 8 (13) under the \PRINTERS\PSCRIPT directory. A batch file is provided to build the driver called MAKEPS33.BAT. %@NL@% The PostScript printer driver has been modified to make it easier to add new device support, without modifying the source files. The DDK provides a tool called MKPRN.EXE, which is located on the Device Driver Samples and Tools disk # 8 (13) under the \TOOLS directory. Use this tool to compile PostScript Printer Description (PPD) files into Windows Printer Description (WPD) files. You can then install .WPD files for the PostScript driver by choosing the "Add Printer" option in the driver's dialog box. Once installed, the device will be selectable from the list of printers in the driver. See the %@AI@%Microsoft Windows Printers and Fonts Kit%@AE@% for more information on this tool. %@NL@% %@3@%%@CR:C6A00060012 @%%@AB@%6.3.3 Raster Driver Sample Sources%@AE@%%@EH@%%@NL@% Also included in this kit are sample sources for an older version Epson 9-pin printer and an IBM Color Printer driver. These samples have been updated from the original 2.x samples to reflect the new 3.0 feature support for device initialization and an enhanced printer dialog box interface. %@NL@% The IBM Color Printer driver sources provide an example of supporting 3-plane color bitmaps with a color library. This library may be linked to your driver, or you may still choose to implement a different method for supporting color on your device. %@NL@% The files are on the Device Driver Samples and Tools disks # 5 (8 / 9) under the \PRINTERS\RASTER directory. To build the IBM Color Printer driver, you need to run the batch file under the \PRINTERS\RASTER\COLOR\IBMCOLOR directory: %@NL@% %@STUB@% MAKEIT.BAT%@NL@% To build the Epson printer driver, you need to run the MAKE file under the \PRINTERS\RASTER\EPSON directory: %@NL@% %@STUB@% MAKE EPSON%@NL@% These raster driver sources should provide you with a good example for implementing dot-matrix, ink-jet, and other raster device driver support. %@NL@% %@2@%%@CR:C6A00060013 @%%@AB@%6.4 Printer Driver Test Applications%@AE@%%@EH@%%@NL@% The DDK includes a printer driver test application. You will find the complete documentation, program executable, and source to this test under the \TESTS\ITE directory on the Device Driver Samples and Tools disk # 7 (12). The program is called PRNTTEST.EXE and is in the \TESTS\ITE\BIN subdirectory. The documentation for running the program is in \TESTS\ITE\DOCS\PRNTTEST.TXT. %@NL@% The sources have been provided to aid in your debugging should you find a problem while running the printer test program. If you need to build this program for some reason, you should follow the instructions in the README.TXT file under the \TESTS\ITE directory. %@NL@% Additional test files have also been provided for printing from various Windows applications. You will find the documentation, along with the source files for these tests, under the \TESTS\PRINT directory on the Device Driver Samples and Tools disk # 6 (12). %@NL@% %@2@%%@CR:C6A00060014 @%%@AB@%6.5 Keyboard Driver Sources%@AE@%%@EH@%%@NL@% The keyboard driver structure has been changed substantially since Windows 2.x. If you currently have a Windows 2.x driver, you will need to rewrite the driver to the new structure. We suggest you start your development with the sources provided in this kit, adding support for your specific keyboard where appropriate. %@NL@% The new keyboard sources are on the Device Driver Samples and Tools disk # 5 (13) under the \KEYBOARD directory. Copy all the files to your hard disk with the MS_DOS %@AB@%XCOPY%@AE@% or %@AB@%COPY%@AE@% command. Also, be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% This driver also requires the INCLUDE file INT31.INC. You will need to copy (and expand) this file from the \INCLUDE directory on the Virtual Device Samples and Tools disk # 1 (1). Make sure this file is in your INCLUDE path. %@NL@% There is a batch file provided to build the IBM-style keyboard driver and all the international tables for foreign keyboards. To build the drivers, you need to run the MAKEKEYB.BAT batch file in the \KEYBOARD directory. %@NL@% %@2@%%@CR:C6A00060015 @%%@AB@%6.6 Mouse Driver Sources%@AE@%%@EH@%%@NL@% The mouse driver has few changes from the version shipped with the Windows 2.1 DDK. The driver was only modified to run correctly in the protected-mode memory model. %@NL@% The Microsoft Mouse (or Microsoft Mouse-compatible) driver sources are on the Device Driver Samples and Tools disk # 6 (10). Copy all the files from the \MOUSE directory to your hard disk with the MS-DOS %@AB@%XCOPY%@AE@% or %@AB@%COPY%@AE@% command. Also, be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% To build the driver, run the following: %@NL@% %@STUB@% MAKE MOUSE%@NL@% %@2@%%@CR:C6A00060016 @%%@AB@%6.7 COMM Driver Sources%@AE@%%@EH@%%@NL@% This driver has been enhanced to support COM1 through COM4 and dual-mode execution with Windows 3.0. %@NL@% The COMM driver sources are on the Device Driver Samples and Tools disk # 6 (10). Copy all the files from the \COMM directory to your hard disk with the MS-DOS %@AB@%XCOPY%@AE@% or %@AB@%COPY%@AE@% command. Also, be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% This driver also requires the INCLUDE file INT31.INC. You will need to copy (and expand) this file from the \INCLUDE directory on the Virtual Device Samples and Tools disk # 1 (1). Make sure this file is in your INCLUDE path. %@NL@% To build the driver, run the following: %@NL@% %@STUB@% MAKE COMM%@NL@% %@2@%%@CR:C6A00060017 @%%@AB@%6.8 Sound Driver Sources%@AE@%%@EH@%%@NL@% The sound driver has few changes from the version shipped with the Windows 2.1 DDK. The driver was only modified to run correctly in the protected-mode memory model. %@NL@% The sound driver sources are on the Device Driver Samples and Tools disk # 6 (10). Copy all the files from the \SOUND directory to your hard disk with the MS-DOS %@AB@%XCOPY%@AE@% or %@AB@%COPY%@AE@% command. Also, be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% To build the driver, run the following: %@NL@% %@STUB@% MAKE SOUND%@NL@% %@2@%%@CR:C6A00060018 @%%@AB@%6.9 Network Driver Sources%@AE@%%@EH@%%@NL@% These network driver sources are new for Windows 3.0 and enable the Windows File Manager, Print Manager, and Control Panel to perform network functions such as connecting to network drivers. %@NL@% The MS-Net network driver sources are on the Device Driver Samples and Tools disk # 5 (9). Copy all the files from the \NET directory to your hard disk with the MS-DOS %@AB@%XCOPY%@AE@% or %@AB@%COPY%@AE@% command. Also, be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% To build the driver, run the following: %@NL@% %@STUB@% MAKE MSNET%@NL@% %@2@%%@CR:C6A00060019 @%%@AB@%6.10 Network Driver and HCT Test Applications%@AE@%%@EH@%%@NL@% The DDK includes a network driver test application. You will find the documentation, program executable, and source for this test under the \TESTS\NETTEST directory on the Device Driver Samples and Tools disk # 7 (12). The program is called NETTEST.EXE and is in the \TESTS\NETTEST\BIN subdirectory. %@NL@% The sources have been provided to aid in your debugging should you find a problem while running the network test program. If you need to build this program for some reason or need documentation for running the program, you should follow the instructions in the README.TXT file under the \TESTS\NETTEST directory. %@NL@% The DDK also includes a hardware compatibility test application. This test suite contains a series of testing components that will help to verify that your hardware is compatible with Windows 3.0. You will find the documentation, program executables, and sources for these tests under the \TESTS\HCT directory on the Device Driver Samples and Tools disk # 7 (13). The documentation for running the program is in \TESTS\HCT\README.DOC. %@NL@% %@CR:C6A00070001 @%%@1@%%@AB@%Chapter 7 Windows 3.0 Virtual Device Sources%@AE@%%@EH@%%@NL@% %@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@% These virtual device sources are provided to you to begin development for Windows 3.0 386 enhanced mode virtual device support. Each source directory contains one or more .ASM source files, a .DEF file, and two MAKE files. The first MAKE file is usually called MAKEFILE (or MAKEVGA for the VGA VDD) and is used with Microsoft NMAKE or with other Unix-style MAKE utilities. The second one, called by the name of the file being produced (e.g., VPD), is used with the standard Microsoft MAKE utility. You can use either MAKE file to produce virtual devices. Notice, however, that NMAKE is not provided in the DDK. It is included, though, with some Microsoft language products, such as Microsoft C Professional Development System version 6.0. %@NL@% These MAKE files offer examples of the proper use of the tools and options, and of the general build procedures that should be followed in developing virtual devices. Also, be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% Notice that, if you encounter random results or problems when building these virtual devices, it may be due to a low-memory situation. This can be resolved by creating more memory for your system by removing such things as TSRs and Network software. %@NL@% The following table provides a summary of all the source files mentioned in this chapter and their locations on the 5.25 inch (or 3.5 inch) DDK Virtual Device Samples and Tools disks: %@NL@% %@TH: 29 1392 02 24 11 41 @%Sources for On disk # Directory name%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%CGA displays 1 (2) \VDDCGACompaq Plasma 1 (2) \VDDCGAEGA displays 1 (2) \VDDEGAVGA displays 1 (2) \VDDEGA8514/a display 1 (2) \VDDEGAHercules display 1 (2) \VDDHERCCGA grabbers 2 (3) \GRABBERSEGA grabbers 2 (3) \GRABBERSVGA grabbers 2 (3) \GRABBERS8514/a grabbers 2 (3) \GRABBERSHercules grabbers 2 (3) \GRABBERSATT/Compaq grabbers 2 (3) \GRABBERSGrabber font files 2 (3) \OEMFONTSDMA devices 1 (2) \VDMADEBIOS devices 1 (1) \EBIOSHard Disk devices 1 (2) \VHDKeyboard devices 1 (2) \VKDMouse devices 2 (2) \VMDNetBIOS devices 2 (3) \VNETBIOSDOS network devices 2 (3) \LDOSNETROM BIOS devices 2 (3) \BIOSXLATPaging devices 1 (1) \PAGESWAPPrinter devices 2 (3) \VPDCommunications devices 2 (2) \VCDCOM Buffer devices 2 (2) \COMBUFFFloppy drive devices 2 (2) \VFD%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%%@TE: 29 1392 02 24 11 41 @% %@2@%%@CR:C6A00070002 @%%@AB@%7.1 The Display Devices (CGA, EGA, VGA, 8514/a, HERC)%@AE@%%@EH@%%@NL@% This device virtualizes the video display and is the most complex of the devices supplied in the DDK. %@NL@% The various VDD sources are on the Virtual Device Samples and Tools disks under the directories \VDDCGA, \VDDEGA and \VDDHERC. See the table at the beginning of this chapter for a complete list of all the sources and their locations. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% The \VDDCGA source tree only contains files to build the CGA VDD. This VDD also provides support for the Compaq Plasma display, which is sometimes called IDC. %@NL@% The \VDDEGA source tree uses conditional assembly to build three separate virtual devices to handle EGA, VGA, and 8514/a video adapters. %@NL@% The \VDDHERC source tree only contains files to build the Hercules VDD. %@NL@% You will find different MAKE files for each of the VDDs in their appropriate directories. The following is a list of the MAKE filenames (for NMAKE and DOS MAKE) for each VDD: %@NL@% %@TH: 7 292 02 10 10 56 @%Adapter NMAKE DOS MAKE%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%CGA/IDC MAKEFILE VDDCGAEGA MAKEEGA VDDEGAVGA MAKEVGA VDDVGA8514/a MAKE8514 VDD8514Hercules MAKEFILE VDDHERC%@TE: 7 292 02 10 10 56 @% Notice that, if you are using NMAKE, you may need to rename the appropriate NMAKE filename to "MAKEFILE." Some versions of NMAKE always use the "MAKEFILE" filename. %@NL@% The EGA, VGA, and 8514/a VDDs all share common code but compile with different switches. Therefore, if you build one VDD and, then, want to build a different one, you must delete all the .OBJ files in the VDDEGA directory. %@NL@% %@2@%%@CR:C6A00070003 @%%@AB@%7.2 The Display/Windows Interface (GRABBER)%@AE@%%@EH@%%@NL@% The grabbers for 386 enhanced mode are different from those used when running in real or standard mode. These are responsible for rendering a virtual machine's display context within a window. Therefore, they are closely bound with the virtual display device (VDD). Each VDD needs to be accompanied by its own grabber as a linked pair. %@NL@% The sources are on the Virtual Device Samples and Tools disk # 2 (3) under the \GRABBERS directory structure. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% The DDK contains sources for CGA, EGA, VGA, 8514/a, Compaq Plasma, and Hercules grabbers. Since they are all built in the same directory, different MAKE files are provided for each. The following is a list of the MAKE filenames (for NMAKE and DOS MAKE) for each grabber: %@NL@% %@TH: 8 355 02 15 10 51 @%Adapter NMAKE DOS MAKE%@AB@%────────────────────────────────────────────────────────────────────────────%@AE@%%@NL@%CGA MAKECGA CGAGRBEGA MAKEFILE EGAGRBVGA MAKEVGA VGAGRB8514/a MAKE8514 8514GRBHercules MAKEHERC HERCGRBATT(R)/Compaq MAKEPLSM PLSMGRB%@TE: 8 355 02 15 10 51 @% Notice that, if you are using NMAKE, you may need to rename the appropriate NMAKE file to "MAKEFILE." Some versions of NMAKE always use the "MAKEFILE" filename. %@NL@% The font files used by the grabbers when running in a window are provided in this kit. You will find them on the Virtual Device Samples and Tools disk # 2 (3) under the \OEMFONTS directory structure. %@NL@% Before building the OEM fonts, you need to create the FONTS.OBJ file by running the following from the \OEMFONTS directory: %@NL@% %@STUB@% MASM FONTS;%@NL@% Once this is completed, you run the MAKE file from the \FONTS directory: %@NL@% %@STUB@% MAKE FONTS%@NL@% To build these files properly, you need to make sure you have WINSTUB.EXE, which is provided in the SDK, in your MS-DOS path %@AI@%before%@AE@% building the grabbers and/or OEM font files. %@NL@% %@2@%%@CR:C6A00070004 @%%@AB@%7.3 The DMA Device (VDMAD)%@AE@%%@EH@%%@NL@% This device handles direct memory access (DMA) devices. Virtual devices can support hardware cards that use DMA by calling the DMA services provided by the VDMAD. These services are documented in Chapter 41, "Virtual DMA Device (VDMAD) Services," of the %@AI@%Microsoft Windows Virtual Device Adaptation Guide%@AE@%. %@NL@% See Section 7.15, "The Floppy Drive Device (VFD)," for an example of a device that uses the DMA services. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% The VDMAD should not normally need to be customized; it should only need to be altered to support DMA on machines with non-standard architectures. %@NL@% The sources are on the Virtual Device Samples and Tools disk # 1 (2) under the \VDMAD directory structure. %@NL@% %@2@%%@CR:C6A00070005 @%%@AB@%7.4 The EBIOS Device (EBIOS)%@AE@%%@EH@%%@NL@% This device detects the extended BIOS data region on machines that use it such as the PS/2, identifies it, and ensures that it is reserved as global memory. %@NL@% It will probably not need to be modified. However, it is provided here as an example of a relatively simple device that passively accommodates something in the environment. %@NL@% The sources are on the Virtual Device Samples and Tools disk # 1 (1) under the \EBIOS directory structure. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% %@2@%%@CR:C6A00070006 @%%@AB@%7.5 The Hard Disk Device (VHD)%@AE@%%@EH@%%@NL@% This device virtualizes access to the hard disk. It also provides direct access to the disk for demand paging on compatible hardware. %@NL@% This should be modified to support incompatible hard disks. %@NL@% The sources are on the Virtual Device Samples and Tools disk # 1 (2) under the \VHD directory structure. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% %@2@%%@CR:C6A00070007 @%%@AB@%7.6 The Keyboard Device (VKD)%@AE@%%@EH@%%@NL@% This is one of the more complicated virtual devices, as it not only virtualizes the keyboard but also interacts with the Windows shell to handle hotkeys and other special functions. It should be modified to support other, nonstandard keyboards. %@NL@% The sources are on the Virtual Device Samples and Tools disk # 1 (2) under the \VKD directory structure. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% %@2@%%@CR:C6A00070008 @%%@AB@%7.7 The Mouse Device (VMD)%@AE@%%@EH@%%@NL@% This device virtualizes the mouse and maps the INT 33H API between protected mode and virtual 8086 mode. %@NL@% The sources are on the Virtual Device Samples and Tools disk # 2 (2) under the \VMD directory structure. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% %@2@%%@CR:C6A00070009 @%%@AB@%7.8 The NetBIOS Device (VNETBIOS)%@AE@%%@EH@%%@NL@% This device maps the NetBIOS API between protected mode and virtual 8086 mode, enabling Windows applications to access the network using NetBIOS calls. It also handles asynchronous network transactions by mapping the application's buffer into global memory, so the network software can access it when the asynchronous event occurs, even if another virtual machine is running at that time. %@NL@% This should be modified by network vendors who extend the standard NetBIOS interface and should also serve as a guide to writing virtual devices for other types of network API. %@NL@% The sources are on the Virtual Device Samples and Tools disk # 2 (3) under the \VNETBIOS directory structure. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% %@2@%%@CR:C6A00070010 @%%@AB@%7.9 The Local DOS Network Device (LDOSNET)%@AE@%%@EH@%%@NL@% This device is not part of the Windows 3.0 retail package. However, it is included in the DDK as a sample source to demonstrate some mechanisms used in supporting network functionality. %@NL@% In general, this device manages network connections and ensures network integrity across all virtual machines. %@NL@% This source was included in previous DDK releases under the name DOSNET. However, it has been replaced in the Windows 3.0 retail package by a new DOSNET device that makes network connections global across all virtual machines. The version included here keeps connections local, but allows inheritance. It has, therefore, been renamed LDOSNET to avoid confusion. %@NL@% The device could serve as a model for handling some types of networks. In general, however, we recommend that network connections be global instead of local. %@NL@% On MS-Net networks, the enhanced Windows LDOSNET device provides the following support: %@NL@% ■ If a connection exists before Windows is started, it is global and cannot be deleted from within Windows or any VMs.%@NL@% ■ If the user makes a connection in Windows and, then, spawns off another virtual machine, that VM inherits Windows' connections as of that time.%@NL@% ■ If a VM has inherited a connection from Windows, it cannot delete it.%@NL@% ■ If any VM exists that inherited a particular connection from Windows, Windows cannot delete that connection.%@NL@% The sources are on the Virtual Device Samples and Tools disk # 2 (3) under the \LDOSNET directory structure. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% %@2@%%@CR:C6A00070011 @%%@AB@%7.10 The BIOS Device (BIOSXLAT)%@AE@%%@EH@%%@NL@% This device maps the ROM BIOS API between protected mode and virtual 8086 mode, thereby providing Windows applications and device drivers with access to ROM BIOS services. %@NL@% This should be modified when there are non-standard ROM BIOS calls that pass pointers to memory and that are used by Windows applications or device drivers. %@NL@% The sources are on the Virtual Device Samples and Tools disk # 2 (3) under the \BIOSXLAT directory structure. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% %@2@%%@CR:C6A00070012 @%%@AB@%7.11 The Paging Device (PAGESWAP)%@AE@%%@EH@%%@NL@% This device is used by 386 enhanced mode for demand paging at either the INT 21H or INT 13H level. %@NL@% The sources are on the Virtual Device Samples and Tools disk # 1 (1) under the \PAGESWAP directory structure. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% %@2@%%@CR:C6A00070013 @%%@AB@%7.12 The Printer Device (VPD)%@AE@%%@EH@%%@NL@% The printer device virtualizes access to the parallel ports. If a second virtual machine tries to access one of the ports while it is being used by another application, a contention dialog is presented to the user that allows them to resolve the ownership dispute. %@NL@% The sources are on the Virtual Device Samples and Tools disk # 2 (3) under the \VPD directory structure. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% %@2@%%@CR:C6A00070014 @%%@AB@%7.13 The COMM Device (VCD)%@AE@%%@EH@%%@NL@% This device virtualizes the standard serial ports on ISA type machines. It supports COM1 through COM4. %@NL@% It should be modified to add support for different chip sets or for additional COM ports. %@NL@% The sources are on the Virtual Device Samples and Tools disk # 2 (2) under the \VCD directory structure. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% %@2@%%@CR:C6A00070015 @%%@AB@%7.14 The COM Buffer Device (COMBUFF)%@AE@%%@EH@%%@NL@% This device is responsible for buffering COM I/O. It is closely tied to the Virtual COMM Device (VCD). %@NL@% It can be modified to support alternative serial communications ports or to use specific XON/XOFF protocols instead of relying on the applications to do so. %@NL@% The sources are on the Virtual Device Samples and Tools disk # 2 (2) under the \COMBUFF directory structure. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@% %@2@%%@CR:C6A00070016 @%%@AB@%7.15 The Floppy Drive Device (VFD)%@AE@%%@EH@%%@NL@% This device is responsible for the removal of special timer port trappings to ensure that copy-protection schemes work properly, and for communications with the VDMAD to synchronize DMA channel usage. %@NL@% The sources are on the Virtual Device Samples and Tools disk # 2 (2) under the \VFD directory structure. Be sure to expand the compressed files to their normal size after copying them to your hard disk. See Section 5.2, "Expand the Compressed Files to Their Normal Size," for details on how to do this. %@NL@%