Vinita Tayal Senior Program Manager
Role of Device Fundamentals (aka devfund) Goals of Device Fundamentals Relationship of devfund requirements & tests to these goals
LogoSystemsFunctionalityFundamentalsDevices Feature/ Functionality ConnectivityFundamentalsDeviceDriver
Windows Touch Windows Touch Windows Media Center Device Stage Device Stage Device Fundamentals Additional Qualifications AQ Enabled Dynamic Partitioning Power Management High Availability High Availability Fault Tolerance Fault Tolerance Client Server Device Connectivity Signature Core functional requirements Logo e.g., 1394, PCI, Bluetooth, USB … Audio Modem Printers Network Bus Display Storage Imaging Graphics Device-specific Functionality …
Baseline quality 25 requirements, 17 tests Device or driver will function properly with Windows OS Compatibility The device or driver will function reliably in common user scenarios Reliability The device or driver will perform reasonably well, regardless of its device class Performance The device or driver will perform securely without destabilizing the system or other devices Security The device or driver maximizes its own availability as well as that of the system to the end user Availability
Requirements INF format Signability Unique ID x64 support Error free installation / un- installation Key Tests Run INF for Single INF (ChkINF) Reinstall with IO WDF logo tests Good to Know - ChkINF Common tool in WDK / WLK Checks for common syntax errors Rerun after INF changes Updated for WDF specific sections Purpose : Device or driver will function properly with Windows OSNEW NEW
Targeted for Windows Driver Framework (WDF) drivers User Mode - UMDF Kernel Mode - KMDF Five requirements – DEVFUND-0036 to DEVFUND-0040 Four tests ChkINF WDF Logo test – Final Verify WDF Co-installer version for UMDF Verify WDF co-installer version for KMDF Address compatibility & reliability tenets
Requirements Reliably handle user mode I/O requests No resource leakages I/O cancellation / completion Error free installation / un- installation Key Tests Stress with IO Disable Enable Sleep Stress Common Scenario IO Cancellation Direct IO DPE Plug ‘n Play Driver (PnPD) Driver Path Exerciser (DPE) Good to Know Driver Verifier Kernel Debugger is best friend for debugging Hang during DPE a real driver issue Purpose : The device or driver will function reliably in common user scenariosNEW NEW
Check device under test is functional Perform simple IO Disable device under test Enable device under test Hibernate, standby, or suspend system Use RTC wake event to wake system Sleep stress, disable enable, common scenarioDriver Verifier = ONKernel Debugger = Your Friend
For proper handling of IO cancellation IRPs With Driver Verifier ON With and without real IO data User scenario User attempts to cancel a request to an application, and the application hangs For Windows 7 and later OS Introduced for “Storage” class devices Extended to “Network” class devices Good to know Crash is a common failure mode Kernel Debugger – very useful !
Requirements Boot drivers are self signed Drivers do not leak resources Device functional without restart Error free installation / un- installation Device supports sleep states Performance of devices/drivers under concurrent scenarios Key Tests CHAOS Embed sign PnPD test Device Path Exerciser Stress tests Good to Know Concurrent tests are designed to be highly destructive on drivers DPE tests for robustness, not functionality. PnPD tests for proper handling of PnP IRPs Kernel Debugger Purpose : The device or driver will perform reasonably well, regardless of its device classNEW NEW
Tests device/driver capability to support S3 & S4 sleep states Attempts to see how a driver handles Power transitions Plug and Play operations IO operations Concurrently!Concurrently! Power Runs Pwrtest.exe to exercise ACPI PnP Runs Plug and Play Driver Test to exercise PnP IO Runs Device Path Exerciser to exercise IO Highly destructive test Tries to crash a driver Kernel Debugger
What Test of driver robustness, not functionality Test for improper driver design, OR Poor implementations leading to system vulnerability to malicious attacks or crashes How Sending thousands of control requests to driver and verifying that Calls complete successfully Does not cause system crash Does not cause memory corruption or leaks Handles invalid data Good to Know Driver Verifier enabled Four logs – Dc2.log, Diags.log, Crashn.log, Crash.log Test hang == real driver issue Kernel Debugger
Requirements Unique ID Error free installation / un- installation Impact on system components Impact on other devices in the system Key Tests Reinstall with IO Device Install Check For Other Device System File Good to Know Drivers must be test signed & test cert trusted on all clients If driver package uses UI & UI data from initial install is not saved FAIL Driver dependencies can cause test failures Purpose : The device or driver will perform securely without destabilizing the system or other devices ALL NEW ALL NEW
Collection of three tests, based on same source Test namePurpose Reinstall with IOTests stability of device under test (DUT) Device Install check for System file consistency Tests impact of DUT on system components Device Install check for Other Device stability Tests impact of DUT on other devices in the system Looks for install issues missed in typical install Driver Verifier Enabled Special DV settings for Windows 7 and later Debugging tips Kernel Debugger Setupapi.log, Cbs.log
Requirements Device driver support query power and set power requests (DEVFUND-0042) Device drivers operate correctly on servers that have processors configured for multiple processor groups (DEVFUND-0035) Key Tests Dynamic Partitioning DP Hot Add CPU DP Hot Replace CPU DP Hot Add RAM DP Hot Replace RAM Multiple Processor Group Good to Know Must be tested with Datacenter Edition or IA64 Manually enable multiple processor groups An actual partitionable system is NOT required Purpose : The device / driver maximizes its own availability as well as that of the system to the end user
Device Fundamentals Baseline quality Kernel Debugger Your best friend Basic tests Also available in WDK Driver Verifier Use during driver development Include Device Fundamental tests – early and often in development process
Overview of Logo Program What’s New in WLK 1.5 session Windows Logo Program webcasts Device Fundamentals Tests Kernel Debugger Tool
Review Device Fundamentals requirements Install latest WLK version Review webcasts Kernel Debugger Tool Windows Logo Program Device Fundamentals Tests Install kernel debugger Investigate any Device Fundamentals test failures
For feedback on the Windows Logo Program or Windows Logo webcasts contact the Logo Team at:
Test nameRequirements Common Scenario Stress with IODEVFUND-0016 Sleep Stress with IODEVFUND-0016, DEVFUND-0043 Disable Enable with IODEVFUND-0016 Device Path Exerciser (DPE)DEVFUND-0004, DEVFUND-0016 Run INF against a Single INFDEVFUND-0001, DEVFUND-0016, DEVFUND-0040 Plug and Play Driver Test (PnPD)DEVFUND-0016 Embedded Signature VerificationDEVFUND-0029 Reinstall with IODEVFUND-0030 CHAOS – Concurrent Hardware & OSDEVFUND-0043 Device Install Check (2 tests)DEVFUND-0005, DEVFUND-0006 IO Cancellation (2 tests)DVEFUND-0013 WDFDEVFUND-0037, DEVFUND-0038 Dynamic PartitioningDEVFUND-0042 Multiple Processor GroupDEVFUND-0035 Mapping between requirements and tests
Device Fundamentals Tests Only if INF provided Server 2003 XPVista Windows 7 Server 2008 R2 Common Scenario Stress with IOYes Sleep Stress With IOYes Disable Enable With IOYes Device Path ExerciserYes Run INFTest against a single INFYes Plug and Play Driver TestYes Embedded Signature VerificationYes Reinstall With IOYes CHAOS – Concurrent Hardware & OSYes Device Install Checks (2 tests)Yes IO Cancellation Tests (2 tests)Yes WDF TesterYes Dynamic PartitioningYes Multiple Processor GroupYes Mapping of Tests to Various Operating Systems
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.