Training
Certifications
Books
Special Offers
Community




 
Microsoft® Windows® 2000 Driver Development Kit
Author Microsoft Corporation
Pages 3616
Disk N/A
Level Int/Adv
Published 04/12/2000
ISBN 9780735609297
ISBN-10 0-7356-0929-2
Price(USD) $169.99
To see this book's discounted price, select a reseller below.
 

More Information

About the Book
Table of Contents
Sample Chapter
Index
Related Series
Related Books
About the Author

Support: Book & CD

Rate this book
Barnes Noble Amazon Quantum Books

 

Table of Contents


Using This Documentationxliii
Documentation Roadmapxliii
Using This Documentation Onlinexlviii
Documentation Conventionsxlix
SECTION 1 DRIVER WRITER’S GUIDE 
CHAPTER 1 Driver Development Environment3
    1.1 Free Build and Checked Build3
    1.2 Debugging Environment5
CHAPTER 2 Testing Drivers7
    2.1 Driver Verifier7
        2.1.1 Capabilities of Driver Verifier8
        2.1.2 Capabilities of Driver Verifier for Graphics Drivers15
        2.1.3 Activating and Monitoring Driver Verifier19
SECTION 2 PLUG AND PLAY, POWER MANAGEMENT, AND SETUP DESIGN GUIDE 
PART 1 REQUIREMENTS FOR PLUG AND PLAY AND POWER MANAGEMENT 
CHAPTER 1 Introduction to Plug and Play and Power Management33
    1.1 What Is Plug and Play?34
        1.1.1 PnP Components35
        1.1.1 Levels of Support for PnP36
    1.2 What Is Power Management?36
        1.2.1 Industry Initiatives for Power Management38
        1.2.2 Levels of Support for Power Management38
        1.2.3 System-Wide Overview of Power Management38
        1.2.4 Power States40
    1.3 Device Tree40
    1.4 Driver Layers and Device Objects42
        1.4.1 Kinds of Drivers42
        1.4.2 Driver Layers — An Example45
        1.4.3 Kinds of Device Objects48
        1.4.4 Device Objects — An Example50
CHAPTER 2 Required Driver Support for PnP and Power Management55
    2.1 Overview of Required PnP Support55
    2.2 PnP and Power Management DriverEntry Routine56
    2.3 PnP and Power Management AddDevice Routine58
        2.3.1 Guidelines for Writing AddDevice Routines60
    2.4 The DispatchPnP Routine61
    2.5 The DispatchPower Routine62
    2.6 PnP and Power Management Unload Routine63
PART 2 PLUG AND PLAY 
CHAPTER 1 Understanding PnP67
    1.1 PnP Driver Design Guidelines67
    1.2 PnP and the Device Tree69
    1.3 PnP Device States70
    1.4 Dynamically Adding a New PnP Device72
    1.5 Hardware Resources80
        1.5.1 Logical Configurations82
    1.6 Using GUIDs in Drivers83
        1.6.1 Defining and Exporting New GUIDs84
        1.6.2 Including GUIDs in Driver Code85
CHAPTER 2 Rules for Handling Plug and Play IRPs87
    2.1 PnP IRP Requirements87
    2.2 Passing PnP IRPs Down the Device Stack89
    2.3 Postponing PnP IRP Processing Until Lower Drivers Finish91
CHAPTER 3 Starting, Stopping, and Removing Devices 97
    3.1 Starting a Device97
        3.1.1 Starting a Device in a Function Driver98
        3.1.2 Starting a Device in a Filter Driver100
        3.1.3 Starting a Device in a Bus Driver100
        3.1.4 Start Device Design Considerations101
    3.2 Stopping a Device for Resource Rebalancing101
        3.2.1 Understanding When Stop IRPs Are Issued101
        3.2.2 Handling an IRP_MN_QUERY_STOP_DEVICE Request103
        3.2.3 Handling an IRP_MN_STOP_DEVICE Request106
        3.2.4 Handling an IRP_MN_CANCEL_STOP_DEVICE Request107
        3.2.5 Holding Incoming IRPs When a Device Is Paused108
    3.3 Removing a Device109
        3.3.1 Understanding When Remove IRPs Are Issued109
        3.3.2 Handling an IRP_MN_QUERY_REMOVE_DEVICE Request112
        3.3.3 Handling an IRP_MN_REMOVE_DEVICE Request115
        3.3.4 Handling an IRP_MN_CANCEL_REMOVE_DEVICE Request119
        3.3.5 Handling an IRP_MN_SURPRISE_REMOVAL Request120
CHAPTER 4 Using PnP Notification125
    4.1 PnP Notification Overview126
    4.2 Guidelines for Writing PnP Notification Callback Routines128
    4.3 Using PnP Device Interface Change Notification128
        4.3.1 Registering for Device Interface Change Notification129
        4.3.2 Handling Device Interface Change Events130
    4.4 Using PnP Target Device Change Notification130
        4.4.1 Registering for Target Device Change Notification131
        4.4.2 Handling a GUID_TARGET_DEVICE_QUERY_REMOVE Event131
        4.4.3 Handling a GUID_TARGET_DEVICE_REMOVE_COMPLETE Event132
        4.4.4 Handling a GUID_TARGET_DEVICE_REMOVE_CANCELLED Event133
    4.5 Using PnP Hardware Profile Change Notification133
        4.5.1 Registering for Hardware Profile Change Notification133
        4.5.2 Handling Hardware Profile Change Events134
    4.6 Using PnP Custom Notification135
CHAPTER 5 Supporting Multifunction Devices137
    5.1 Supporting Multifunction PC Card Devices138
        5.1.1 Supporting PC Cards That Conform to the Multifunction Standard138
        5.1.2 Supporting PC Cards That Have Incomplete Configuration Register Addresses139
        5.1.3 Supporting PC Cards That Have Incomplete Configuration Registers142
    5.2 Supporting Multifunction PCI Devices146
    5.3 Supporting Multifunction Devices On Other Buses147
    5.4 Using the System-Supplied mf.sys147
    5.5 Creating Resource Maps for a Multifunction Device150
PART 3 POWER MANAGEMENT 
CHAPTER 1 Supporting Power Management in Drivers155
    1.1 Kernel-Mode Power Management Components156
        1.1.1 ACPI BIOS156
        1.1.2 ACPI Driver156
        1.1.3 Power Manager157
        1.1.4 Driver Role in Power Management157
    1.2 Power Management Responsibilities for Drivers158
        1.2.1 Reporting Device Power Capabilities158
        1.2.2 Setting Device Object Flags for Power Management162
        1.2.3 Handling Power IRPs163
        1.2.4 Powering Up a Device167
        1.2.5 Powering Down a Device168
        1.2.6 Enabling Device Wake-up168
    1.3 Rules for Handling Power IRPs169
        1.3.1 Using PoCallDriver169
        1.3.2 Passing Power IRPs170
        1.3.3 Queuing I/O Requests While a Device Is Sleeping172
        1.3.4 Handling Unsupported or Unrecognized Power IRPs172
CHAPTER 2 Managing Power for Individual Devices173
    2.1 Device Power States174
        2.1.1 Device Working State D0175
        2.1.2 Device Sleeping States D1, D2, and D3175
        2.1.3 Required Support for Device Power States177
    2.2 Managing Device Power Policy178
    2.3 Handling IRP_MN_SET_POWER for Device Power States180
        2.3.1 Handling Device Power-down IRPs181
        2.3.2 Handling Device Power-up IRPs184
        2.3.3 IoCompletion Routines for Device Power IRPs186
    2.4 Handling IRP_MN_QUERY_POWER for Device Power States187
    2.5 Sending IRP_MN_QUERY_POWER or IRP_MN_SET_ POWER for Device Power States189
    2.6 Detecting an Idle Device191
        2.6.1 Using Power Manager Routines for Idle Detection191
        2.6.2 Performing Device-Specific Idle Detection192
CHAPTER 3 Handling System Power State Requests193
    3.1 System Power States194
        3.1.1 System Working State S0194
        3.1.2 System Sleeping States S1, S2, S3, S4195
        3.1.3 System Shutdown State S5197
        3.1.4 System Power Actions198
    3.2 System Power Policy199
    3.3 Preventing System Power State Changes199
    3.4 Handling IRP_MN_QUERY_POWER for System Power States200
        3.4.1 Failing a System Query-Power IRP201
        3.4.2 Handling a System Query-Power IRP in a Device Power Policy Owner202
        3.4.3 Handling a System Query-Power IRP in a Bus Driver203
        3.4.4 Handling a System Query-Power IRP in a Filter Driver203
    3.5 Handling IRP_MN_SET_POWER for System Power States204
        3.5.1 Handling a System Set-Power IRP in a Device Power Policy Owner205
        3.5.2 Handling a System Set-Power IRP in a Bus Driver207
        3.5.3 Handling a System Set-Power IRP in a Filter Driver208
CHAPTER 4 Supporting Devices that Have Wake-up Capabilities209
    4.1 Overview of Wait/Wake Operation210
        4.1.1 Determining Whether a Device Can Wake the System211
        4.1.2 Understanding the Path of Wait/Wake IRPs through a Device Tree212
        4.1.3 Overview of Wait/Wake IRP Completion217
    4.2 Steps in Handling a Wait/Wake IRP218
        4.2.1 Handling a Wait/Wake IRP in a Function (FDO) or Filter Driver (Filter DO)219
        4.2.2 Handling a Wait/Wake IRP in a Bus Driver (PDO)220
        4.2.3 IoCompletion Routines for Wait/Wake IRPs221
    4.3 Sending a Wait/Wake IRP222
        4.3.1 Determining When to Send a Wait/Wake IRP222
        4.3.2 Wait/Wake IRP Requests223
        4.3.3 Wait/Wake Callback Routines223
        4.3.4 Canceling a Wait/Wake IRP224
    4.4 Cancel Routines for Wait/Wake IRPs225
PART 4 SETUP 
CHAPTER 1 DEVDevice Installation Overview229
    1.1 Device Installation Components229
    1.2 Sample PnP Device Installation232
    1.3 How Does Setup Select a Driver For a Device?235
    1.4 System Setup Phases239
CHAPTER 2 Providing a Driver For a Device241
    2.1 Driver Files241
    2.2 Driver Information in the Registry242
    2.3 Specifying Driver Load Order244
    2.4 Installing Filter Drivers247
    2.5 Installing a Null Driver for a Device249
CHAPTER 3 Creating an INF File251
    3.1 General Guidelines for INF Files251
    3.2 Specifying the Source and Target Locations for Device Files252
    3.3 Creating a Cross-Platform and/or Dual-OS INF File254
    3.4 Creating International INF Files256
    3.5 Tightening File-Open Security in a Device INF File256
    3.6 Accessing INF Files From an Application258
        3.6.1 Opening and Closing an INF File258
        3.6.2 Retrieving Information From an INF File258
CHAPTER 4 Writing a Coinstaller259
    4.1 Coinstaller Overview259
    4.2 Coinstaller Interface262
    4.3 Coinstaller Operation264
        4.3.1 Handling DIF Codes264
    4.4 Registering a Coinstaller266
        4.4.1 Registering a Device-Specific Coinstaller268
        4.4.2 Registering a Class Coinstaller269
CHAPTER 5 Writing a Class Installer271
    5.1 Class Installer Interface271
    5.2 Device Installation Functions Summary273
    5.3 Registering a Class Installer273
    5.4 Tightening File-Open Security in a Class Installer INF File274
CHAPTER 6 Writing a Custom Device Installation Application277
    6.1 Installing a Software Utility That Accompanies a Driver277
    6.2 Custom Installation Application Guidelines278
CHAPTER 7 Providing Device Property Pages281
    7.1 Required Support for Device Property Pages281
    7.2 Handling DIF_ADDPROPERTYPAGE_ADVANCED Requests282
    7.3 Property Page Callback Function284
    7.4 Handling Windows Messages for Property Pages285
CHAPTER 8 Troubleshooting Device Installation287
    8.1 Using SetupAPI Logging289
        8.1.1 Setting SetupAPI Logging Levels289
        8.1.2 Interpreting a Sample SetupAPI Log File291
    8.2 Displaying Hidden Devices in Device Manager294
CHAPTER 9 Installing a Device Required to Boot the Machine295


Next




Top of Page


Last Updated: Saturday, July 7, 2001