52964.fb2
Microsoft is the best source of information for most core Windows device driver development issues. Various books and newsgroups are also available to help driver writers. You may well need to check out other sources of information particular to your type of driver. You may need to seek help from vendors, standards bodies, and trade associations, as well as other driver writers.
A Microsoft Developer Network (MSDN) Professional Subscription provides most of the basic information you need to write device drivers. You get all the basic tools, Driver Development Kits (DDKs), and beta test versions of the Microsoft operating systems. However, it is worth keeping an eye on the Microsoft websites, as helpful articles and late-breaking news can often be posted. You will also need a C or C++ compiler, such as Visual Studio. The crucial Microsoft web sites are:
http://www.microsoft.com/hwdev/
http://www.microsoft.com/hwdev/driver/
http://msdn.microsoft.com/developer/
The DDKs include many example drivers that are very useful. Searching through these examples will often show you how to use a particular function or technique. Alternatively, you can base your entire driver on an existing example. Needless to say, do not use code blindly — make sure you understand what is going on. Finally, the sample driver directories often contain useful documentation in the form of Word or text files.
Table A.1 Information resources
Advanced Configuration and Power Interface Specification, Revision 1.0 | http://www.teleport.com/~acpi/ |
Device Bay Interface Specification, Version 1.0 | http://www.device-bay.org |
Display Data Channel Standard, Version 3.0 | http://www.vesa.org |
Extended Display Identification Data Standard, Version 2.0 | |
El Torito — Bootable CD-ROM Format Specification, Version 1.0 | http://www.ptltd.com/techs/specs.html |
Compaq, Intel, Phoenix BIOS Boot Specification, Version 1.01 | |
Human Input Devices | http://www.usb.org/developers/ |
IEEE 1394 Information | ftp://ftp.symbios.com/pub/standards/io/ |
Intel hardware developer site | http://developer.intel.com |
Interoperability Specification for ICCs and Personal Computer Systems | http://www.smartcardsys.com |
Media Status Notification Support Specification, Version 1.03 | http://www.microsoft.com/hwdev/specs/ Vendor ID registration: pnpid@microsoft.com |
Plug and Play specifications | |
Multiprocessor Specification. Version 1.4 | Intel part number 242016-002 http://developer.intel.com |
PC 99 System design guide | http://www.pcguide.com/ See the following books. PC 99a Addendum published in April 1999. |
PCI Local Bus Specification, Revision 2.1 (PCI 2.1) | PCI Special Interest Group Phone: USA (800) 433-5177 http://www.pcisig.com |
PCI Bus Power Management Interface Specification for PCI to CardBus Bridge, Revision 1.0 | |
Plug and Play Specifications | |
External COM Device Specification, Version 1.0 | http://www.microsoft.com/hwdev/specs/ |
Industry Standard Architecture (ISA) Specification, Version 1.0a | |
Clarification to Plug and Play ISA Specification, Version 1.0a | |
Parallel Port Device Specification, Version 1.0b | |
Small Computer System Interface Specification, Version 1.0 | |
Power Management specifications for device and bus classes | http://www.microsoft.com/hwdev/onnow.htm |
Guidelines for audible noise and other OnNow technologies | |
SFF 8070i, SFF 8038i, SFF 8090 (Mt. Fuji specification), and other SFF specifications | SFF Committee publications FaxAccess: USA (408) 741-1600 (fax-back) Fax: USA (408) 867-2115 ftp://ftp.symbios.com/pub/standards/io/ |
SysInternals web site for device driver utilities and information | http://www.sysinternals.com/ |
Smart Battery System Specification | http://www.sbs-forum.org/ |
Smart Battery Charger Specification, Version 1.0 | |
Smart Battery Selector Specification, Version 1.0 | |
USB Specification, Version 1.0 | Phone: USA (503) 264-0590 Fax: USA (503) 693-7975 http://www.usb.org/developers/ |
USB Class Definition for Communications Devices, Version 0.9 | |
USB Common Class Specification, Version 0.9 | |
USB Device Class Definition for Audio Devices, Version 0.9 | |
USB Device Class Definition for Human Interface Devices, Version 1.0 | |
USB Device Class Definition for Mass Storage Devices, Version 0.9 | |
USB Device Class Definition for Printing Devices, Version 1.0 | |
USB HID Usages Tables, Version 0.9 | |
USB Monitor Control Class Specification, Version 1.0 | |
USB Power Devices Usages Table, Version 0.9 | |
Web-Based Enterprise Management (WBEM) | http://www.microsoft.com/management/wbem/ http://www.dmtf.org/ |
Windows 98 and Windows 2000 DDKs, including NDIS documentation | MSDN Professional membership http://msdn.microsoft.com/ |
Windows Hardware Instrumentation Implementation Guidelines, Version 1.0 (WHIIG), Microsoft Corporation and Intel Corporation | http://www.microsoft.com/hwdev/specs |
Wired for Management Baseline Specification, Version 2.0, Intel Corporation. | http://developer.intel.com/ial/WfM/index.htm |
The two primary Newsgroups for DDK information are comp.os.ms-windows.programmer.nt.kernel-mode and comp.os.ms-windows.programmer.vxd. The Microsoft news server at msnews.microsoft.com also has some useful newsgroups.
The ntdev mailing list covers all NT and W2000 development issues, including device drivers. Subscribe by sending an e-mail to majordomo@atria.com with the following in the body of the message, "subscribe ntdev your_email_address". A daily digest of this list can be obtained by subscribing to the ntdev-digest mailing list instead.
Information on the DDK-L mailing list can be found at http://www.chsw.com/DDK-L/. There is a nominal charge after the first 30 days.
PC 99 System Design Guide, Version 1.0. Microsoft Press, 1998. ISBN 0-7356-0518-1.
Baker, Art. The Windows NT Device Driver Book. Second edition. Prentice Hall, 1999. ISBN 0-13-0204315.
Dekker, Edward N. and Newcomer, Joseph M. Developing Windows NT DeviceDrivers, Vol. 1. Addison Wesley Longman, 1999. ISBN 0-20169590-1.
Hazzah, Karen. Writing Windows VxDs and Device Drivers. Second edition. R&D Books, 1997. ISBN 0-87930-438-3.
Mason, Anthony and Viscarola, Peter G. Windows NT Device Driver Development. Macmillan Technical Publishing, 1998. ISBN 1-57870-0582.
Solomon, David A. Inside Windows NT. Second edition. Microsoft Press, 1998. ISBN 1-57231-677-2.