The Windows 2000 Device Driver Book: A Guide for Programmers (2nd Edition) (Microsoft Technologies Series) - A Guide for Programmers (2000)
Front Cover Book Details
Author
Art Baker
Jerry Lozano
Genre Windows Driver Development
Subject Microsoft Windows device drivers (Computer programs)
Publication Date 11/30/00
Format Paperback (234 x 178 mm)
Publisher Prentice Hall PTR
Language English
Extras CD-Rom
Plot

Editorial Reviews


Dr. Dobb's Electronic Review of Computer Books

Read the full review for this book.

At just over 520 pages, The Windows NT Device Driver Book is half the length and less longwinded than more recent texts. However, it is less complete than more recent books and has been criticized as inaccurate on NT DDK mail lists and (with the advent of Windows 2000 and WDM drivers) out of date. Still, some minor things are covered in this book that are not covered in the current crop of books. This includes using hardware compatibility test suites (the HCT CD-ROMs in the MSDN) as a part of stress testing drivers and using DUMPEXAM as well as WinDbg.exe to read crash dumps. --Regan Russell, Dr. Dobb's Electronic Review of Computer Books
--This text refers to an out of print or unavailable edition of this title.



The publisher, Prentice-Hall ECS Professional

The most comprehensive, authoritative guide to Windows NT driver development. Now that Windows NT is rapidly becoming the business operating system of choice, more and more programmers are faced with developing Windows NT drivers. This book explains the complex Windows driver architecture, and presents insights into a myriad of practical details that are rarely, if ever, documented. It clarifies the murky Microsoft Driver Documentation Kit (DDK) documentation, and contains extensive detail missing from the DDK. This information is essential now, and will prepare developers for the future, when Microsoft introduces the common Win32 Driver Model for Windows NT and Windows 95. Learn about the NT I/O Manager and its data structures, and discover how various hardware issues impact driver design. Learn about full-duplex driver architecture, techniques for handling time-out conditions, logging device errors, kernel-model threads, higher-level drivers, and class drivers for SCSI devices. Understand how to set up a driver development environment and analyze crash dumps. Includes extensive sample code on diskette, designed specifically to help streamline development projects. For all Windows programmers who have a role in writing device drivers.
--This text refers to an out of print or unavailable edition of this title.



From the Inside Flap

Preface

This book explains how to write, install, and debug device drivers for Windows 2000. It is intended to be a companion to the Microsoft DDK documentation and software.

Windows 2000 represents a major improvement to previous versions of Windows NT. Device drivers for Windows 2000 may be designed for the new Windows Driver Model (WDM) architecture. If so, the driver will be source compatible with Windows 98. This book covers the new WDM specification.

This book will also prove useful to those studying the internals of Windows 2000, particularly the I/O subsystem and related components.What You Should Already Know

All instruction assumes a base knowledge level. First, the reader should be familiar with Windows 2000 administration—security and setup, for example. Since experimentation with kernel-mode code can (and will) cause system problems, the reader should be prepared and able to restore a chaotic OS.

Second, the reader should be competent in the C programming language and somewhat familiar with C++. Only a little C++ is used in this book, and then only for the purpose of simplifying tedious code.

Third, experience with Win32 user-mode programming is useful. Knowing how user-mode code drives I/O devices is useful in designing and testing device driver code. The test code for the examples in this book rely on the console subsystem model for Windows. To review this topic, the reader is referred to the Win32 Programmers Reference, particularly the chapters on I/O primitives (CreateFile, ReadFile, WriteFile, and DeviceIoControl). The bibliography lists other references for this topic.

Finally, while no specific prior knowledge of hardware or device driver software design is assumed, it would be useful if the reader had experience with some aspect of low-level device interfacing. For example, knowledge of writing device drivers for a Unix system will prove quite useful when reading this book.What's Covered

The focus of this book is to first explain the architecture of the hardware, environment, and device driver, and then to explain the details of writing code.

Chapters are grouped within this book as follows:

Chapters 1-5: The first five chapters of this book cover the foundation of what's needed to write a device driver. This includes coverage of the Windows 2000 architecture, hardware terminology and bus basics, and an in-depth view of the Windows 2000 I/O Manager and related services.

Chapters 6-13: The next eight chapters form the nucleus of this book. The chapters cover everything from the mechanics of building a driver to the specifics of instrumenting a driver to log errors and other events.

Chapters 14-15: These two chapters deal with somewhat more advanced topics within device driver construction. This includes the use of system threads, layering, filtering, and utilizing driver classes.

Chapters 16-17: The final chapters deal with the practical but necessary details of driver installation and debugging. The use of Windows 2000 INF files for "automatic" installation of a plug and play device driver is covered (as well as manual installation for legacy devices). The use of WinDbg is covered in sufficient detail so that the programmer can actually perform interactive debugging.

Appendices: The appendices cover reference information needed for driver development. The mechanics of Windows 2000 symbol file installation, bugcheck codes, and so on are listed. What's Not

Since the purpose of this book is to cover driver development from "the ground up," some specific topics fall outside its scope. Specifically, the list of topics not covered includes

File system drivers

Currently, the construction of a full Windows 2000 Installable File System requires the acquisition of the Microsoft IFS kit. The bibliography of this book points to one source for more information on this topic. Potential users of the IFS kit will benefit greatly from this book, as the material covered is essential prerequisite knowledge.

Device-specific driver information

The construction of NIC (Network Interface Card), SCSI, video (including capture devices), printers, and multimedia drivers is not specifically covered in this book. Chapter 1 discusses the architectural implications of such drivers, but even individual chapters on each of these driver types would seriously shortchange the requisite knowledge.

Virtual DOS device drivers

The current wave of driver development is toward the WDM 32-bit model. Legacy 16-bit VDDs are no longer of interest.About the Sample Code

Most chapters in this book include one or more sample drivers. All code is included on the accompanying CD. Samples for each chapter are in separate subdirectories on the CD, so installation of individual projects is straightforward.

The CD also includes a device driver application wizard for Microsoft Visual C++ version 6. This wizard configures the build environment so that code can be written, compiled, and linked within Visual Studio.

Platform dependencies:

The sample code included with this book has been targeted and tested on Intel platforms only. Since it appears that the last non-Intel platform (Alpha) was dropped from the final release of Windows 2000, this should come as no surprise. Be advised, however, that Windows 2000 is intrinsically a platform-independent OS. It is a straightforward process to port the OS to many modern hardware sets. Driver writers should consider designs that take advantage of the Windows 2000 abstractions that permit source compatibility with non-Intel platforms.

To build and run the examples:

Besides the Microsoft DDK (Device Driver Kit) (which is available on an MSDN subscription or, at present, free for download from the Microsoft web site at microsoft/DDK), the sample code assumes that Microsoft Visual C++ is installed. The device driver application wizard was built for Visual Studio version 6. Obviously, with some effort the sample code can be built using other vendors' compilers.

Of course, an installed version of Windows 2000 (Professional, Server, or Enterprise) is required. For interactive debugging using WinDbg, a second host platform is required.History of this Book

The first version of this book was written by Art Baker, entitled The Windows NT Device Driver Book. By any account, the book was required reading for any NT driver author. The Microsoft driver model is a continuously moving target. As such, recently introduced books on this subject provided more and up-to-date information. The goal of this revision of the book is to carry forward the goals, style, and clarity of Art's original work while updating the material with the very latest information available from Microsoft.

If you are a previous reader of the original version of this book, I hope you will find this version just as useful. I have attempted to provide accurate, concise, and clear information on the subject of Windows 2000 device drivers. While I have relied heavily on Art's original work, any errors present in this book are entirely mine.Training and Consulting Services

The material in this book is based on training and consulting performed for various companies within the industry.

The subject matter of this book is presented exclusively by UCI in the format of a five-day instructor-lead lecture/lab course. The course is available as public or on site classes. UCI provides comprehensive training in high-end programming, web development and administration, databases, and system technologies.

For more information please visit the UCI web site at ucitraining or use the address information below:

UCI Corporation
4 Constitution Way
Suite G
Woburn, MA 01801

1-800-884-1772

The revision author, Jerry Lozano, provides seminars and workshops on the topic of device drivers and other related subjects. For more information visit the web site: StarJourney




From the Back Cover

  • The #1 Windows device driver book—fully updated for Windows 2000!
  • Step-by-step planning, implementation, testing, debugging, installation, and distribution
  • Complete coverage of the new Windows Driver Model (WDM)
  • Practical debugging and interactive troubleshooting
  • CD-ROM: Exclusive tools for streamlining driver development, plus extensive C/C++ sample driver library!
  • Windows Driver Model (WDM) for Windows 2000 and 98—in depth!
  • Building drivers that support Plug-and-Play and Power Management
  • Windows Management Instrumentation: logging device errors and events—and interpreting them
  • Constructing safe reentrant driver code
  • Handling time-out conditions safely and effectively
  • Advanced techniques: kernel-mode threads, layered drivers, and more
  • Start-to-finish debugging and troubleshooting techniques

Foreword by Andrew Scoppa, UCI Corporation

The #1 book on Windows driver development—totally updated for Windows 2000!

With The Windows 2000 Device Driver Book, any experienced Windows programmer can master driver development start to finish: planning, implementation, testing, debugging, installation, and distribution. Totally updated to reflect Microsoft's Windows Driver Model (WDM) for Windows 2000 and 98, this programming bestseller covers everything from architecture to tools, and includes a powerhouse library of exclusive tools and code for streamlining any driver development project.

You'll start with a high-level overview of WDM components and then move quickly into the details of the development environment and driver installation. Next, master the Windows 2000 I/O Manager, its data structures, and its interaction with drivers. Using extensive practical examples, you'll implement Plug-and-Play and Power Management; construct safe reentrant driver code; use Windows Management Instrumentation to log errors and events, and more.

The book covers today's most advanced Windows driver development techniques and provides extensive debugging guidance, including crash dump analysis using WinDbg; lists of common bugcheck codes, meanings, and probable causes; and much more.

About the CD-ROM

Bonus CD-ROM contains powerful resources for streamlining device driver development!

  • An exclusive Device Driver AppWizard that works with Visual Studio to instantly create your driver's framework
  • A library of complete sample drivers
  • C++ classes to jumpstart any project-including a Unicode string handling class that eliminates tedious, repetitive code
  • An exclusive Driver Installation Utility to simplify initial testing
UCI

UCI Software Training Centers specializes in high-end developer, systems, and Internet Training on Microsoft products and technologies. For more information about training in this topic and others, UCI can be reached at 800-884-1772, or on the Web at www.ucitraining.com






About the Author

ART BAKER, founder of Cydonix Corporation, has spent 30 years writing device-control software. For 15 years, he has trained professional developers to write device drivers.

JERRY LOZANO is an Electrical Engineer and has been writing low-level device and OS code since 1976. For several years, he has been training and consulting on Microsoft system tools and development.






Excerpt. © Reprinted by permission. All rights reserved.

Preface

This book explains how to write, install, and debug device drivers for Windows 2000. It is intended to be a companion to the Microsoft DDK documentation and software.

Windows 2000 represents a major improvement to previous versions of Windows NT. Device drivers for Windows 2000 may be designed for the new Windows Driver Model (WDM) architecture. If so, the driver will be source compatible with Windows 98. This book covers the new WDM specification.

This book will also prove useful to those studying the internals of Windows 2000, particularly the I/O subsystem and related components.

What You Should Already Know

All instruction assumes a base knowledge level. First, the reader should be familiar with Windows 2000 administration—security and setup, for example. Since experimentation with kernel-mode code can (and will) cause system problems, the reader should be prepared and able to restore a chaotic OS.

Second, the reader should be competent in the C programming language and somewhat familiar with C++. Only a little C++ is used in this book, and then only for the purpose of simplifying tedious code.

Third, experience with Win32 user-mode programming is useful. Knowing how user-mode code drives I/O devices is useful in designing and testing device driver code. The test code for the examples in this book rely on the console subsystem model for Windows. To review this topic, the reader is referred to the Win32 Programmers Reference, particularly the chapters on I/O primitives (CreateFile, ReadFile, WriteFile, and DeviceIoControl). The bibliography lists other references for this topic.

Finally, while no specific prior knowledge of hardware or device driver software design is assumed, it would be useful if the reader had experience with some aspect of low-level device interfacing. For example, knowledge of writing device drivers for a Unix system will prove quite useful when reading this book.

What's Covered

The focus of this book is to first explain the architecture of the hardware, environment, and device driver, and then to explain the details of writing code.

Chapters are grouped within this book as follows:

  • Chapters 1-5: The first five chapters of this book cover the foundation of what's needed to write a device driver. This includes coverage of the Windows 2000 architecture, hardware terminology and bus basics, and an in-depth view of the Windows 2000 I/O Manager and related services.
  • Chapters 6-13: The next eight chapters form the nucleus of this book. The chapters cover everything from the mechanics of building a driver to the specifics of instrumenting a driver to log errors and other events.
  • Chapters 14-15: These two chapters deal with somewhat more advanced topics within device driver construction. This includes the use of system threads, layering, filtering, and utilizing driver classes.
  • Chapters 16-17: The final chapters deal with the practical but necessary details of driver installation and debugging. The use of Windows 2000 INF files for "automatic" installation of a plug and play device driver is covered (as well as manual installation for legacy devices). The use of WinDbg is covered in sufficient detail so that the programmer can actually perform interactive debugging.
  • Appendices: The appendices cover reference information needed for driver development. The mechanics of Windows 2000 symbol file installation, bugcheck codes, and so on are listed.

What's Not

Since the purpose of this book is to cover driver development from "the ground up," some specific topics fall outside its scope. Specifically, the list of topics not covered includes

File system drivers
Currently, the construction of a full Windows 2000 Installable File System requires the acquisition of the Microsoft IFS kit. The bibliography of this book points to one source for more information on this topic. Potential users of the IFS kit will benefit greatly from this book, as the material covered is essential prerequisite knowledge.
Device-specific driver information
The construction of NIC (Network Interface Card), SCSI, video (including capture devices), printers, and multimedia drivers is not specifically covered in this book. Chapter 1 discusses the architectural implications of such drivers, but even individual chapters on each of these driver types would seriously shortchange the requisite knowledge.
Virtual DOS device drivers
The current wave of driver development is toward the WDM 32-bit model. Legacy 16-bit VDDs are no longer of interest.

About the Sample Code

Most chapters in this book include one or more sample drivers. All code is included on the accompanying CD. Samples for each chapter are in separate subdirectories on the CD, so installation of individual projects is straightforward.

The CD also includes a device driver application wizard for Microsoft Visual C++ version 6. This wizard configures the build environment so that code can be written, compiled, and linked within Visual Studio.

Platform dependencies:
The sample code included with this book has been targeted and tested on Intel platforms only. Since it appears that the last non-Intel platform (Alpha) was dropped from the final release of Windows 2000, this should come as no surprise. Be advised, however, that Windows 2000 is intrinsically a platform-independent OS. It is a straightforward process to port the OS to many modern hardware sets. Driver writers should consider designs that take advantage of the Windows 2000 abstractions that permit source compatibility with non-Intel platforms.
To build and run the examples:
Besides the Microsoft DDK (Device Driver Kit) (which is available on an MSDN subscription or, at present, free for download from the Microsoft web site at www.microsoft.com/DDK), the sample code assumes that Microsoft Visual C++ is installed. The device driver application wizard was built for Visual Studio version 6. Obviously, with some effort the sample code can be built using other vendors' compilers.

Of course, an installed version of Windows 2000 (Professional, Server, or Enterprise) is required. For interactive debugging using WinDbg, a second host platform is required.

History of this Book

The first version of this book was written by Art Baker, entitled The Windows NT Device Driver Book. By any account, the book was required reading for any NT driver author. The Microsoft driver model is a continuously moving target. As such, recently introduced books on this subject provided more and up-to-date information. The goal of this revision of the book is to carry forward the goals, style, and clarity of Art's original work while updating the material with the very latest information available from Microsoft.

If you are a previous reader of the original version of this book, I hope you will find this version just as useful. I have attempted to provide accurate, concise, and clear information on the subject of Windows 2000 device drivers. While I have relied heavily on Art's original work, any errors present in this book are entirely mine.

Training and Consulting Services

The material in this book is based on training and consulting performed for various companies within the industry.

The subject matter of this book is presented exclusively by UCI in the format of a five-day instructor-lead lecture/lab course. The course is available as public or on site classes. UCI provides comprehensive training in high-end programming, web development and administration, databases, and system technologies.

For more information please visit the UCI web site at www.ucitraining.com or use the address information below:

UCI Corporation
4 Constitution Way
Suite G
Woburn, MA 01801

1-800-884-1772

The revision author, Jerry Lozano, provides seminars and workshops on the topic of device drivers and other related subjects. For more information visit the web site: www.StarJourney.com





Personal Details
Collection Status In Collection
Store eBay
Location A06
Purchase Price $30.00
Purchase Date 5/1/04
Condition Near Mint
Index 546
Owner Paulo Mendes
Read It No
Links Amazon US
Amazon UK
Barnes & Noble
Powell's
Collection # 001315
Main Subject Device Driver
Secondary Subject Windows 2000
Product Details
LoC Classification QA76.76.D49B35 2001
Dewey 005.4/4769
ISBN 0130204315
Edition 01
Printing 3
Series Prentice Hall PTR Microsoft technologies series
Country USA
Cover Price $69.99
Nr of Pages 480
First Edition Yes
Rare No