Plug and Play Key Concepts
Jim CavalarisLead Software Design Engineer
George RoussosSenior Program Manager
Device Foundation Platform Team,Device & Storage Technologies Group
Agenda
• Prepared Content• Device Installation Fundamentals• Device and Driver Installation Scenarios• Hardware-First Installation Sequence
• Search• Select• Stage• Install
• Software-First Installation• OEM Preload (OS Offline)• Extending Device Installation
• Audience Q&A
Fundamentals• Device Instance
• A unique instance of a model of device detected by the system or other components
• Software and settings are configured for each device instance detected by the system
• Device ID• A fundamental characteristic describing the model of a device
• Driver Package• .INF File and all the files it copies• Describes software and default settings for applicable devices• Defines applicability to devices using Device IDs• Driver Packages may apply to multiple models of devices• Devices may be supported by multiple Driver Packages
Fundamentals• Driver Store
• Local store containing software and settings supported by the system
• Driver Selection• Process of selecting the “best” software and settings to configure
for a device
• Device Installation• Process of configuring a device with selected software and settings
Device IDs
• Identifies the model of hardware• Format defined by bus driver• Treated as opaque strings – are not parsed!
• Discovered before drivers selected• Used to select matching drivers• Reported by drivers as two separate lists
• Hardware IDs• Usually includes manufacturer and model information
• Compatible IDs• Usually includes “generic” IDs
• Without specific manufacturer or model information
• Compatible IDs considered for match only after Hardware IDs
• Each list is ordered from most to least specific
Hardware IDs:USB\Vid_vvvv&Pid_pppp&Rev_rrrrUSB\Vid_vvvv&Pid_pppp
Compatible IDs:USB\Class_cc&SubClass_ss&Prot_ppUSB\Class_cc&SubClass_ssUSB\Class_cc
Driver Packages
• Consists of the INF file and any associated files• Simple text file (INF file), required• Driver files (.sys, .dll files), optional• Digital signature (.cat), best practice
• Describes supported devices• Hardware IDs, Compatible IDs• A package’s IDs are the “applicability rules”
• Specifies associated files• Where to find them relative to INF• Where to copy them on system
• Defines settings• Instance-specific default registry settings
INFID1, ID2, ID3,…
File 1File 2
File 3File 4
Driver Package
Driver Store
• Local copy of complete driver packages• All files required for all devices
supported by the INF are always present
• Drivers are available to the System to automatically install new devices without user intervention (“hardware-initiated”)
• A driver package must be “staged” to the Driver Store before the driver can be used to install any devices• “Driver staging“ and “Device
installation” are logically separate operations
INF 1
File 1File 2
File 3File 4
Driver Store
INF 2
File 1File 2
File 3File 4
INF 3
File 1File 2
File 3File 4
. . .
Device and Driver Installation Scenarios
• Most developers consider installation with an interactive user present.
• How many of you have thought about device installs in the following contexts?
• OS installation• OS SKU upgrade (e.g., Home Basic to Ultimate)• OS Service Pack install• Settings transfer from old PC to new PC (same or different OS versions)• Home Server machine recovery—boot client off CD & restore system from image on Home
Server• Hardware first install before user logs in• OEM factory floor preloads where no user is logged in• IT department mass deployment with no interactive user• IT department remotely pushing a driver update to a machine where the user doesn’t have
administrator credentials• Windows Update, Auto Update• Headless server, Terminal Server, etc.
Device and Driver Installation Scenarios
• Encourage you as developers to concentrate on the general case of device installation and avoid special-casing specific install scenarios.
• Attend “The Driver Store: Creating Deployable Driver Packages” presentation about authoring installs to work in these scenarios.
Hardware-First Installation Sequence
• A Hardware-First Installation is triggered when a user attaches a device to a system.
• Go through a sequence that illustrates what PnP does in Windows Vista from the point at which a user attaches a USB mouse up to when a user can use that device.
• Four phases of Hardware-First Installation Sequence:
Search Select Stage Install
Search
• The Search phase defines where PnP searches for drivers that match a device, and in what sequence.
Search Select Stage Install
Select• The Select phase is where Ranking occurs.• Ranking is the method PnP uses to determine the best driver match from more than
one available device driver install package for a device. • Rank Factors – in a progressive tie-breaker fashion:
1. Signature for driver package2. Feature score (primarily matters for Display choosing XP or Vista driver model)3. Rank of matching Device ID (Hardware ID or Compatible ID)4. DriverVer Date field5. DriverVer Version field
• Given two packages, if both are equivalently signed, next PnP compares the feature score, then Hardware ID, and so forth to determine which is the best driver match
• For details, see How Setup Selects Drivers (Windows Vista) http://msdn2.microsoft.com/en-us/library/aa477022.aspx
Search Select Stage Install
Driver Selection• Find common IDs between device
and driver packages• Exact ID match required
• Best match determined by “driver ranking” algorithm• Position of matching ID in
Device’s ID lists• Position of matching ID in
INF’s ID list• Digital signature “score”• Date, Version used for tiebreaker
only!
• If selected driver is not present in the Driver Store, it must first be “staged”
Hardware IDs:USB\Vid_vvvv&Pid_pppp&Rev_rrrrUSB\Vid_vvvv&Pid_pppp
Compatible IDs:USB\Class_cc&SubClass_ss&Prot_ppUSB\Class_cc&SubClass_ssUSB\Class_cc
INFID1, ID2, ID3,…
File 1File 2
File 3File 4
INFID1, ID2, ID3,…
File 1File 2
File 3File 4
INFID1, ID2, ID3,…
File 1File 2
File 3File 4
no match!!
other match
best match
Stage• The Stage phase is where driver packages are imported into
the Driver Store (if not already staged) before installation.
• Digital Signature evaluation occurs during the Stage phase.
• De-couple staging from installation of drivers. Two distinct operations in Windows Vista and onwards.
• Different permissions required to stage vs. install drivers, which enables more Standard User device installation scenarios.
Search Select Stage Install
INF
File 1File 2
File 3File 4
Driver Store
INF
File 1File 2
File 3File 4
Driver Disk
Allows flexible access rights requirements for user-initiated store importation
Digital signature validation and unsigned driver consent prompt
performed only once
Drivers can be “staged” independently of device
installation
Driver Staging
System actions
May be Original Media, Windows Update, DevicePath,
Local Directory or Network Share, etc.
Install
• The Install phase configures the device; it loads and starts executing the driver.
• Installation is performed in a non-interactive system context regardless of permission of any currently logged in user.
• Loads the driver into memory and instantiates against a specific device instance.
• A Finish-Install Action or Co-installer may be launched at the end of the Install phase.
Search Select Stage Install
INF
File 1File 2
File 3File 4
Driver Store Target Destination
File 3File 4
Allows flexible access rights requirements for
user-initiated device installation
System actions
User privilege not required to directly manipulate files or
settings
Device Installation
No additional signature or file prompts for installation of
devices using staged drivers
INF
File 1File 2
File 3File 4
Driver Store
INF
File 1File 2
File 3File 4
Driver Disk
File 1File 2
Target Destination
System actions
Hardware-First Installation
Software or user selection of “unstaged” driver
Re-select “staged” driver
Software-First Installation• A Software-First install is a Hardware-First Install preceded by running a
Setup.exe application.• The Software-First Install sequence of events is:
1. An interactive user with Administrative credentials launches Setup.exe application.
2. Setup.exe stages the driver install package by calling an API like SetupCopyOEMInf, DiInstallDriver, or DIFx DriverPackagePreinstall.
3. Setup.exe *may or may not* force the selection of the driver install package using the “force” flag.
4. Setup.exe triggers driver package install by calling UpdateDriverForPlugAndPlayDevices, DiInstallDevice, or DIFx DriverPackageInstall.
5. Setup.exe can perform other actions—such as installing applications—before or after installing the device.
SelectStage Install
INF
File 1File 2
File 3File 4
Driver Store
INF
File 1File 2
File 3File 4
Driver Disk
Target Destination
File 3File 4
System actions
Software-First Installation
System selection of “staged” driver
OEM Preload (OS Offline)• During an OEM Preload, staging occurs under a different
“Host” OS like WinPE. • There is no means for user input during staging beyond
specifying file name.
• Key Definitions• Offline Windows image (OS Offline)
• A Windows image that is not currently running, either an image in a .wim file or a Windows installation on a separate partition.
• Online Windows installation (OS Online)• A Windows installation currently running on the computer
OEM Preload (OS Offline)• The OEM Preload (OS Offline) Install Sequence of events is:
Host OS OS install on Target machine
• During OS install on Target machine there is no means for user input during search, select, install.
SelectStage InstallSearch
Extending Device Installation
• How do I install applications related to a device as part of a Hardware-first Installation?• Co-installer• Finish-install action
• Each approach has pros and cons. We encourage interested parties to attend the following sessions:
• The Driver Store: Creating Deployable Driver Packages
• Extending Device Installation by Using Co-Installers
Key Takeaways
• Consider the vast number of different installation scenarios when authoring your driver packages.• Assume that someone is going to use your driver package in
other installation scenarios than you originally intended.• Don’t hard-code for one installation scenario.
• Software-first, non-Administrator users, OS installation, Offline staging
• Recognize that the different phases of PnP installation occur in different sequences depending upon the installation scenario.
• OS Offline is a new context introduced in Windows Vista that matters to OEMs and IT departments.• Get the Windows Automated Install Kit (WAIK) and stage
packages to offline images
Resources
• Related Sessions• Creating Deployable Driver Packages Mon.
1:30-2:30• Extending Device Installation by Using Co-installers Mon. 4-
5 and Wed. 1:30-2:30
• Windows Automated Installation Kit (WAIK)• Nearly identical to OPK• Go to Microsoft.com, search for “Windows Automated
Installation Kit” or “WAIK” and download from there
• WDK documentation on MSDN• How Setup Selects Drivers (Windows Vista)
http://msdn2.microsoft.com/en-us/library/aa477022.aspx