390 likes | 655 Views
Device Containers and Device Metadata. Creating Great Devices for Windows 7. Cameron Brodeur Program Manager. Overview. The Windows 7 Device E xperience Device containers Device metadata Demo Q&A. What Is the Device Experience?.
E N D
Device Containers and Device Metadata Creating Great Devices for Windows 7 Cameron Brodeur Program Manager
Overview • The Windows 7 Device Experience • Device containers • Device metadata • Demo • Q&A
What Is the Device Experience? • User experience features that define how people discover and use devices that are connected to their PC • System and platform features that define how device makers present their devicesand related services in Windows
Enabling a Device Centric Experience Device Manager Devices and Printers
Devices And Printers Folder New folder makes it easier to find and use devices Simplified pairing for Bluetooth, Wi-Fi, and networked devices Multifunction devices appear as one device “Album Art” for devices enriches the user experience OEM and IHV extensibility point
Device Stage Branding Tasks Preview Shell Icon
Creating a Great Device ExperienceKey takeaway • Windows 7 places the device “center stage” • Devices and Printers • Device Stage • Each device must be • grouped into a single • device container
What's a Device Container? Main Entry:de·vicecon·tain·er Pronunciation:\di-ˈvīskən-ˈtā-nər\ Function:noun a : an object which holds all of the functions exposed by a single device b : a virtual representation of the physical device Date: 2008; Windows 7 Use:The device container for the computer holds the processor, the display adapter, the PCI bus, the USB Universal Host Controller, the 1394 OHCI Compliant Host Controller and many other devices inside the PC.
Device Container Object for an MFP Device Container
The ContainerID PropertyGrouping devnodes into a device container • Globally Unique Identifier (GUID) unique to a physical device • All devnodes belonging to a device container on a given bus share the same ContainerID • ContainerID can be embedded in the device or is auto-generated by Plug and Play • Devices inside the computer need to report themselves as not Removable • Devices external to the computer: top devnode in the hierarchy should report Removable, children should report not Removable
Device Containers In Action Device Containers are displayed and device functionality can be accessed Opening DnP causes all Device Containers to be enumerated Devices and Printers and Device Stage UI DDOI provider A B C • Device functions are returned to • DDOI • Grouped into Device Containers • Metadata retrieved DDOI calls all registered DFO providers A A B C B C A B C Each DFO provider is responsible for returning a collection of all device functions in its stack PnP devnodes have a ContainerID assigned during installation For other device stacks, the DFO may be responsible for assigning a ContainerID at this time PnP Device Function Object (DFO) provider Bluetooth Device Function Object (DFO) provider Print Device Function Object (DFO) provider A A A A B B B B C C C C Stack specific APIs called for enumeration PnP APIs Bluetooth APIs Print APIs Each stack enumerates all device functions and the collection is returned to the calling DFO PnP Bluetooth Stack Print Stack C C B B A A PnP Devnodes Bluetooth Services Print Queues
Windows 7 Logo Requirements • Two new Windows Logo Program requirements for device containers in Windows 7 • Ensure computers and devices are grouped into a single device container DEVFUND-0034 All PnP devices must properly implement the CM_DEVCAP_REMOVABLE capability SYSFUND-0200 Computers must appear as a single object in the Devices and Printers folder
DEVFUND-0034 All PnP devices must properly implement the CM_DEVCAP_REMOVABLE capability • Devices externally connected to the computer must report the Removable capability correctly • Removable indicates that a devnode can be physically disconnected from its parent • Each Removable devnode marks the boundary of a device • New device container created for each Removable devnode
Which Devnodes Should Report the Removable Capability? Not Removable Not Removable Removable • Declaring that a devnode is Removable indicates to PnP that the devnode is the root of a device container • Only the root devnode should be reported as Removable • Child devnodes of the root should not be reported as Removable • Unless they actually represent physically detachable devices • Non-Removable child devnodes will inherit the ContainerID of their parent Device Root Device Root ContainerID {ABCD-…} Function A ContainerID {ABCD-…} Function B ContainerID {ABCD-…} The PC sees one device:
Which Devnodes Should Report the Removable Capability? Not Removable Removable Removable • Declaring that a devnode is Removable indicates to PnP that the devnode is the root of a device container • Only the root devnode should be reported as Removable • Child devnodes of the root should not be reported as Removable • Unless they actually represent physically detachable devices • Non-Removable child devnodes will inherit the ContainerID of their parent Device Root Device Root ContainerID {ABCD-…} Function A Function A ContainerID {1234-…} Function B ContainerID {ABCD-…} The PC sees two devices: +
ExampleA simple device USB Mouse • Windows 7 sees four devnodes • User sees a mouse Removable !Removable !Removable !Removable
Testing DEVFUND-0034 • Manual test • Install the device on the PC • Verify the device has successfully installed • Device is working properly • No yellow-bang icon on any devnodes • Verify that the device is powered on • Open the Devices and Printers folder • Locate the device in the Devices and Printers folder • Only one icon per physical device in the Devices and Printers folder
SYSFUND-0200 Computers must appear as a single object in the Devices and Printers folder • In Windows 7 the computer is a device • Computers contain many integrated devices of interest to the user • To properly represent the computer, all of this functionality must be grouped into a single device container for the computer • Devices integrated with the computer must not report themselves as Removable from the computer
When Computers Don’t Report Removable Correctly • Devices and Printers folder for a laptop with nothing connected to it • Devices and components inside the computer should not appear • These components are displayed because the hardware or the bus driver reported it as Removable from the laptop
Reporting the Removable Capability Correctly • Several options for setting the Removable capability on a devnode • Are you supplying a custom bus driver for the device? • Bus drivers are responsible for correctly setting the Removble capability of their children • ACPI BIOS settings can be applied to alter the Removable capability reported for a device on a given port • _PLD (Physical Location Descriptor) • _RMV (Remove)
Removable Device Override • Windows provides a way for the PC OEM to override removable device capability reporting • Device specified by HardwareID • Override can be restricted to a LocationPath • Intended to be a stopgap solution • Can be set at factory • Requires system reboot • Computers which ship with Removable overrides are eligible for Windows Logo • Best long-term solution involves fixing offending hardware
Testing SYSFUND-0200 • Automated Windows Logo Kit (WLK) 1.5 test • Hardware configuration for computers • Laptops – No external devices can be attached when the test is executed • Desktop – Only a keyboard and mouse can be attached when the test is executed • ComputerSingleDDOTest.exe is executed • Checks that there is only one device container for the computer
SYSFUND-0200 Test Output Examples Test Failed Start: SystemFund-0200: Computers must be represented by one icon in Device Cent er., TUID=0E7AEA02-2712-422F-A9CD-FFBE470FD391 Found Device "USB Input Device". - This device should be part of the computer. Found Device "USB Composite Device". - This device should be part of the computer. Error: 0x0, Error 0x00000000 FAIL: Devices were found that are part of the computer but were reported as removable from the computer. File=__FILE__ Line=468 End: Fail, SystemFund-0200: Computers must be represented by one icon in Device Center., TUID=0E7AEA02-2712-422F-A9CD-FFBE470FD391, Repro=G:\ComputerSingleDDOTe st\ComputerSingleDDOTest.exe Summary: Total=1, Passed=0, Failed=1, Blocked=0, Warned=0, Skipped=0
SYSFUND-0200 Test Output Examples Test Passed Start: SystemFund-0200: Computers must be represented by one icon in Device Cent er., TUID=0E7AEA02-2712-422F-A9CD-FFBE470FD391 PASS: Devices were correctly reported as part of the computer. End: Pass, SystemFund-0200: Computers must be represented by one icon in Device Center., TUID=0E7AEA02-2712-422F-A9CD-FFBE470FD391, Repro=D:\Tools\ComputerSingl eDDOTest\ComputerSingleDDOTest.exe Summary: Total=1, Passed=1, Failed=0, Blocked=0, Warned=0, Skipped=0
Device Metadata Device Metadata
Devices and PrintersMetadata Elements Photo-realistic icon Model Name Device Categories Device Description Device Vendor
Device StageMetadata Elements Overlay watermark image Text color Logos Task / category title Device “Hero” Image Background image and color Task Bar and Preview Pane Branding Bar Task description Task icon Task Area Task area background Device icon Preview image
Associating Metadata with a Device • Metadata can be associated by: • ModelID • HardwareID • ModelID and HardwareID are retrieved from the device • Windows searches locally and online for a matching metadata package • ModelID match is always preferred over HardwareID match • A metadata package can contain a single ModelID and a list of HardwareIDs • Always include a device-specific HardwareID on the device • Enables devices to be matched to an appropriate metadata package
Metadata Associated by ModelID • GUID retrieved from the device which matches a metadata package • Provides flexibility for matching metadata to devices • Target a metadata package to a wide range of devices (e.g., an entire model line) • Develop one metadata package for each specific model of a device (e.g., down to the color of a device) X55 V1 Silver X55 V1 X55 X55 V1 Red X55 V2 X55 V2 By Product Version Different versions of the Fabrikam X55 (V1 / V2) are given different Device Stage experiences By Product Variant Different versions and variations of the Fabrikam X55 (V1 / V2) are given different Device Stage experiences By Product All versions of the FabrikamX55 phone are assigned to the same Device Stage experience
Metadata Associated by HardwareID Choose the HardwareID that most uniquely identifies the device More Specific It is OK to pick multiple HardwareIDs if needed Less Specific Too Generic
Matching Metadata to the Computer Generating a Computer HardwareID • Computer OEMs Take Note! • Windows 7 automatically generates a HardwareID for the computer • HardwareID is generated by hashing the System Management BIOS (SMBIOS) reported Manufacturer + Family + Product Name • Ensure these properties are available and unique for each computer model and manufacturer • A tool (ComputerHardwareID.exe) is provided in the WDK to report the HardwareID generated for the computer • In the absence of metadata, Windows 7 uses the SMBIOS-reported Enclosure Type to display an accurate default icon
Sources of Device Metadata WMIS (the “Album Art” people) Device Metadata Store Software Installer Preinstalled by OEM
What Happens If There Is No Metadata? • Metadata may not always be available for a device • Windows 7 will use information in the PnP devnode if no metadata exists for a device • Assign descriptive names in PnP • Not just for Device Manager anymore • FriendlyNameoutranks DeviceDesc and Metadata ModelName
Call To Action • Read the Multifunction Device Support and Device Container Groupings in Windows 7 whitepaper • Ensure that your device reports its removable relationship correctly • Test your device or PC with the Devices and Printers folder • Only one device container per physical device • Only one device container for the PC • Create metadata for your devices
Summary • Windows 7 advances the device experience • Devices and Printers • Device Stage • Device functionality is grouped into device containers • Metadata is associated with each device container • Customized presentation and user interaction with devices
Additional Resources • Recommended whitepapers available on http://www.microsoft.com/whdc/ • Multifunction Device Support and Device Container Groupings in Windows 7 http://www.microsoft.com/whdc/Device/DeviceExperience/ContainerIDs.mspx • How to Create a Device Metadata Package for the Devices and Printers Folder http://www.microsoft.com/whdc/device/DeviceExperience/CreateDevMetadataPkg.mspx • Device Metadata Package Pipeline http://www.microsoft.com/whdc/device/DeviceExperience/DevMetadataPkgPipe.mspx • Devices and Printers Folder - Extensibility Guide http://www.microsoft.com/whdc/device/DeviceExperience/DevPrintFolder-Ext.mspx • Microsoft Device Experience Development Kit http://www.microsoft.com/whdc/device/DeviceExperience/Dev-Kit.mspx • Windows 7 Device Stage General Development Kit • Windows 7 Device Stage Document Devices Development Kit • Windows 7 Device Stage Keyboards and Mice Kit • Windows 7 Device Stage Mobile Broadband Devices Kit • Windows 7 Device Stage PC Kit • Windows 7 Device Stage Portable Devices Development Kit • Windows 7 Device Stage Smart Card Devices Kit
© 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.