| |
| |
Foreword | |
| |
| |
Acknowledgments | |
| |
| |
| |
Introduction | |
| |
| |
An Overview of the Operating Systems | |
| |
| |
Windows 2000 Drivers | |
| |
| |
Sample Code | |
| |
| |
Organization of This Book | |
| |
| |
Other Resources | |
| |
| |
Warning | |
| |
| |
| |
Basic Structure of a WDM Driver | |
| |
| |
Device and Driver Layering | |
| |
| |
The DriverEntry Routine | |
| |
| |
The AddDevice Routine | |
| |
| |
Windows 98 Compatibility Notes | |
| |
| |
| |
Basic Programming Techniques | |
| |
| |
The Kernel-Mode Programming Environment | |
| |
| |
Error Handling | |
| |
| |
Memory Management | |
| |
| |
String Handling | |
| |
| |
Miscellaneous Programming Techniques | |
| |
| |
Windows 98 Compatibility Notes | |
| |
| |
| |
Synchronization | |
| |
| |
An Archetypal Synchronization Problem | |
| |
| |
Interrupt Request Level | |
| |
| |
Spin Locks | |
| |
| |
Kernel Dispatcher Objects | |
| |
| |
Other Kernel-Mode Synchronization Primitives | |
| |
| |
| |
The I/O Request Packet | |
| |
| |
Data Structures | |
| |
| |
The "Standard Model" for IRP Processing | |
| |
| |
Completing I/O Requests | |
| |
| |
Passing Requests Down to Lower Levels | |
| |
| |
Cancelling I/O Requests | |
| |
| |
Managing Your Own IRPs | |
| |
| |
Loose Ends | |
| |
| |
| |
Plug and Play | |
| |
| |
IRP_MJ_PNP Dispatch Function | |
| |
| |
Starting and Stopping Your Device | |
| |
| |
Managing PnP State Transitions | |
| |
| |
Other Configuration Functionality | |
| |
| |
Windows 98 Compatibility Notes | |
| |
| |
| |
Reading and Writing Data | |
| |
| |
Configuring Your Device | |
| |
| |
Addressing a Data Buffer | |
| |
| |
Ports and Registers | |
| |
| |
Servicing an Interrupt | |
| |
| |
Direct Memory Access | |
| |
| |
| |
Power Management | |
| |
| |
The WDM Power Model | |
| |
| |
Managing Power Transitions | |
| |
| |
Additional Power Management Details | |
| |
| |
Windows 98 Compatibility Notes | |
| |
| |
| |
Specialized Topics | |
| |
| |
Filter Drivers | |
| |
| |
Logging Errors | |
| |
| |
I/O Control Operations | |
| |
| |
System Threads | |
| |
| |
Executive Work Items | |
| |
| |
Watchdog Timers | |
| |
| |
Windows 98 Compatibility Notes | |
| |
| |
| |
Windows Management Instrumentation | |
| |
| |
WMI Concepts | |
| |
| |
WDM Drivers and WMI | |
| |
| |
User-Mode Applications and WMI | |
| |
| |
Windows 98 Compatibility Notes | |
| |
| |
| |
The Universal Serial Bus | |
| |
| |
Programming Architecture | |
| |
| |
Working with the Bus Driver | |
| |
| |
| |
Installing Device Drivers | |
| |
| |
The INF File | |
| |
| |
Defining a Device Class | |
| |
| |
Launching an Application | |
| |
| |
Windows 98 Compatibility Notes | |
| |
| |
| |
Coping with Windows 98 Incompatibilities | |
| |
| |
Defining Stubs for Kernel-Mode Routines | |
| |
| |
Determining the Operating System Version | |
| |
| |
| |
Using GENERIC.SYS | |
| |
| |
| |
Using WDMWIZ.AWX | |
| |
| |
Basic Driver Information | |
| |
| |
DeviceloControl Codes | |
| |
| |
I/O Resources | |
| |
| |
Power Capabilities | |
| |
| |
USB Endpoints | |
| |
| |
WMI Support | |
| |
| |
Parameters for the INF File | |
| |
| |
Now What? | |
| |
| |
Index | |