<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Windows Portable Devices Team Blog : MTP</title><link>http://blogs.msdn.com/wpdblog/archive/tags/MTP/default.aspx</link><description>Tags: MTP</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Windows 7 Device Implementation Guidelines for Picture and Video Import</title><link>http://blogs.msdn.com/wpdblog/archive/2009/11/13/windows-7-device-implementation-guidelines-for-picture-and-video-import.aspx</link><pubDate>Sat, 14 Nov 2009 00:51:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9922350</guid><dc:creator>wpdblog</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wpdblog/comments/9922350.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wpdblog/commentrss.aspx?PostID=9922350</wfw:commentRss><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://www.microsoft.com/whdc/device/wpd/PV-Import_Win7.mspx"&gt;Guidelines for Picture and Video Import in Windows 7 white paper&lt;/a&gt; provides information about the picture and video import feature in Windows 7. The white paper includes guidelines for &lt;strong&gt;OEMs &lt;/strong&gt;designing digital cameras and camera-equipped portable devices compatible with and optimized for Windows 7. The following screenshot shows a Device Stage experience for a cellular phone that supports photo and/or video import. The Windows 7 inbox photo import task appears as one of the many tasks that an end-user can interact with that phone.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/wpdblog/WindowsLiveWriter/Windows7DeviceImplementationGuidelinesfo_ED18/DeviceStage_PVImport_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DeviceStage_PVImport" border="0" alt="DeviceStage_PVImport" src="http://blogs.msdn.com/blogfiles/wpdblog/WindowsLiveWriter/Windows7DeviceImplementationGuidelinesfo_ED18/DeviceStage_PVImport_thumb.png" width="640" height="472" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This white paper describes the types of devices that are supported in Windows 7 for the picture and video import feature. In addition, this paper discusses device requirements and recommended features for optimal performance during the import of pictures and video from the device.&lt;/p&gt;  &lt;h3&gt;Topics Covered&lt;/h3&gt;  &lt;p&gt;Some of the topics covered in this white paper are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The supported device classes &lt;/li&gt;    &lt;li&gt;The supported picture and video formats&lt;/li&gt;    &lt;li&gt;Device requirements and recommendations:      &lt;ul&gt;       &lt;li&gt;Preventing re-import of videos synchronized with Windows Media Player by implementing Sync ID device property &lt;/li&gt;        &lt;li&gt;Improving import performance by implementing the Hints Device Service &lt;/li&gt;        &lt;li&gt;Enabling a determinate-style progress bar like the one shown below, instead of the default indeterminate progress bar &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/wpdblog/WindowsLiveWriter/Windows7DeviceImplementationGuidelinesfo_ED18/ProgressBar_PVImport_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ProgressBar_PVImport" border="0" alt="ProgressBar_PVImport" src="http://blogs.msdn.com/blogfiles/wpdblog/WindowsLiveWriter/Windows7DeviceImplementationGuidelinesfo_ED18/ProgressBar_PVImport_thumb.png" width="329" height="189" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;More Resources&lt;/h3&gt;  &lt;p&gt;You can find this whitepaper and more related Windows Portable Devices information (for both application and device development) on the &lt;a href="http://www.microsoft.com/whdc/device/wpd/default.mspx"&gt;Windows Hardware Developer Central&lt;/a&gt; portal.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;This posting is provided &amp;quot;AS IS&amp;quot; with no warranties and confers no rights.&lt;/i&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9922350" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wpdblog/archive/tags/MTP/default.aspx">MTP</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Device+Stage/default.aspx">Device Stage</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Photo+Import/default.aspx">Photo Import</category></item><item><title>WPD Platform Update for Windows Vista</title><link>http://blogs.msdn.com/wpdblog/archive/2009/10/27/wpd-platform-update-for-windows-vista.aspx</link><pubDate>Wed, 28 Oct 2009 01:04:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9913830</guid><dc:creator>wpdblog</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wpdblog/comments/9913830.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wpdblog/commentrss.aspx?PostID=9913830</wfw:commentRss><description>&lt;p&gt;Today we are announcing the final release of the &lt;b&gt;Platform Update for Windows Vista&lt;/b&gt;, which includes an update to WPD to support new features introduced in Windows 7.&lt;/p&gt;  &lt;p&gt;The Platform Update for Windows Vista features a set of runtime libraries which add support for new technologies making it easier for developers to develop for Windows 7 and Windows Vista without impacting their users.&lt;/p&gt;  &lt;h2&gt;&lt;b&gt;Features&lt;/b&gt;&lt;/h2&gt;  &lt;p&gt;The WPD update adds &lt;strong&gt;&lt;i&gt;WPD and&lt;/i&gt; &lt;i&gt;MTP&lt;/i&gt; &lt;i&gt;Device Services&lt;/i&gt;&lt;/strong&gt; and&lt;strong&gt; &lt;i&gt;MTP over Bluetooth&lt;/i&gt;&lt;/strong&gt; features to Windows Vista. The following table identifies the WPD features supported for Windows 7, for Windows Vista, and for Windows Vista with the Platform Update for Windows Vista installed.&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;p&gt;&lt;b&gt;Feature&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td&gt;         &lt;p&gt;&lt;b&gt;Windows 7&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td&gt;         &lt;p&gt;&lt;b&gt;Windows Vista&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td&gt;         &lt;p&gt;&lt;b&gt;Windows Vista + Platform Update for Windows Vista&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;&lt;b&gt;MTP over USB&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Yes&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Yes&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Yes&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;&lt;b&gt;MTP over IP&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Yes&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Yes&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Yes&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;&lt;b&gt;MTP over Bluetooth&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Yes&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;No&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Yes&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;&lt;b&gt;WPD and MTP Device Services&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Yes&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;No&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Yes&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;&lt;b&gt;WPD Automation&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Yes&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;No&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;No&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;&lt;b&gt;Multi-function/Multi-transport&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Yes&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;No&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;No&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;&lt;b&gt;Device Stage&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Yes&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;No&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;No&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;&lt;b&gt;Device Sync Platform&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Yes&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;No&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;No&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h2&gt;Availability and installation&lt;/h2&gt;  &lt;p&gt;The Platform Update for Windows Vista is available for free via Windows Update, Windows Server Update Services and the Microsoft Download Center. Customers running Windows Vista Service Pack 2 with “recommended settings” enabled for Windows Update will automatically receive the update without additional action. The update is also available as a &lt;a href="http://support.microsoft.com/kb/971514"&gt;free download&lt;/a&gt; on the Microsoft Download Center.&lt;/p&gt;  &lt;h2&gt;Additional notes about the Platform Update for Windows Vista&lt;/h2&gt;  &lt;p&gt;All the updated technologies in the Platform Update for Windows Vista are already included in Windows 7. The Platform Update for Windows Vista is &lt;strong&gt;not required for Windows 7&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;To apply the Platform Update for Windows Vista, you must have &lt;strong&gt;Windows Vista Service Pack 2&lt;/strong&gt; installed. &lt;/p&gt;  &lt;h2&gt;More information&lt;/h2&gt;  &lt;p&gt;For specific details about the Platform Update for Windows Vista, &lt;a href="http://support.microsoft.com/kb/971644"&gt;click here&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;For more information about MTP Device Services, check out the &lt;a href="http://blogs.msdn.com/wpdblog/archive/2009/08/15/introducing-device-services.aspx"&gt;Introducing Device Services&lt;/a&gt; entry.&lt;/p&gt;  &lt;p&gt;For more information about MTP transports such as USB, IP, and Bluetooth, check out the &lt;a href="http://blogs.msdn.com/wpdblog/archive/2009/08/29/mtp-over-various-transports.aspx"&gt;MTP Over Various Transports&lt;/a&gt; entry.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;This posting is provided &amp;quot;AS IS&amp;quot; with no warranties and confers no rights.&lt;/i&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9913830" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wpdblog/archive/tags/MTP/default.aspx">MTP</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Device+Services/default.aspx">Device Services</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Bluetooth/default.aspx">Bluetooth</category></item><item><title>The MTP Device Simulator</title><link>http://blogs.msdn.com/wpdblog/archive/2009/10/23/the-mtp-device-simulator.aspx</link><pubDate>Sat, 24 Oct 2009 00:52:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9912325</guid><dc:creator>wpdblog</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wpdblog/comments/9912325.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wpdblog/commentrss.aspx?PostID=9912325</wfw:commentRss><description>&lt;p&gt;The Media Transfer Protocol Device Simulator (MTP Simulator) is a fully-featured, self-contained device simulator that emulates an MTP device. Its primary purpose is to enable developers to exercise expected behavior based on the MTP specification by returning appropriate MTP response packets and generating MTP events. The tool’s graphical user interface (GUI) enables easy configuration of MTP parameters and presents MTP traffic and data in a friendly, human-readable format. &lt;/p&gt;  &lt;p&gt;The MTP Simulator implements all MTP device capabilities, object properties, and operations that are based on the &lt;a href="#_Supplemental_Information:"&gt;MTP Specification&lt;/a&gt; along with the major features in Windows 7. Additionally, the MTP Simulator also &lt;b&gt;supports&lt;/b&gt; &lt;b&gt;&lt;a href="http://windowsteamblog.com/blogs/windowsexperience/archive/2009/01/08/device-stage-a-new-way-of-interacting-with-devices-in-windows-7.aspx"&gt;Device Stage&lt;/a&gt;&lt;/b&gt; and loading &lt;b&gt;customizable device profiles.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;For transport support, the MTP Simulator runs on &lt;b&gt;multiple transport options&lt;/b&gt; such as USB, Software-Simulated USB (SoftSim), Bluetooth, and IP. Last, but not the least, the MTP Simulator runs on both &lt;a&gt;Windows Vista and Windows 7.&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Where to get the MTP Simulator&lt;/h2&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The MTP Simulator is publicly available as part of the &lt;a href="http://www.microsoft.com/whdc/device/wpd/MTP-DEK_Win7.mspx"&gt;Windows 7 Portable Device Enabling Kit for MTP (DEK&lt;/a&gt;). The kit also includes support documentation for the MTP Simulator and the MTP Specification Version 1.0 and MTP Device Services for Windows. Included in the DEK is the &lt;em&gt;MTP Device Simulator User Guide&lt;/em&gt; which provides a detailed description of the MTP Simulator.&lt;/p&gt;  &lt;h2&gt;Installing the MTP Simulator&lt;/h2&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The MTP Device Simulator is installed as part of the Windows 7 Portable Device Enabling Kit for MTP (DEK). Before running the simulator for the first time, you may need to install the Device Simulation Framework (DSF).&lt;/p&gt;  &lt;p&gt;To install DSF:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Browse to the folder where the DEK is installed (usually C:\Windows7DEK) &lt;/li&gt;    &lt;li&gt;Navigate to the Tools\MTP Device Simulator\Dsf subfolder &lt;/li&gt;    &lt;li&gt;Open an elevated command window (i.e. &amp;quot;Run as Administrator”) and launch install.cmd to start the DSF MSI package install. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Once DSF is installed, you can launch the MTP Simulator from C:\WindowsDEK\Tools\MTP Device Simulator\MTPSimUI.exe. Select your desired transport, and click “Connect” to launch an instance of the MTP Simulator. The next section gives an overview of the User Interface.&lt;/p&gt;  &lt;h2&gt;User Interface&lt;/h2&gt;  &lt;p&gt;The following screenshot shows the MTP Simulator UI with navigation buttons and configuration options.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/wpdblog/WindowsLiveWriter/TheMTPDeviceSimulator_FB0F/MTPSim.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="MTPSim" border="0" alt="MTPSim" src="http://blogs.msdn.com/blogfiles/wpdblog/WindowsLiveWriter/TheMTPDeviceSimulator_FB0F/MTPSim_thumb.png" width="644" height="455" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;   &lt;table border="1" cellspacing="0" cellpadding="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="90"&gt;&lt;strong&gt;MTP Simulator              &lt;br /&gt;Configuration&lt;/strong&gt; &lt;/b&gt;&lt;/td&gt;          &lt;td valign="top" width="108"&gt;&lt;b&gt;Location&lt;/b&gt; &lt;/td&gt;          &lt;td valign="top" width="339"&gt;&lt;b&gt;Purpose&lt;/b&gt; &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="90"&gt;           &lt;p&gt;Connection&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="108"&gt;           &lt;p&gt;Left control tabs and menu options.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="339"&gt;           &lt;p&gt;Connect, disconnect, or restart MTP Simulator by using the currently selected configuration. You can change the transport type on the &lt;b&gt;Transport&lt;/b&gt; tab and change the test mode on the &lt;b&gt;Device Mode&lt;/b&gt; tab.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="90"&gt;           &lt;p&gt;Transport&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="108"&gt;           &lt;p&gt;Left control tabs and menu options.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="339"&gt;           &lt;p&gt;Select the transport to be used. To simulate a software-only USB device, select the “SoftUSB” transport.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="90"&gt;           &lt;p&gt;Device mode&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="108"&gt;           &lt;p&gt;Left control tabs and menu options.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="339"&gt;           &lt;p&gt;Normal Mode should be used. Test Mode is reserved for internal Microsoft testing.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="90"&gt;           &lt;p&gt;Output windows&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="108"&gt;           &lt;p&gt;Lower-right output window.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="339"&gt;           &lt;p&gt;This window displays redirected output from stdout. Any output from a printf statement, such as trace—from either MTP Simulator or a plug-in—appears in this window. The output is also saved as mtpsimui.log automatically under the MTP Simulator root directory.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;h6&gt;Table 1. MTP Simulator User Controls&lt;/h6&gt;  &lt;h2&gt;Command-Line Options&lt;/h2&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In addition to the GUI, you can control MTP Simulator at startup by using command-line parameters. This can be useful when you need to perform automated testing. For details, see &lt;strong&gt;Appendix C&lt;/strong&gt; from the &lt;em&gt;MTP Device Simulator User Guide&lt;/em&gt;. &lt;/p&gt;  &lt;h2&gt;Customizing the MTP Simulator&lt;/h2&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;You can control the capabilities that the MTP Simulator reports to Windows by using an XML file (see Appendix F in the &lt;em&gt;MTP Device Simulator User Guide&lt;/em&gt; for details). Device capabilities are controlled by DeviceSummary.xml, and service capabilities are controlled by Services.xml.&lt;/p&gt;  &lt;p&gt;The DeviceSummary.xml file enables you to customize the contents of the DeviceInfo, StorageInfo, DevicePropDesc, and ObjectPropDesc datasets.&lt;/p&gt;  &lt;p&gt;The Services.xml file enables you to specify configurations that are related to device services, including service-supported formats, methods, and events.&lt;/p&gt;  &lt;h2&gt;Device Profiles&lt;/h2&gt;  &lt;p&gt;The MTP Simulator also supports loading &lt;a&gt;different device profiles&lt;/a&gt;. A device profile contains a set of customized configuration files (i.e. DeviceSummary.xml and Services.xml) describing a sample device. The DEK comes bundled with sample profiles representing each device class (Camera, Cellular Phone, Media Player, etc). Details of how to load the device profiles are outlined in the &lt;em&gt;MTP Device Simulator User Guide&lt;/em&gt;. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;   &lt;table border="1" cellspacing="0" cellpadding="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="217"&gt;&lt;strong&gt;Device Profile&lt;/strong&gt;&lt;/td&gt;          &lt;td valign="top" width="402"&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="217"&gt;           &lt;p&gt;Fabrikam_Camera&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="402"&gt;           &lt;p&gt;Simulates a sample camera.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="217"&gt;           &lt;p&gt;Fabrikam_Phone&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="402"&gt;           &lt;p&gt;Simulates a cellular phone.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="217"&gt;           &lt;p&gt;Fabrikam_PMP&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="402"&gt;           &lt;p&gt;Simulates a portable media player.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="217"&gt;           &lt;p&gt;MtpSim-FullEnumSync&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="402"&gt;           &lt;p&gt;Simulates a device that supports the Full Enumeration synchronization model, for example for contacts, calendar, tasks, and notes synchronization.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="217"&gt;           &lt;p&gt;MtpSim-FullEnumSyncSimpleParticipant&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="402"&gt;           &lt;p&gt;Simulates a device that supports the Full Enumeration synchronization model (like MtpSim-FullEnumSync), with additional support for the simple participant feature.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;h6&gt;Table 2: Sample MTP Simulator Device Profiles&lt;/h6&gt;  &lt;p&gt;Each of these profiles has a corresponding Device Stage package. Each of these packages supports the same set of standard Device Stage tasks, with the exception of the Ringtone task which is not supported by the Fabrikam_Camera and Fabrikam_PMP profiles. For more information on authoring Device Stage metadata, refer to the &lt;b&gt;Windows 7 Device Stage Development Guide&lt;/b&gt; in the &lt;a href="http://www.microsoft.com/whdc/device/DeviceExperience/Dev-Kit.mspx"&gt;Microsoft Device Experience Development Kit&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;Testing Device Stage Packages&lt;/h2&gt;  &lt;p&gt;The MTP Simulator can also be used to test custom Device Stage packages. The MTP Device Inspector tool can be used to generate a device profile which can be loaded into the Simulator (see the &lt;i&gt;MTP Device Simulator User Guide &lt;/i&gt;for details&lt;i&gt;)&lt;/i&gt;. Once a custom Device Stage metadata package has been authored, the package contains all the files necessary to display a Device Stage experience in Windows 7. The package may be tested by copying it to the PC’s device metadata store and connecting the test device, in this case rapid development can be done using the MTP Simulator. In order to load (unsigned) custom Device Stage metadata the system will need to be boot into test mode. For more details, refer to page 40 of the &lt;b&gt;Windows 7 Device Stage Development Guide&lt;/b&gt; document that is included in the &lt;a href="http://www.microsoft.com/whdc/device/DeviceExperience/Dev-Kit.mspx"&gt;Microsoft Device Experience Development Kit&lt;/a&gt; for details on testing Device Stage metadata packages.&lt;/p&gt;  &lt;h2&gt;Want to Learn More?&lt;/h2&gt;  &lt;p&gt;The &lt;i&gt;MTP Device Simulator User Guide&lt;/i&gt; in the Documentation for the &lt;a href="http://www.microsoft.com/whdc/device/wpd/MTP-DEK_Win7.mspx"&gt;Device Enabling Kit&lt;/a&gt; contains more information on the features described above.&lt;/p&gt;  &lt;p&gt;If you have general questions about the MTP Simulator contact AskMTP at Microsoft dot com.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;This posting is provided &amp;quot;AS IS&amp;quot; with no warranties and confers no rights.&lt;/i&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9912325" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wpdblog/archive/tags/MTP/default.aspx">MTP</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Device+Stage/default.aspx">Device Stage</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Device+Services/default.aspx">Device Services</category></item><item><title>Windows 7 Portable Device Development Kits</title><link>http://blogs.msdn.com/wpdblog/archive/2009/09/11/windows-7-portable-device-development-kits.aspx</link><pubDate>Sat, 12 Sep 2009 09:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9894442</guid><dc:creator>wpdblog</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wpdblog/comments/9894442.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wpdblog/commentrss.aspx?PostID=9894442</wfw:commentRss><description>&lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;There are several different resources made available to portable device manufacturers to assist in device firmware and driver development, and to application developers wishing to create applications that interact with these portable devices. These resources are provided and maintained by members of the Windows Portable Devices team. &lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;This post provides a description for the following development kits: &lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div style="text-indent: -0.25in; margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class="MsoListParagraphCxSpFirst"&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;span style="font-family: symbol; mso-bidi-font-family: symbol; mso-fareast-font-family: symbol"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font: 7pt &amp;#39;Times New Roman&amp;#39;"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Windows 7 Portable Device Enabling Kit for MTP &lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="text-indent: -0.25in; margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;Windows Portable Devices SDK &lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="text-indent: -0.25in; margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;Windows Portable Devices Driver Kit &lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="text-indent: -0.25in; margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;Windows Media Device Manager SDK &lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="text-indent: -0.25in; margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;Microsoft Device Experience Development Kit &lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="text-indent: -0.25in; margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;/span&gt;Windows Logo Kit &lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h2&gt;Windows 7 Portable Device Enabling Kit for MTP&lt;/h2&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;This development kit is designed to assist portable device manufacturers in the development of Media Transfer Protocol (MTP) device firmware that is compatible with the &lt;/font&gt;&lt;a href="http://blogs.msdn.com/wpdblog/archive/2009/08/29/mtp-over-various-transports.aspx" mce_href="http://blogs.msdn.com/wpdblog/archive/2009/08/29/mtp-over-various-transports.aspx"&gt;&lt;font size="2"&gt;various MTP device transports that Windows supports&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, and with &lt;/font&gt;&lt;a href="http://blogs.msdn.com/wpdblog/archive/2009/08/15/introducing-device-services.aspx" mce_href="http://blogs.msdn.com/wpdblog/archive/2009/08/15/introducing-device-services.aspx"&gt;&lt;font size="2"&gt;Device Services&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;. There are two packages provided for download: &lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in"&gt;&lt;i&gt;&lt;font face="Verdana"&gt;Windows 7 Portable Device Enabling Kit for MTP - Tools&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;&lt;font face="Verdana"&gt;      &lt;br /&gt;The tools kit includes design documentation and implementation guidelines, a Windows-based reference design, development tools, and the updated MTP Device Simulator. &lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in"&gt;&lt;i&gt;&lt;font face="Verdana"&gt;Windows 7 Portable Device Enabling Kit for MTP - Reference Code&lt;/font&gt;&lt;/i&gt;&lt;font face="Verdana"&gt;      &lt;br /&gt;The reference code kit includes the core responder reference source code that is being made available under a separate Berkeley Software Distribution (BSD)–style license. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;To download both packages of the Windows 7 Portable Device Enabling Kit for MTP, go to: &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;a href="http://www.microsoft.com/whdc/device/wpd/MTP-DEK_Win7.mspx"&gt;http://www.microsoft.com/whdc/device/wpd/MTP-DEK_Win7.mspx&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;You are not required to license the reference code in order to use the tools and resources provided in the tools kit.&lt;span class="MsoCommentReference"&gt;&lt;span style="line-height: 115%; mso-bidi-font-size: 11.0pt; mso-ansi-font-size: 11.0pt"&gt; &lt;/span&gt;&lt;/span&gt;This kit is free to download and use.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h2&gt;Windows Portable Devices SDK&lt;/h2&gt; &lt;span style="color: black"&gt;   &lt;p&gt;&lt;font size="2"&gt;The WPD SDK includes the WPD Application Programming Interface (API) that is supported in Windows 7, Windows Vista, and Windows XP operating Systems. Developers will use this API to write Windows applications in C++. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;Being a COM API, the WPD API is also accessible from Managed code, so C# .Net, and Visual Basic .Net applications can use COM Interoperability to invoke the same functionality that the C++ API provides. WPD applications can: explore a device, send and receive content, and even control the device, for example, take a picture or send a text message.&lt;/font&gt;&lt;/p&gt; &lt;/span&gt;  &lt;p style="vertical-align: top"&gt;&lt;span style="color: black"&gt;&lt;font size="2"&gt;The WPD SDK includes two sample applications for C++/COM developers. The first, WpdApiSample, is a command-line desktop application that demonstrates how you would: enumerate connected devices, explore those devices, query device-objects for properties and attributes, send and retrieve data, and so on. The second sample, WpdServicesApiSample, is a command-line desktop application that demonstrates how you would explore a Contacts service on a device that is attached to your computer. &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="color: black"&gt;&lt;font size="2"&gt;The WPD SDK also includes an Automation Object Model that is supported in Windows 7. Developers can use the Automation model to write web applications that accomplish tasks similar to those accomplished with the API. We provided an introduction to WPD Automation in this recent &lt;/font&gt;&lt;/span&gt;&lt;a href="http://blogs.msdn.com/wpdblog/archive/2009/08/21/introducing-wpd-automation.aspxhttp:/blogs.msdn.com/wpdblog/archive/2009/08/21/introducing-wpd-automation.aspx" mce_href="http://blogs.msdn.com/wpdblog/archive/2009/08/21/introducing-wpd-automation.aspxhttp:/blogs.msdn.com/wpdblog/archive/2009/08/21/introducing-wpd-automation.aspx"&gt;&lt;font color="#0080ff" size="2"&gt;post&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;span style="color: black"&gt;&lt;font size="2"&gt;.&lt;/font&gt; &lt;/span&gt;&lt;span style="color: black; mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;&lt;span style="color: black"&gt;The WPD SDK is included in the Windows SDK which can be downloaded from &lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&amp;amp;displaylang=en&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="color: black"&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="color: black"&gt;&lt;font size="2"&gt;The documentation for the WPD SDK (both the API and Automation Object Model) is found on MSDN at: &lt;/font&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd388998(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd388998(VS.85).aspx"&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd388998(VS.85).aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/en-us/library/dd388998(VS.85).aspx&lt;/font&gt;&lt;/a&gt;&lt;/a&gt;&lt;b&gt;&lt;span style="line-height: 140%; font-family: &amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;; color: black; font-size: 12pt; mso-bidi-font-size: 11.0pt"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Windows Portable Devices Driver Kit&lt;/h2&gt;  &lt;p&gt;&lt;font size="2" face="Verdana"&gt;The WPD Driver Kit includes a Device Driver Interface (DDI) that is supported in Windows 7, Windows Vista, and Windows XP operating Systems. Developers will use this DDI to write drivers for devices that are not already supported by the MTP or Mass Storage class drivers that Microsoft distributes.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;The WPD Driver Kit includes five sample device drivers which are described in the following table. In the next &lt;/font&gt;&lt;a href="http://blogs.msdn.com/wpdblog/archive/2009/09/18/windows-7-driver-samples.aspx"&gt;&lt;font size="2"&gt;post&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, we covered each sample in more detail.&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/span&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;table style="border-collapse: collapse; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 0in 0in 0in" class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;         &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; padding-left: 5.4pt; width: 239.4pt; padding-right: 5.4pt; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0in" valign="top" width="319"&gt;           &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;b&gt;&lt;font size="2"&gt;Sample Driver&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; padding-left: 5.4pt; width: 239.4pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0in" valign="top" width="319"&gt;           &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;&lt;b&gt;Description&lt;/b&gt;&lt;b&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow: 1"&gt;         &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 239.4pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0in" valign="top" width="319"&gt;           &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;WpdHelloWorldDriver&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 239.4pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in" valign="top" width="319"&gt;           &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;This is the most basic WPD driver that emulates interaction with hardware. Supports four objects: device, storage, folder, and file. This provides the scaffolding or skeleton for developing a WPD driver.&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow: 2"&gt;         &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 239.4pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0in" valign="top" width="319"&gt;           &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;WpdBasicHardwareDriver&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 239.4pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in" valign="top" width="319"&gt;           &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;Builds upon the WpdHelloWorldDriver and demonstrates interaction with simple hardware devices. Supports nine sensor devices: 2-axis accelerometer, 3-axis accelerometer, temperature/humidity sensor, pressure sensor, distance sensor, passive infrared sensor, compass, vibration sensor, and light sensor. These sensor devices are simple devices that are controlled by a Parallax BS2 microcontroller attached to the PC. &lt;/font&gt;&lt;/p&gt;            &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;font size="2"&gt;If you plan to develop drivers that integrate sensors with Windows 7, we recommend using the &lt;/font&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd318953(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd318953(VS.85).aspx"&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;font size="2"&gt;Sensor API&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;font size="2"&gt; and &lt;/font&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc974537.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc974537.aspx"&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;font size="2"&gt;Sensor Driver Model&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;font size="2"&gt;. If you need to develop drivers to integrate sensors with Windows Vista or Windows XP, WPD provides a viable solution. &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow: 3"&gt;         &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 239.4pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0in" valign="top" width="319"&gt;           &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;WpdServiceSampleDriver&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 239.4pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in" valign="top" width="319"&gt;           &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;Demonstrates how a developer would extend the WpdHelloWorldDriver to support a simulated device with a Contacts device service.(Using this service, WPD applications can discover events, methods, and properties associated with the Contacts stored on the device. This sample emulates interaction with hardware.&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow: 4"&gt;         &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 239.4pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0in" valign="top" width="319"&gt;           &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;WpdMultiTransportDriver&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 239.4pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in" valign="top" width="319"&gt;           &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;Demonstrates how developers can take advantage of the Windows 7 support for multiple transports. The sample emulates interaction with hardware and demonstrates support for the following transports: IP, Bluetooth, and USB. We covered an overview of Multi-transport support in Windows 7 &lt;/font&gt;&lt;a href="http://blogs.msdn.com/wpdblog/archive/2009/09/04/multi-transport-devices-in-windows-7.aspx" mce_href="http://blogs.msdn.com/wpdblog/archive/2009/09/04/multi-transport-devices-in-windows-7.aspx"&gt;&lt;font size="2"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;.&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow: 5; mso-yfti-lastrow: yes"&gt;         &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 239.4pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0in" valign="top" width="319"&gt;           &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;WpdWudfSampleDriver&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 239.4pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in" valign="top" width="319"&gt;           &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;A comprehensive sample driver that demonstrates what to enable in the WPD DDI for media transfer scenarios (such as music and photos). This sample supports media synchronization with Windows Media Player, and also emulates interaction with hardware.&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="color: black"&gt;&lt;font size="2"&gt;The WPD Driver Kit is included in the Windows Driver Kit (WDK). For information about downloading the WDK, see: &lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff" size="2"&gt;&lt;a href="http://www.microsoft.com/whdc/devtools/wdk/WDKpkg.mspx"&gt;http://www.microsoft.com/whdc/devtools/wdk/WDKpkg.mspx&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="color: black"&gt;&lt;font size="2"&gt;The documentation for the WPD Driver Kit is found on MSDN at: &lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff" size="2"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd419925.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd419925.aspx&lt;/a&gt;&lt;/font&gt;&lt;span style="color: #1f497d"&gt;&lt;/span&gt; &lt;/p&gt;  &lt;h2&gt;Windows Media Device Manager SDK &lt;/h2&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;The Windows Media Device Manager (WMDM) SDK &lt;span style="color: black"&gt;enables you to build desktop applications and components that can communicate with connected portable devices. WMDM enables your application or component to enumerate, explore, and exchange files with a device, query for metadata, and request play count information. Applications or components built on WMDM have a consistent API for communicating with a wide range of devices including Media Transfer Protocol (MTP), Mass Storage Class (MSC), RAPI, and other devices built on both the latest and previous versions of Windows Media technology. &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;font size="2"&gt;The Windows Media Device Manager SDK is available at: &lt;/font&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/windows/bb190309.aspx" mce_href="http://msdn.microsoft.com/en-us/windows/bb190309.aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/en-us/windows/bb190309.aspx&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;. &lt;/font&gt;&lt;/p&gt;  &lt;h2&gt;Microsoft Device Experience Development Kit&lt;/h2&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;The Microsoft Device Experience Development Kit provides detailed information and material that you would need to know in order to develop Device Stage™ experiences for Portable Devices. The development kit includes device development guides, planning worksheets, tutorials, and development samples that you can use when developing a Device Stage experience on Windows 7. For portable devices, Device Stage supports the industry-standard Media Transfer Protocol (MTP) 1.0 with device services that enable a new rich set of features in Windows 7. &lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;The development kit along with other pertinent information to build a complete Windows Device Experience is available at: &lt;/font&gt;&lt;a href="http://www.microsoft.com/whdc/device/DeviceExperience/default.mspx" mce_href="http://www.microsoft.com/whdc/device/DeviceExperience/default.mspx"&gt;&lt;font size="2"&gt;http://www.microsoft.com/whdc/device/DeviceExperience/default.mspx&lt;/font&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;The kit is free to download and use. &lt;/font&gt;&lt;/p&gt;  &lt;h2&gt;Windows Logo Kit&lt;/h2&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;The primary use of the Windows Logo Kit (WLK) is for Windows Logo Program device certification. This kit can also be used for product development. We encourage its use during the product development cycle of hardware in order to ensure device compliance with both Windows and industry standards. The kit includes several tests designed to validate device implementation and behavior at multiple levels. There are tests for USB compliance, Media Transfer Protocol (MTP) compliance, and Windows Portable Devices (WPD) platform compliance that also cover device services validation.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;There is a significant amount of information available about the WLK, including user guides and video tutorials. For more information about the WLK see: &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;a href="http://www.microsoft.com/whdc/winlogo/WLK/default.mspx"&gt;http://www.microsoft.com/whdc/winlogo/WLK/default.mspx&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;The kit is free to download and use.&lt;/font&gt; &lt;/p&gt;  &lt;h2&gt;Other Resources&lt;/h2&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;Windows Portable Devices node on Windows Hardware Developer Central &lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;a href="http://www.microsoft.com/whdc/device/wpd/default.mspx" mce_href="http://www.microsoft.com/whdc/device/wpd/default.mspx"&gt;&lt;font size="2"&gt;http://www.microsoft.com/whdc/device/wpd/default.mspx&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font size="2"&gt;Windows Portable Devices on Microsoft Developer Network &lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd388998(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/dd388998(VS.85).aspx&lt;/a&gt;&lt;/font&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;span style="font-family: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; font-size: 10pt"&gt;&lt;em&gt;This posting is provided &amp;quot;AS IS&amp;quot; with no warranties and confers no rights.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9894442" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wpdblog/archive/tags/SDK/default.aspx">SDK</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/MTP/default.aspx">MTP</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/WMDM/default.aspx">WMDM</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Device+Stage/default.aspx">Device Stage</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>MTP Over Various Transports</title><link>http://blogs.msdn.com/wpdblog/archive/2009/08/29/mtp-over-various-transports.aspx</link><pubDate>Sat, 29 Aug 2009 08:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9888867</guid><dc:creator>wpdblog</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wpdblog/comments/9888867.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wpdblog/commentrss.aspx?PostID=9888867</wfw:commentRss><description>&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;font size="3"&gt;     &lt;h3&gt;Introduction&lt;/h3&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/font&gt;&lt;/b&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;&lt;span style="mso-bidi-font-style: italic"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;span style="mso-bidi-font-style: italic"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;span style="mso-bidi-font-style: italic"&gt;The Media Transfer Protocol (MTP) was originally created as an extension to the Picture Transfer Protocol but today it also supports media transfer, Device Services, command &amp;amp; control, and many other scenarios. MTP supports three transports: USB, IP, and Bluetooth.&lt;/span&gt; &lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;One of most common drivers that WPD applications will interact with is the Media Transfer Protocol (MTP) driver.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;MTP was introduced in Windows XP with an inbox user mode driver allowing for effortless device installation and connectivity.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;MTP is standardized through the USB Implementer’s Forum (&lt;font color="#0000ff"&gt;&lt;a href="http://www.usb.org"&gt;www.usb.org&lt;/a&gt;&lt;/font&gt;) and also features Windows-specific extensions. &lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font size="2"&gt;We introduced a MTP driver for USB in Windows XP.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In Windows Vista, we added support for MTP over TCP/IP for devices that use WiFi and LAN connections.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;In Windows 7, we continue the parade of MTP support with the introduction of Bluetooth.&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;/p&gt; &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;font size="3"&gt;     &lt;h3&gt;3 transports, one protocol&lt;/h3&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/font&gt;&lt;/b&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="3"&gt;&lt;font size="2"&gt;MTP includes a protocol definition and several transport definitions.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;As devices and PCs pick and choose which connectivity transports they support, device &amp;amp; application developers can be assured that the MTP protocol and WPD API will be consistent.&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;Three-transport support gives device manufacturers flexibility to choose wired or wireless, high or low power, faster or slower transfer speed, etc.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The MTP driver is also the first multi-transport driver in Windows, which means that a device manufacturer can feel free to implement all three and Windows will choose the best.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;We’ll talk about that more in our next entry &lt;/font&gt;&lt;a href="http://blogs.msdn.com/wpdblog/archive/2009/09/04/multi-transport-devices-in-windows-7.aspx"&gt;&lt;font size="2"&gt;Multi-transport Devices in Windows 7&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;.&lt;/font&gt; &lt;/font&gt;&lt;/p&gt; &lt;i style="mso-bidi-font-style: normal"&gt;&lt;font size="3"&gt;     &lt;h4&gt;USB&lt;/h4&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/font&gt;&lt;/i&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;Our first MTP transport driver is also the fastest and most powerful way to connect an MTP-enabled device.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Windows XP through Windows 7 support USB 1.1 or higher.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;The binding of MTP to USB is described in the MTP specification itself (&lt;font color="#0000ff"&gt;&lt;a href="http://www.usb.org/developers/devclass_docs/MTP_1.0.zip"&gt;http://www.usb.org/developers/devclass_docs/MTP_1.0.zip&lt;/a&gt;&lt;/font&gt;)&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;and in the Still Imaging Capture Device Definition specification (&lt;font color="#0000ff"&gt;&lt;a href="http://www.usb.org/developers/devclass_docs/usb_still_img10.zip"&gt;http://www.usb.org/developers/devclass_docs/usb_still_img10.zip&lt;/a&gt;&lt;/font&gt;).&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Windows XP uses the Microsoft OS Descriptor to identify MTP devices; Windows Vista and Windows 7 can identify MTP devices by either the OS Descriptor or the USB Still Image Class Code (Class 6, Subclass 1, Protocol 1).&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Much of this is detailed in the Windows Portable Device Enabling Kit. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;In Windows 7, we also enabled the USB Selective Suspend for the MTP driver, although this option is not enabled by default to preserve maximum ecosystem compatibility. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font size="2"&gt;USB is great for fast file transfer, media synchronization, and charging the device while you’re using it.&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;/p&gt; &lt;i style="mso-bidi-font-style: normal"&gt;&lt;font size="3"&gt;     &lt;h4&gt;IP &lt;/h4&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/font&gt;&lt;/i&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;In Windows Vista, we implemented MTP over TCP/IP to enable WiFi and networked devices to interact with WPD applications.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;We used the PTP/IP binding (&lt;/font&gt;&lt;a href="http://www.cipa.jp/ptp-ip/index_e.html" mce_href="http://www.cipa.jp/ptp-ip/index_e.html"&gt;&lt;font size="2"&gt;http://www.cipa.jp/ptp-ip/index_e.html&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;), then used UPnP for pairing and discovery.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;When devices report their presence on a network via UPnP after the initial pairing, Windows will automatically connect and make the device available to the user. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font size="2"&gt;MTP/IP is ideal for devices with WiFi that can be connected and synchronized anywhere in the home.&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;/p&gt; &lt;i style="mso-bidi-font-style: normal"&gt;&lt;font size="3"&gt;     &lt;h4&gt;Bluetooth&lt;/h4&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/font&gt;&lt;/i&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;In Windows 7, we introduced Bluetooth as the third transport for MTP. We implemented MTP over the L2CAP protocol for fast, efficient, and secure connections. The specification is available in the Windows Portable Device Enabling Kit. PC users can switch the connection on and off through the Devices &amp;amp; Printers folder, or devices themselves can initiate and terminate connections to the PC. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;We also implemented an &amp;quot;auto connect&amp;quot; feature in which Windows attempts to connect to your device every few minutes to maintain a low power connection for automatic synchronization and status updates.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;When you are holding the device near your PC, you’re connected; when you walk away, the connection breaks and waits silently to reconnect when you return and your device gets back into Bluetooth range. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Applications can use the IPortableDeviceConnect&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;interface to issue connect/disconnect requests to an MTP/Bluetooth device.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;When a connection request is made, the MTP/Bluetooth link is established, the WPD MTP driver stack will load, and the device becomes visible to WPD applications to connect to using the WPD API. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Windows requires Bluetooth 1.2 or higher with the Microsoft Bluetooth stack installed.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;For maximum security, Windows also requires that the device is paired securely with a pin code. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font size="2"&gt;MTP/BT is great for low power, low speed scenarios like synchronizing PIM data or a quick file transfer.&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt; &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;font size="3"&gt;     &lt;h3&gt;Operating System Support&lt;/h3&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/font&gt;&lt;/b&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font size="2"&gt;The MTP driver is present in Windows XP with Windows Media Player 10 or higher installed, Windows Vista, and Windows 7.&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;/p&gt; &lt;i style="mso-bidi-font-style: normal"&gt;&lt;font size="3"&gt;     &lt;h4&gt;MTP Driver Support by Operating System&lt;/h4&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/font&gt;&lt;/i&gt;  &lt;p&gt;&lt;/p&gt;  &lt;table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;       &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;strong&gt;&lt;font size="2"&gt;Windows Version &lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;strong&gt;&lt;font size="2"&gt;USB 1.1 or higher &lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;strong&gt;&lt;font size="2"&gt;IP &lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;strong&gt;&lt;font size="2"&gt;Bluetooth 1.2 or higher &lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 1"&gt;       &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;Windows XP &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;Yes, with Windows Media Player 10 or higher &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;No &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;No &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 2"&gt;       &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;Windows Vista &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;Yes &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;Yes &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;No &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 3; mso-yfti-lastrow: yes"&gt;       &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;Windows Vista + &lt;a href="http://blogs.msdn.com/wpdblog/archive/2009/10/27/wpd-platform-update-for-windows-vista.aspx"&gt;Platform Update for Window Vista&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;Yes &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;Yes &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;Yes&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 3; mso-yfti-lastrow: yes"&gt;       &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;Windows 7 &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;Yes &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="2"&gt;Yes &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 119.7pt; padding-right: 5.4pt; border-left-color: #f0f0f0; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="200"&gt;         &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="3"&gt;&lt;font size="2"&gt;Yes &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-family: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; font-size: 10pt"&gt;This posting is provided &amp;quot;AS IS&amp;quot; with no warranties and confers no rights.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9888867" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wpdblog/archive/tags/MTP/default.aspx">MTP</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Device+Services/default.aspx">Device Services</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Bluetooth/default.aspx">Bluetooth</category></item><item><title>Introducing Device Services</title><link>http://blogs.msdn.com/wpdblog/archive/2009/08/15/introducing-device-services.aspx</link><pubDate>Sat, 15 Aug 2009 07:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9870650</guid><dc:creator>wpdblog</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wpdblog/comments/9870650.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wpdblog/commentrss.aspx?PostID=9870650</wfw:commentRss><description>&lt;h2 style="margin: 12pt 0in 8pt"&gt;What are Device Services?&lt;/h2&gt;  &lt;p&gt;&amp;quot;Device Services&amp;quot; is a brand new concept introduced in Windows 7 that provides a framework for device manufacturers to extend device functionality, and new APIs for applications to discover and access that extended functionality using WPD. We decided to call these extensions to device functionality &amp;quot;Device Services&amp;quot; because they foster rich interaction between the PC and devices by providing a model for devices to formalize extension capabilities and make these capabilities accessible to applications. &lt;/p&gt;  &lt;p&gt;Device Services are available in Windows 7 and Windows Vista with the &lt;a href="http://blogs.msdn.com/wpdblog/archive/2009/10/27/wpd-platform-update-for-windows-vista.aspx"&gt;Platform Update for Windows Vista&lt;/a&gt;.&lt;/p&gt;  &lt;h2 style="margin: 12pt 0in 8pt"&gt;Why do we need Device Services?&lt;/h2&gt;  &lt;p&gt;First, a quick historical perspective. Media Transfer Protocol (MTP - one of the protocols supported within WPD) was introduced beginning with Windows Media Player 10 as an extension of the Picture Transfer Protocol (PTP). MTP became a USB standard, and was widely adopted by a myriad of device classes: media players, mobile phones, cameras, Xbox 360s, etc.&amp;#160; True to its PTP origins, MTP 1.0 was very media-centric; the scenarios it excelled in revolved around browsing device content and exchanging media files (images, music, and video, etc) between device and the PC.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="2"&gt;Enabling PIM Scenarios&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;With Windows 7, we shifted our focus to enabling more device-to-PC scenarios centered around managing and accessing Personal Information Management (PIM) data (contacts, tasks, calendar, etc.) on the device. These involved more complex operations such as SMS, email and advanced synchronization with Outlook™. Non-media files present additional challenges in accessing and enumerating them efficiently on the device. Unlike an MP3 or a JPEG file, a contact or task may not be represented by a physical file on the device storage.&amp;#160; Depending on device implementation, these objects could be stashed anywhere: in databases, in SIM cards, etc. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="2"&gt;Honey, where did you put my contacts (and music, and photos, and ...)?&lt;/font&gt;&lt;/b&gt; &lt;/p&gt;  &lt;p&gt;Another common problem is that there was no standardized method for a device to figure out where to put its content.&amp;#160; Most applications would have to guess at a location, choose or specify an application-specific location, or crawl the entire device, often just to locate a subset of content. [Aside: In Vista, WPD does support the concept of &amp;quot;Device Hints&amp;quot;, where devices/drivers provision a list of known folders that would accept particular content types. Unfortunately, this was not uniformly adopted by devices/drivers, and was limited to known WPD content types]. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="2"&gt;Crowded MTP 1.0 Extension Space&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Last but not the least, MTP 1.0 had inherent limitations for growth and new functionality. The operation codes and property codes were constrained by a DWORD (4 byte) numerical space, with only a small subset allocated for extension codes. Without a notion of vendor-specific namespaces, new extensions must be careful not to collide with existing extensions. This would usually add the overhead of having to publish the codes or risk incompatibilities with applications that rely on existing extensions.&amp;#160; And, if the device/application needs to support new types of content, adding a new object format involves updating the MTP Specification, which is not easily revised.&lt;/p&gt;  &lt;h2 style="margin: 12pt 0in 8pt"&gt;How do Device Services help?&lt;/h2&gt;  &lt;p&gt;To solve the problems and overcome the limitations described above, we introduced the concept of Device Services to MTP. In a nutshell, &amp;quot;MTP Device Services&amp;quot; is an MTP Extension that defines a set of MTP operations revolving around a new type of object known as a &amp;quot;service.&amp;quot; &lt;/p&gt;  &lt;p&gt;A service is composed of 3 parts:    &lt;br /&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The core definition of that service and what it does, including its globally unique identifier (GUID). &lt;/li&gt;    &lt;li&gt;The properties of the service itself, and &lt;/li&gt;    &lt;li&gt;The properties and capabilities of objects and methods of that service.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Properties are represented by PROPERTYKEYS, and formats are represented by GUIDs, which eliminate the operation and format number space restrictions. Together, these provide the structure that applications would rely on to programmatically discover and use services in a consistent way.&amp;#160; &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;The following describes the most common ways in which Device Services are used today:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;span style="font-weight: bold; text-decoration: underline"&gt;Provide a set of properties and events associated with a common scenario&lt;/span&gt;. One example is the Status Service, which defines properties for the battery level, the number of missed calls, the number of new voicemail messages, and the number of new pictures acquired by a device. These may be custom properties, and any application that discovers this service can programmatically discover these properties.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;span style="font-weight: bold; text-decoration: underline"&gt;Provide a known source and/or sink for content&lt;/span&gt;. The Contacts, Calendar, Task, and Notes services are all services that allow applications to access and store PIM data. These are analogous to &amp;quot;virtual storages.&amp;quot;&amp;#160; The device represents the content in a standard location (as child objects of these services) so that applications do not have to grovel through the device hierarchy to find them. At the same time, this abstraction allows a device implementation greater control over how objects are actually stored on the device. Services are not limited to the known MTP or WPD formats, and may support any arbitrary type of data. For example, devices that wish to provide a Device Stage™ experience upon install can implement a Device Metadata Service that stores *.devicemetadata-ms files.      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;span style="font-weight: bold; text-decoration: underline"&gt;Provide a set of functionality associated with a common scenario&lt;/span&gt;.&amp;#160; The Full Enumeration and Anchor Synchronization services support &amp;quot;methods.&amp;quot;&amp;#160; Methods are like extensions to WPD commands, with the added benefits of being easily discoverable and supporting both synchronous and asynchronous invocation. The Anchor Synchronization Service features a method that allows a synchronization application to retrieve the set of changes to content on the device from a given anchor value (which can be a timestamp or a tick count). Methods also provide a flexible way to access content residing on multiple services. For instance, the Ringtones Service contains a method that allows an application to associate a ringtone (an object within the Ringtones Service) with a contact (an object within the Contacts Service).&lt;/li&gt; &lt;/ol&gt;  &lt;h2 style="margin: 12pt 0in 8pt"&gt;How are Device Services used in Windows 7?&lt;/h2&gt;  &lt;p&gt;After creating Device Services, we put it through its paces in real-life scenarios that are part of Windows 7.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-weight: bold"&gt;Device Stage™&lt;/span&gt;- Uses the Status service to display status on the Branding bar, and on the Taskbar and preview pane.     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-weight: bold"&gt;Windows 7 Synchronization &lt;/span&gt;– The Portable Devices Sync Provider uses the Contact Service, Calendar Service, Task Service, and Notes Service to access PIM data on the device. In addition, the Enumeration Synchronization Service and Anchor Synchronization Service are used to determine the level of synchronization capabilities that a device supports.&lt;/p&gt;  &lt;p&gt;&lt;span style="font-weight: bold"&gt;Windows Media Player and Windows Explorer&lt;/span&gt; – Both these applications use WPD Device Hints to determine content locations more efficiently.&amp;#160; For MTP devices, WPD Device Hints is now implemented at the MTP layer as a Hints Service. Devices that implement the Hints Service get WPD Device Hints for free.&lt;/p&gt;  &lt;p&gt;&lt;span style="font-weight: bold"&gt;Ringtone Editor&lt;/span&gt; – Uses the Ringtones Service to transfer user-created ringtones to the device, and to associate a ringtone with a contact that is located using the Contacts service.&lt;/p&gt;  &lt;p&gt;&lt;span style="font-weight: bold"&gt;WPD Class Installer &lt;/span&gt;– Uses the Device Metadata Service to retrieve and transfer metadata stored on the device, so that the richer, device-manufacturer-customized, Device Stage experience gets presented to the user after the first time the device is connected and installed.    &lt;br /&gt;&lt;/p&gt;  &lt;h2 style="margin: 12pt 0in 8pt"&gt;More Information&lt;/h2&gt;  &lt;p&gt;We hope this post has given you a taste of what Device Services can do. Here are some additional links for further information.   &lt;br /&gt;&lt;/p&gt;  &lt;h4&gt;&lt;b&gt;&lt;font size="2"&gt;Device Services:&lt;/font&gt;&lt;/b&gt; &lt;/h4&gt;  &lt;p&gt;Media Transfer Protocol: &lt;a href="http://www.usb.org/developers/devclass_docs/MTP_1.0.zip" mce_href="http://www.usb.org/developers/devclass_docs/MTP_1.0.zip"&gt;http://www.usb.org/developers/devclass_docs/MTP_1.0.zip&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;MTP Device Services Extension Specification: &lt;a href="http://www.microsoft.com/whdc/device/wpd/MTPDevServExt_Spec.mspx" mce_href="http://www.microsoft.com/whdc/device/wpd/MTPDevServExt_Spec.mspx"&gt;http://www.microsoft.com/whdc/device/wpd/MTPDevServExt_Spec.mspx&lt;/a&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Windows Portable Device Enabling Kit for MTP: &lt;a href="http://www.microsoft.com/whdc/device/wpd/MTP-DEK_Win7.mspx" mce_href="http://www.microsoft.com/whdc/device/wpd/MTP-DEK_Win7.mspx"&gt;http://www.microsoft.com/whdc/device/wpd/MTP-DEK_Win7.mspx&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;Application Development:&lt;/h4&gt;  &lt;p&gt;Using the WPD API for Device Services: &lt;a href="http://msdn.microsoft.com/en-us/library/dd319325(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd319325(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/dd319325(VS.85).aspx&lt;/a&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;The WPD Services API Sample: (available from the &lt;a href="http://msdn.microsoft.com/en-us/windows/bb980924.aspx" mce_href="http://msdn.microsoft.com/en-us/windows/bb980924.aspx"&gt;Windows 7 SDK&lt;/a&gt;): &lt;a href="http://msdn.microsoft.com/en-us/library/dd389002(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd389002(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/dd389002(VS.85).aspx&lt;/a&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;The WPD Automation Object Model: &lt;a href="http://msdn.microsoft.com/en-us/library/dd389295(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd389295(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/dd389295(VS.85).aspx&lt;/a&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-weight: bold"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h4&gt;Driver Development:&lt;/h4&gt;  &lt;p&gt;The WPD Services Sample Driver (available from the &lt;a href="http://www.microsoft.com/whdc/devtools/WDK/default.mspx" mce_href="http://www.microsoft.com/whdc/devtools/WDK/default.mspx"&gt;Windows Driver Kit&lt;/a&gt;): &lt;a href="http://msdn.microsoft.com/en-us/library/dd573849.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd573849.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd573849.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; font-size: 10pt"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 10pt" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-family: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; font-size: 10pt"&gt;This posting is provided &amp;quot;AS IS&amp;quot; with no warranties and confers no rights.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9870650" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wpdblog/archive/tags/MTP/default.aspx">MTP</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Device+Services/default.aspx">Device Services</category></item><item><title>New Features for Windows 7</title><link>http://blogs.msdn.com/wpdblog/archive/2009/08/07/windows-7-new-features.aspx</link><pubDate>Sat, 08 Aug 2009 01:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9860720</guid><dc:creator>wpdblog</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wpdblog/comments/9860720.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wpdblog/commentrss.aspx?PostID=9860720</wfw:commentRss><description>&lt;P&gt;In Windows 7 we introduced several new features that improve how users discover and use devices connected to their PC. These new features simplify how device manufacturers present their devices, applications, and services in Windows. This behavior is exposed in the new Device Stage™ experience (see Better Device Management &lt;A href="http://www.microsoft.com/whdc/device/DeviceExperience/default.mspx" mce_href="http://www.microsoft.com/whdc/device/DeviceExperience/default.mspx"&gt;here&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;In the Windows Portable Device (WPD) space the Windows team made significant investments to address concerns raised by device manufacturers. One of the key improvements was the addition of the Device Service. A Device Service is an extension of the functional object that was supported in prior versions of WPD. Applications can use Device Services to discover device capabilities and to interact more efficiently with content. &lt;/P&gt;
&lt;P&gt;In addition to the Device Service, WPD was further improved by investing in additional transports: support for MTP over Bluetooth has been added. With multiple transports (USB, IP, and Bluetooth) now available, the next step was to enable a seamless data transfer scenario when the device supports more than one transport.&lt;/P&gt;
&lt;P&gt;Now that we have introduced some of the key Windows 7 features for WPD, we’ll take a closer look.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;MTP Device Services for Windows 7&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;MTP has proven to be an excellent protocol for exchanging files and performing device command and control. However, it is not well-suited for newer, more advanced scenarios.&amp;nbsp; These scenarios are now supported with the introduction of the Device Services architecture. This architecture allows applications to locate and use various services and content types on a device.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The new Device Services architecture allows applications to locate, consume, and interact with both content and functionality on the device.&amp;nbsp; Our flagship use of Device Services in Windows 7 is to support Personal Information Management (PIM) data, settings, and restricted-capabilities content types on a device. The resulting architecture is also the means for future extensibility by 3rd parties: An IHV can implement an application (or web script) and a custom service that interoperate (without having to wait for new functionality in the next OS release). &lt;/P&gt;
&lt;P&gt;Device Services are identified by Globally Unique Identifiers (GUIDS). These GUIDS allow hardware vendors to specify new device services independently of each other without the risk of conflicts. &lt;/P&gt;
&lt;P&gt;The native Windows 7 supported services defined for portable devices are:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Calendar Service&lt;/STRONG&gt; - The calendar service contains the data for a calendar, and uses a synchronization service to facilitate synchronization with the PC.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Contact Service&lt;/STRONG&gt; - The contact service contains the data for contacts, and can optionally use a synchronization service to facilitate synchronization with the PC.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Notes Service&lt;/STRONG&gt; - The notes service uses a synchronization service to sync notes to and from the device.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Task Service&lt;/STRONG&gt; - The task service uses a synchronization service to synchronize tasks to and from the device.&amp;nbsp; &lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;Status Service&lt;/STRONG&gt; - The status service reports various status properties about the device to the PC. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Hints Service&lt;/STRONG&gt; - The hints service enables the device to select preferred storage locations for various content types in legacy storages.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Device Metadata Service&lt;/STRONG&gt; - The device metadata service permits the delivery of Device Stage™ metadata by the device during device installation. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Ringtone Service&lt;/STRONG&gt; - The ringtone service provides a method to copy ringtones from the PC to the target ringtone storage on the device.&amp;nbsp; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Enumeration Synchronization Service&lt;/STRONG&gt; - The enumeration synchronization service describes basic synchronization capabilities for a storage-based device. This is an “abstract” Device Service, which, analogous to an interface in C++, describes the capabilities of a “data” service that supports basic synchronization. &amp;nbsp;For example, a device that supports basic synchronization of contacts will contain a Contacts Service that implements the Enumeration Synchronization Service.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Anchor Synchronization Service&lt;/STRONG&gt; - The anchor sync service is another abstract MTP Device Service defined to enable other services to opt in to a sync relationship using anchor-based synchronization semantics.&amp;nbsp; Anchor-based synchronization uses a simple tick-count based mechanism for change detection (e.g. timestamp, tick counts).&lt;/P&gt;
&lt;P&gt;Sample implementations of some of these services along with device simulation software is provided in the 7R2 version of the Windows 7 Portable Device Enabling Kit and is now available &lt;A href="http://www.microsoft.com/whdc/device/wpd/MTP-DEK_Win7.mspx" mce_href="http://www.microsoft.com/whdc/device/wpd/MTP-DEK_Win7.mspx"&gt;here&lt;/A&gt;. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;MTP Device Services Extension&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In addition to the pre-defined device services mentioned above, Windows is also capable of supported custom device services that use the newly defined &lt;A href="http://www.microsoft.com/whdc/device/wpd/MTPDevServExt_Spec.mspx" mce_href="http://www.microsoft.com/whdc/device/wpd/MTPDevServExt_Spec.mspx"&gt;MTP Device Services Extension&lt;/A&gt; to MTP. The MTP Device Services Extension enables Windows to locate and use various services and content types located on a device.&lt;/P&gt;
&lt;P&gt;In the recent applications of MTP without device services, content is distributed throughout a device, which makes it difficult for the operating system to determine where the useful assets are and how to deploy them. With the creation of the Device Services extension to the MTP protocol, Windows now has the ability to locate, consume, and interact with this content in practical ways based on Microsoft and manufacturer defined services. This feature is particularly useful in accessing device content that is not based on file system data, accessing settings, or that has restricted capabilities. For example, a device manufacturer could define a custom SMS service. &lt;/P&gt;
&lt;P&gt;While MTP already supports enumeration by format, it is cumbersome when applying rich semantics to simple hierarchical storage. With Device Services, content and functionality can be combined under a single functional object, resulting in well-scoped access to only the content and functions specific to that service.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Windows Portable Devices (WPD) Platform Enhancements&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;For Windows 7, in addition to the legacy behavior, Windows Portable Devices (WPD) supports a new Device Services model. A Device Service is an extension of the functional object supported in prior versions of WPD. Applications will use service objects to discover device capabilities and to interact more efficiently with content.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;Device Services are available to applications as part of the WPD API. Some Device Services include built-in support by Windows 7. Two examples of operating-system components that use Device Services are the Windows Portable Devices Sync Provider and the Windows Portable Device Status Provider.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The Windows Portable Devices Sync Provider determines whether a cellular phone supports basic contacts synchronization by querying for its implementation of the Enumeration Sync device service on the device. The provider then uses this service to locate all contacts stored on the device without having to search the entire storage hierarchy. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;The Windows Portable Device Status Provider retrieves real-time status information from a cellular phone&amp;nbsp;that supports the Status device service, and relays information including battery life, signal strength, unread text messages, and number of missed calls to Device Stage™.&lt;/P&gt;
&lt;P&gt;Note that although cellular phones are featured in both sceanrios above, Device Services are not limited to a specific WPD device class.&amp;nbsp;Further examples of Device Services will be covered in a later post.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Device Stage™&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Device Stage provides additional customization of the user’s device experience by providing a new way for users to interact with their cell phones, cameras, printers, and portable media players. Device Stage provides a visual interface that makes it easy for users to find and use applications and services for a given device. &lt;/P&gt;
&lt;P&gt;Through a new set of XML schemas supported in Windows 7, device makers can:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Provide rich branding and customization for their device&lt;/LI&gt;
&lt;LI&gt;Define applications and services that are specific to each device&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Device Stage can be accessed by double clicking a supported device from within the Devices and Printers folder, or for portable devices, by clicking the device icon which appears on the taskbar when the device is connected. &lt;/P&gt;
&lt;P&gt;The Device Stage user interface follows the model of any shell view in Windows, and Device Stage devices appear on the Windows taskbar whenever the Device Stage is open. &lt;/P&gt;
&lt;P&gt;Device makers may enable additional features by supporting standard and vendor-unique Device Services, and authoring Device Stage tasks that make use of the service. When a device is connected which supports the any of the authored tasks, the tasks will appear within the Device Stage experience. Optionally, additional Partner applications and hosted web tasks may be specified within the Device Stage XML without modifications to device firmware. &amp;nbsp;These custom device experiences (via Hosted Site with Device option) within Device Stage are made possible by enhancements to the WPD API (mentioned above) and driver model which may now be extended via scripting and custom MTP Device Service extensions on the device. To assist device makers in all of this work, Microsoft has released a Portable Device Enabling Kit with documentation and device code samples. The 7R2 version of the kit is now available &lt;A href="http://www.microsoft.com/whdc/device/wpd/MTP-DEK_Win7.mspx" mce_href="http://www.microsoft.com/whdc/device/wpd/MTP-DEK_Win7.mspx"&gt;here&lt;/A&gt;. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the Windows 7 Control Panel, there is a new experience known as the Devices and Printers folder through which users can see all the devices that are connected to their PC. The devices in this folder are physically connected via USB or paired via Wi-Fi or Bluetooth interfaces.&amp;nbsp; (As a general rule, internal PC devices or device functions will not be exposed in this folder.) &lt;/P&gt;
&lt;P&gt;Using a new set of XML schemas, device makers can customize how their device is described and presented within the Devices and Printers folder. For more information on developing metadata packages for both the Devices and Printers folder and Device Stage in Windows 7, see the Windows Device Experience topic on WHDC.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Extended Transport Support&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In Windows 7 we have expanded support with WPD over other transports. A new class driverhas been introduced to enable MTP over Bluetooth. &amp;nbsp;With the support in Windows 7 for multiple transports the next step was to make Windows multi-transport aware, and the addition of the WPD composite driver provides the bridge between a logical device and the transports it simultaneously supports. The new features and functionality mentioned above are supported across all three of the MTP transports (Bluetooth, IP, and USB). &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Resources&lt;/STRONG&gt;:&lt;/P&gt;
&lt;P&gt;Information on MTP can be found at &lt;A href="http://www.usb.org/developers/devclass_docs/MTP_1.0.zip"&gt;http://www.usb.org/developers/devclass_docs/MTP_1.0.zip&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Details on MTP over Bluetooth and MTP over IP are provided in the documentation that ship in the Windows 7 Portable Device Enabling Kit for MTP and on MSDN. The kit can be downloaded from &lt;A href="http://www.microsoft.com/whdc/device/wpd/MTP-DEK_Win7.mspx"&gt;http://www.microsoft.com/whdc/device/wpd/MTP-DEK_Win7.mspx&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;Information on the WPD APIs can also be found on &lt;A href="http://msdn.microsoft.com/en-us/library/dd388998(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd388998(VS.85).aspx"&gt;MSDN&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;That’s it for now. Stay tuned for more posts diving into the details of the new Windows 7 WPD features.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;BR&gt;&lt;/P&gt;&lt;/EM&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9860720" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wpdblog/archive/tags/MTP/default.aspx">MTP</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Device+Stage/default.aspx">Device Stage</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Devices+and+Printers/default.aspx">Devices and Printers</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Device+Services/default.aspx">Device Services</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/Windows+Portable+Devices/default.aspx">Windows Portable Devices</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/WPD/default.aspx">WPD</category></item><item><title>Cancellation Behavior of MTP USB Devices</title><link>http://blogs.msdn.com/wpdblog/archive/2007/04/15/cancellation-behavior-of-mtp-usb-devices.aspx</link><pubDate>Sun, 15 Apr 2007 19:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2145678</guid><dc:creator>wpdblog</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/wpdblog/comments/2145678.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wpdblog/commentrss.aspx?PostID=2145678</wfw:commentRss><description>&lt;p&gt;The &lt;a href="http://www.usb.org/developers/devclass_docs/MTP_1.0.zip" title="MTP Specification" mce_href="http://www.usb.org/developers/devclass_docs/MTP_1.0.zip"&gt;MTP Specification&lt;/a&gt; contains&amp;nbsp;this definition of the &lt;b&gt;CancelTransaction &lt;/b&gt;Event:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;G.2.2 CancelTransaction&lt;/b&gt;&lt;br&gt;&lt;/i&gt;Event Code: &lt;b&gt;0x4001&lt;/b&gt;&lt;br&gt;Parameter 1: None&lt;br&gt;Parameter 2: None&lt;br&gt;Parameter 3: None&lt;/p&gt;
&lt;p&gt;This event is used to initiate the cancellation of a transaction over transports which do not have their own mechanism for canceling transactions. The details of how a transaction is cancelled may be transport-specific. When an initiator or responder receives this event, it should cancel the transaction identified by the TransactionID in the event dataset. If the transaction has already completed, this event should be ignored.&lt;/p&gt;
&lt;p&gt;After receiving a CancelTransaction event from the initiator during an object transfer, the responder should send an Transaction_Cancelled response for the transfer which was in progress.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;br&gt;&lt;b&gt;MTP USB Transport Cancellation Behavior&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Why then does an MTP/USB device send a&amp;nbsp;&lt;b&gt;Status_OK &lt;/b&gt;(0x2001) instead of &lt;b&gt;Transaction_Cancelled&lt;/b&gt; (0x201F)&amp;nbsp;response when&amp;nbsp;it receives a &lt;b&gt;CancelTransaction&lt;/b&gt; (0x4001) from the application?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The reason is that the MTP USB transport&amp;nbsp;has defined how cancellation&amp;nbsp;is to be implemented.&amp;nbsp;&amp;nbsp;&amp;nbsp;As pointed out in the MTP Specification above, &lt;b&gt;CancelTransaction&lt;/b&gt;&amp;nbsp;is intended for "&lt;i&gt;transports which do not have their own mechanism for canceling transactions&lt;/i&gt;", and will not apply to MTP/USB devices.&lt;/p&gt;
&lt;p&gt;Here are&amp;nbsp;the MTP/USB specifications for each cancellation scenario.&amp;nbsp;&amp;nbsp; In the cases below, "Host"&amp;nbsp;can be a PC running Windows Media Player 11, and "Device"&amp;nbsp;can be a MTP&amp;nbsp;music player or a PTP camera that connects to the PC through USB.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;Case A. When the Host Cancels&lt;br&gt;&lt;/u&gt;&lt;/b&gt;When&amp;nbsp;the device receives a cancellation request from the host,&amp;nbsp;it should return Device_Busy (0x2019) for&amp;nbsp;a &lt;b&gt;GetDeviceStatus&amp;nbsp;&lt;/b&gt;query.&amp;nbsp;&amp;nbsp;&amp;nbsp; The device should then perform cancellation and clean up, and return &lt;b&gt;Status_OK&lt;/b&gt; (0x2001)&amp;nbsp;for subsequent &lt;b&gt;GetDeviceStatus&lt;/b&gt; requests. The device should&amp;nbsp;NOT send a response for the cancelled transaction through the BULK-IN pipe.&lt;/p&gt;
&lt;p&gt;After the host receives a Status_OK response from&amp;nbsp;a &lt;b&gt;GetDeviceStatus &lt;/b&gt;query&amp;nbsp;on the device, it may issue the next transaction through the BULK-OUT pipe.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;Case B. When the Device Cancels&lt;br&gt;&lt;/u&gt;&lt;/b&gt;If the device wants to cancel, it should STALL both BULK-IN and BULK-OUT endpoints.&amp;nbsp; When the device receives a &lt;b&gt;GetDeviceStatus &lt;/b&gt;request from host, the device should return &lt;b&gt;Transaction_Cancelled &lt;/b&gt;(0x201F) as the reason for the STALL, and the STALL-ed endpoint numbers.&lt;/p&gt;
&lt;p&gt;The host may then issue the &lt;b&gt;ClearFeature &lt;/b&gt;request to clear the STALL-ed endpoints. The device should clear, get ready for next command, and return Status_OK for next &lt;b&gt;GetDeviceStatus&lt;/b&gt; query.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;Case C. When the Host and Device Both Cancel&lt;br&gt;&lt;/u&gt;&lt;/b&gt;When the device receives a cancel request from the host while it is trying to cancel,&amp;nbsp;it&amp;nbsp;should clear&amp;nbsp;any pending device-initiated cancellations, respond to the host with Device_Busy (0x2019) for subsequent &lt;b&gt;GetDeviceStatus&lt;/b&gt; requests, and proceed with normal host-initiated cancellation.&lt;/p&gt;
&lt;p&gt;When the device wants to cancel (this could be initiated by the user), it first checks if there&amp;nbsp;are any pending host-initiated cancellation.&amp;nbsp; If yes, the device can simply return.&amp;nbsp; If not, the device should STALL the BULK endpoints.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Cancellation Examples&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For cancellation examples, refer to the Picture Transfer Protocol (PTP)&amp;nbsp;Specification -&amp;nbsp;ISO 15740 Annex D: Sections D.7.2.1.2 (for device behavior) and D.9, available on the &lt;a href="http://www.i3a.org/technologies/image-formats/ptp/" title="I3A PTP Homepage" mce_href="http://www.i3a.org/technologies/image-formats/ptp/"&gt;I3A PTP website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In addition,&amp;nbsp;the &lt;a href="http://www.usb.org/developers/devclass_docs/usb_still_img10.pdf" class="" title="PTP/USB Definition" mce_href="http://www.usb.org/developers/devclass_docs/usb_still_img10.pdf"&gt;PTP USB Transport&lt;/a&gt;&amp;nbsp;specification also contains&amp;nbsp;a definition&amp;nbsp;for the GetDeviceStatus and&amp;nbsp;further descriptions of the BULK cancellation behavior.&lt;br&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/i&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2145678" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wpdblog/archive/tags/MTP/default.aspx">MTP</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/PTP/default.aspx">PTP</category></item><item><title>Getting ERROR_BUSY (0x800700AA) after reading data from an MTP device?</title><link>http://blogs.msdn.com/wpdblog/archive/2007/03/09/getting-error-busy-0x800700aa-after-reading-data-from-an-mtp-device.aspx</link><pubDate>Fri, 09 Mar 2007 22:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1847534</guid><dc:creator>wpdblog</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wpdblog/comments/1847534.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wpdblog/commentrss.aspx?PostID=1847534</wfw:commentRss><description>&lt;P&gt;One common cause of the ERROR_BUSY (0x800700AA) in MTP devices is when the application&amp;nbsp;reads resource data from&amp;nbsp;a content object on the portable device using IStream::Read(), and does not complete the read&amp;nbsp;with an IStream::Close().&amp;nbsp;&amp;nbsp;&amp;nbsp;Subsequent operations&amp;nbsp;that eventually translate into MTP&amp;nbsp;commands into the device could fail&amp;nbsp;with ERROR_BUSY because the resource read operation is not yet complete.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sometimes the failure could&amp;nbsp;appear delayed -&amp;nbsp;&amp;nbsp;after the resource read, there could be&amp;nbsp;several successful&amp;nbsp;WPD API calls before ERROR_BUSY appears, because the interim calls that succeeded were handled by the MTP driver (i.e. do not require the driver to talk to the device).&lt;/P&gt;
&lt;P&gt;From the device's perspective,&amp;nbsp;reading resource data translates to a sequence of operations involving the MTP command "GetObject".&amp;nbsp;&amp;nbsp;&amp;nbsp; This has to be&amp;nbsp;completed&amp;nbsp;or cancelled before&amp;nbsp;further&amp;nbsp;MTP commands to the device could proceed.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;For example, if your application does the following:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'courier-new'"&gt;
IStream* pObjectDataStream = NULL;

// 1. Open the default resource of an object with read access
HRESULT hr = pIPortableDeviceResources-&amp;gt;GetStream(wszObjectID, 
                                                     WPD_RESOURCE_DEFAULT, 
                                                     STGM_READ, 
                                                     &amp;amp;cbOptimalTransferSize,
                                                     &amp;amp;pObjectDataStream);

// 2. Read some data from the resource stream created by GetStream
if (hr == S_OK)
{
  hr = pObjectDataStream-&amp;gt;Read(pObjectData, cbOptimalTransferSize, &amp;amp;cbBytesRead);
}

// 3. Do other operations that translate into MTP commands to the device
// and they could result in 0x800700AA as the resource read operation is not complete&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;To fix this, ensure that IStream::Release() is called to complete or cancel the current read operation before proceeding &lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'courier-new'"&gt;
IStream* pObjectDataStream = NULL;

// 1. Open the default resource of an object with read access
HRESULT hr = pIPortableDeviceResources-&amp;gt;GetStream(wszObjectID, 
                                                     WPD_RESOURCE_DEFAULT, 
                                                     STGM_READ, 
                                                     &amp;amp;cbOptimalTransferSize,
                                                     &amp;amp;pObjectDataStream);

// 2. Read some data from the resource stream created by GetStream
if (hr == S_OK)
{
  hr = pObjectDataStream-&amp;gt;Read(pObjectData, cbOptimalTransferSize, &amp;amp;cbBytesRead);
}

// 3. IMPORTANT: Release the IStream if no longer using it to ensure that the read operation
// completes.   &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'courier-new'"&gt;
if(pObjectDataStream)
{
    pObjectDataStream-&amp;gt;Release();  // If using a CComPtr, set it to NULL
}

// 4. Proceed on to the other operations
&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;If your application is reading resource data from&amp;nbsp;an MTP device, and you are seeing ERROR_BUSY, check that you are always&amp;nbsp;calling Release()&amp;nbsp;on the IStream objects that you have opened.&amp;nbsp;&amp;nbsp;&amp;nbsp; This also applies if you are using smart pointers (e.g. CComPtr&amp;lt;IStream&amp;gt;), in which&amp;nbsp;case you can explicitly set the pointer to NULL&amp;nbsp;to tell the smart pointer to&amp;nbsp;Release() itself before&amp;nbsp;you proceed on to other&amp;nbsp;device operations.&amp;nbsp;&amp;nbsp;&amp;nbsp;This will release the pointer&amp;nbsp;after&amp;nbsp;you&amp;nbsp;have completed your&amp;nbsp;resource read/write operation(s),&amp;nbsp;instead of&amp;nbsp;relying on the IStream smart pointer to get out of scope.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Similarly, if your application is writing resource data to an MTP device, ensure that you're calling IStream::Commit() or IStream::Revert() to complete the write operation.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;[June 11, 2007]&amp;nbsp;&lt;/STRONG&gt;Thanks to drlily for pointing out&amp;nbsp;that IStream::Close does not actually exist.&amp;nbsp;&amp;nbsp;It should have been&amp;nbsp;IStream::Release&amp;nbsp;for a read IStream, and IStream::Commit, IStream::Revert, or IStream::Release for a write IStream.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1847534" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wpdblog/archive/tags/SDK/default.aspx">SDK</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/MTP/default.aspx">MTP</category></item><item><title>WIA Camera Support in Windows Vista (Part 2 of 2)</title><link>http://blogs.msdn.com/wpdblog/archive/2007/02/13/migrating-from-wia-to-wpd-part-2.aspx</link><pubDate>Tue, 13 Feb 2007 21:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1670507</guid><dc:creator>wpdblog</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wpdblog/comments/1670507.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wpdblog/commentrss.aspx?PostID=1670507</wfw:commentRss><description>&lt;p&gt;In the &lt;a href="http://blogs.msdn.com/wpdblog/archive/2007/02/13/migrating-from-wia-to-wpd.aspx" class="" title="WIA Camera Support on Vista" mce_href="http://blogs.msdn.com/wpdblog/archive/2007/02/13/migrating-from-wia-to-wpd.aspx"&gt;previous post&lt;/a&gt;, we gave an overview of the&amp;nbsp;WIA-WPD Compatibility Layer and how WIA Applications can register for WIA_EVENT_DEVICE_CONNECTED events.&lt;/p&gt;
&lt;p&gt;In this&amp;nbsp;post, we will cover a more advanced topic: customization for PTP and MTP devices.&amp;nbsp;&amp;nbsp; The WIA-WPD&amp;nbsp;Compatibility Layer supports basic extensibility for custom WIA events and WIA properties.&amp;nbsp;&amp;nbsp; These events and properties were provided in the PTP WIA class driver that shipped with Windows XP.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Adding Custom PTP/MTP WIA Event Codes&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;To specify a list of supported PTP/MTP event codes the '&lt;i&gt;&lt;b&gt;WiaEventCodes'&lt;/b&gt;&lt;/i&gt; entry should be provided.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The following example shows 3 custom event codes being reported.&lt;/p&gt;
&lt;p&gt;HKR,,"WiaEventCodes",”0x0001,0x0002,0x0003”&lt;/p&gt;
&lt;p&gt;For each event code specified in the &lt;i&gt;&lt;b&gt;'WiaEventCodes'&lt;/b&gt;&lt;/i&gt; entry, a corresponding &lt;i&gt;&lt;b&gt;'WiaEventCodeXXX'&lt;/b&gt;&lt;/i&gt; entry must exist that specifies the name of the event and the GUID to use when reporting the event to WIA applications.&amp;nbsp; The entry should be constructed using the prefix &lt;i&gt;‘&lt;b&gt;WiaEventCode + the event code specified in WiaEventCodes entry’&lt;/b&gt;&lt;/i&gt;.&amp;nbsp; If the WiaEventCodeXXX entry is missing, the event will not be reported to WIA applications.&lt;/p&gt;
&lt;p&gt;HKR,,"WiaEventCode0x0001”,”{20179E3D-139C-40D3-A0CA-962B33D67EE3},My Custom Event”&lt;br&gt;HKR,,"WiaEventCode0x0002”,”{259A62CF-D8FE-44D0-A747-B14F54A02133},My Amazing Event”&lt;br&gt;HKR,,"WiaEventCode0x0003”,”{639F80C6-94D1-48E2-9D8E-6D0F12237E48},My Super Event”&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Adding Custom PTP/WIA Property Codes&lt;/b&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;To specify a list of supported PTP/MTP property codes the &lt;b&gt;&lt;i&gt;‘WiaPropertyCodes’&lt;/i&gt;&lt;/b&gt; entry should be provided. WIA properties will only appear on the root item.&amp;nbsp; These properties are commonly used to control/program the device.&amp;nbsp; &lt;/p&gt;
&lt;p mce_keep="true"&gt;The following example shows 3 custom property codes being reported.&lt;/p&gt;
&lt;p mce_keep="true"&gt;HKR,,"WiaPropertyCodes",”0x0001,0x0002,0x0003”&lt;/p&gt;
&lt;p mce_keep="true"&gt;For each property code specified in the &lt;i&gt;&lt;b&gt;‘WiaPropertyCodes’ &lt;/b&gt;&lt;/i&gt;entry, a corresponding &lt;i&gt;&lt;b&gt;‘WiaPropertyCodeXXX’ &lt;/b&gt;&lt;/i&gt;entry must exist that specifies the name of the property and the WIA property code to use when reporting the property to WIA applications.&amp;nbsp; The entry should be constructed using the prefix &lt;i&gt;&lt;b&gt;‘WiaPropertyCode + the property code specified in WiaPropertyCodes entry’&lt;/b&gt;&lt;/i&gt;.&amp;nbsp; If the WiaPropertyCodeXXX entry is missing, the event will not be reported to WIA applications.&lt;/p&gt;
&lt;p mce_keep="true"&gt;HKR,,"WiaPropertyCode0x0001”,”My Custom Device Property”&lt;br&gt;HKR,,"WiaPropertyCode0x0002”,”My Amazing Device Property”&lt;br&gt;HKR,,"WiaPropertyCode0x0003”,”My Super Device Property”&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;b&gt;Sending PTP&amp;nbsp;Custom&amp;nbsp;Commands through WIA&lt;/b&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;PTP extension commands can be sent to the vendor's driver using &lt;a href="http://msdn.microsoft.com/en-us/library/ms629973%28VS.85%29.aspx" title="IWiaItemExtras::Escape" mce_href="http://msdn.microsoft.com/en-us/library/ms629973(VS.85).aspx"&gt;IWiaItemExtras::Escape&lt;/a&gt;.&amp;nbsp;&amp;nbsp; In Windows Vista, the WIA-WPD Compatibility&amp;nbsp;Layer&amp;nbsp;repackages&amp;nbsp;PTP extension commands sent using this&amp;nbsp;method into WPD&amp;nbsp;MTP/PTP extension commands, which are dispatched&amp;nbsp;to the WPD MTP class driver.&amp;nbsp;&amp;nbsp; This mechanism exists&amp;nbsp;to support&amp;nbsp;legacy WIA vendor applications that relied on&amp;nbsp;custom PTP commands&amp;nbsp;from Windows XP.&amp;nbsp; &lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;b&gt;Sending&amp;nbsp;MTP Custom Commands through WPD&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;WPD supports sending of custom MTP commands to the MTP driver using the &lt;a href="http://msdn.microsoft.com/en-us/library/dd375691%28VS.85%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd375691(VS.85).aspx"&gt;IPortableDevice::SendCommand&lt;/a&gt;&amp;nbsp;API.&amp;nbsp;&amp;nbsp; For&amp;nbsp;a step-by-step description, visit DimeBy8's excellent post &lt;a href="http://blogs.msdn.com/dimeby8/archive/2006/10/04/Sending-MTP-commands-through-WPD-_2800_Part-1_2900_.aspx" mce_href="http://blogs.msdn.com/dimeby8/archive/2006/10/04/Sending-MTP-commands-through-WPD-_2800_Part-1_2900_.aspx"&gt;here&lt;/a&gt;.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;b&gt;WIA to WPD Content Type and Format&amp;nbsp;Mapping&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;The following table maps WIA&amp;nbsp;Item Types&amp;nbsp;to the WPD_OBJECT_CONTENT_TYPE.&amp;nbsp; &lt;/p&gt;
&lt;p mce_keep="true"&gt;In addition to video and image content, the WIA-WPD Compatiliby Layer supports thumbnails and audio annotations for objects that have them.&amp;nbsp;&amp;nbsp;Any data objects that do not fall under these categories (e.g. music files) will not appear in WIA applications.&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;
&lt;/p&gt;&lt;table style="border: medium none ; border-collapse: collapse;" class="MsoTableGrid" border="1" cellpadding="0" cellspacing="0"&gt;
&lt;tbody&gt;
&lt;tr style=""&gt;
&lt;td style="border: 1pt solid windowtext; padding: 0in 5.4pt; width: 85.15pt; background-color: transparent;" valign="top" width="114"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 8pt;"&gt;WPD Object&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext rgb(240, 240, 240); border-width: 1pt 1pt 1pt medium; padding: 0in 5.4pt; width: 142.85pt; background-color: transparent;" valign="top" width="190"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 8pt;"&gt;WPD Content Type&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext rgb(240, 240, 240); border-width: 1pt 1pt 1pt medium; padding: 0in 5.4pt; width: 83.95pt; background-color: transparent;" valign="top" width="112"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 8pt;"&gt;WIA Item&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext rgb(240, 240, 240); border-width: 1pt 1pt 1pt medium; padding: 0in 5.4pt; width: 130.85pt; background-color: transparent;" valign="top" width="174"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 8pt;"&gt;WIA Item Type&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 85.15pt; background-color: transparent;" valign="top" width="114"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;Device object&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 142.85pt; background-color: transparent;" valign="top" width="190"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New';"&gt;N/A&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 83.95pt; background-color: transparent;" valign="top" width="112"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;Root item&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 130.85pt; background-color: transparent;" valign="top" width="174"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New';"&gt;(WiaItemTypeFolder | WiaItemTypeDevice | WiaItemTypeRoot)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 85.15pt; background-color: transparent;" valign="top" width="114"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;Folder object&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 142.85pt; background-color: transparent;" valign="top" width="190"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New';"&gt;WPD_CONTENT_TYPE_FOLDER&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 83.95pt; background-color: transparent;" valign="top" width="112"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;Folder Item&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 130.85pt; background-color: transparent;" valign="top" width="174"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New';"&gt;WiaItemTypeFolder&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 85.15pt; background-color: transparent;" valign="top" width="114"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;Functional Object&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 142.85pt; background-color: transparent;" valign="top" width="190"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New';"&gt;WPD_CONTENT_TYPE_FUNCTIONAL_OBJECT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 83.95pt; background-color: transparent;" valign="top" width="112"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;Folder Item&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 130.85pt; background-color: transparent;" valign="top" width="174"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New';"&gt;WiaItemTypeFolder&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 85.15pt; background-color: transparent;" valign="top" width="114"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;Image Object&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 142.85pt; background-color: transparent;" valign="top" width="190"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New';"&gt;WPD_CONTENT_TYPE_IMAGE&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 83.95pt; background-color: transparent;" valign="top" width="112"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;Image Item&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 130.85pt; background-color: transparent;" valign="top" width="174"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New';"&gt;(WiaItemTypeImage | WiaItemTypeFile | WiaItemTypeTransfer)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 85.15pt; background-color: transparent;" valign="top" width="114"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;Video Object&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 142.85pt; background-color: transparent;" valign="top" width="190"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New';"&gt;WPD_CONTENT_TYPE_VIDEO&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 83.95pt; background-color: transparent;" valign="top" width="112"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;Video Item&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 130.85pt; background-color: transparent;" valign="top" width="174"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New';"&gt;(WiaItemTypeVideo | WiaItemTypeFile | WiaItemTypeTransfer)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 85.15pt; background-color: transparent;" valign="top" width="114"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;Audio Object (used for annotations)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 142.85pt; background-color: transparent;" valign="top" width="190"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New';"&gt;WPD_CONTENT_TYPE_AUDIO&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 83.95pt; background-color: transparent;" valign="top" width="112"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;Audio Item &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 130.85pt; background-color: transparent;" valign="top" width="174"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New';"&gt;(WiaItemTypeAudio | WiaItemTypeFile | WiaItemTypeTransfer)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 85.15pt; background-color: transparent;" valign="top" width="114"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;Other objects&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 142.85pt; background-color: transparent;" valign="top" width="190"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New';"&gt;WPD_CONTENT_TYPE_XXXX&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 83.95pt; background-color: transparent;" valign="top" width="112"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;N/A (These are ignored)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 130.85pt; background-color: transparent;" valign="top" width="174"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;N/A (These are ignored)&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The following table maps the WIA_IPA_Format property&amp;nbsp;to the&amp;nbsp;WPD_OBJECT_FORMAT property:&lt;i&gt;&amp;nbsp;&lt;/i&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;table style="border: medium none ; width: 404.6pt; border-collapse: collapse;" class="MsoTableGrid" width="539" border="1" cellpadding="0" cellspacing="0"&gt;
&lt;tbody&gt;
&lt;tr style=""&gt;
&lt;td style="border: 1pt solid windowtext; padding: 0in 5.4pt; width: 139.3pt; background-color: transparent;" valign="top" width="186"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WIA_IPA_FORMAT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext rgb(240, 240, 240); border-width: 1pt 1pt 1pt medium; padding: 0in 5.4pt; width: 265.3pt; background-color: transparent;" valign="top" width="354"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;The formats will be mapped as follows:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style="border: medium none ; width: 254pt; border-collapse: collapse;" class="MsoNormalTable" width="339" border="1" cellpadding="0" cellspacing="0"&gt;
&lt;tbody&gt;
&lt;tr style="height: 12.75pt;"&gt;
&lt;td style="border: 1pt solid windowtext; padding: 0in 5.4pt; width: 95pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="127" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WiaImgFmt_EXIF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext rgb(240, 240, 240); border-width: 1pt 1pt 1pt medium; padding: 0in 5.4pt; width: 159pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="212" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WPD_OBJECT_FORMAT_EXIF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 12.75pt;"&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 95pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="127" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WiaImgFmt_JPEG&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 159pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="212" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WPD_OBJECT_FORMAT_JFIF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 12.75pt;"&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 95pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="127" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WiaImgFmt_PNG&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 159pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="212" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WPD_OBJECT_FORMAT_PNG&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 12.75pt;"&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 95pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="127" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WiaImgFmt_GIF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 159pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="212" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WPD_OBJECT_FORMAT_GIF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 12.75pt;"&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 95pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="127" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WiaImgFmt_TIFF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 159pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="212" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WPD_OBJECT_FORMAT_TIFF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 12.75pt;"&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 95pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="127" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WiaAudFmt_WAV&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 159pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="212" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WPD_OBJECT_FORMAT_WAVE&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 12.75pt;"&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 95pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="127" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WiaAudFmt_MP3&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 159pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="212" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WPD_OBJECT_FORMAT_MP3&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 12.75pt;"&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 95pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="127" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WiaAudFmt_AIFF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 159pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="212" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WPD_OBJECT_FORMAT_AIFF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 12.75pt;"&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 95pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="127" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WiaAudFmt_WMA&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 159pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="212" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WPD_OBJECT_FORMAT_WMA&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 12.75pt;"&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 95pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="127" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WiaImgFmt_MPG&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 159pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="212" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WPD_OBJECT_FORMAT_MPEG&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 12.75pt;"&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 95pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="127" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WiaImgFmt_AVI&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 159pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="212" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WPD_OBJECT_FORMAT_AVI&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="height: 12.75pt;"&gt;
&lt;td style="border-style: none solid solid; border-color: rgb(240, 240, 240) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 95pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="127" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WiaImgFmt_ASF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style="border-style: none solid solid none; border-color: rgb(240, 240, 240) windowtext windowtext rgb(240, 240, 240); border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 159pt; height: 12.75pt; background-color: transparent;" valign="bottom" width="212" nowrap="nowrap"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;WPD_OBJECT_FORMAT_ASF&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Configuration of the WIA-WPD Compatibility Layer&lt;/b&gt; &lt;/p&gt;
&lt;p minmax_bound="true"&gt;The following section lists the customization options in the WIA-WPD&amp;nbsp;Compatibility Layer that can be disabled/enabled by the device's INF [AddReg] section:&lt;/p&gt;
&lt;p minmax_bound="true"&gt;&lt;b&gt;Report EXIF&amp;nbsp;Image&amp;nbsp;Format&amp;nbsp;as JPG&lt;/b&gt;&lt;/p&gt;
&lt;p minmax_bound="true"&gt;Some WIA applications expect the EXIF image format to be reported as WiaImgFmt_JPG and not WiaImgFmt_EXIF.&amp;nbsp;&amp;nbsp; To &lt;b&gt;"opt-in"&lt;/b&gt; for this functionality, vendors can add the following to your device's INF:&lt;/p&gt;
&lt;p minmax_bound="true"&gt;HKR,,"ReportJPGFormatForEXIF",0x10001,1&lt;/p&gt;
&lt;p minmax_bound="true"&gt;&lt;b&gt;WIA Item Tree Behavior&amp;nbsp;for DCF&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;p minmax_bound="true"&gt;If the WIA-WPD Compatibility layer encounters a storage that supports DCF, it will ‘shift’ the WIA item tree contents closer to the root item so items are easily found.&amp;nbsp; This will reduce the number of folder levels an application or user will have to navigate to get to the image or video content stored on the device.&amp;nbsp; This functionality can be &lt;b&gt;disabled &lt;/b&gt;by adding the following to your device’s .INF [AddReg] section.&lt;/p&gt;
&lt;p minmax_bound="true"&gt;HKR,,"DisableDCFSpecialProcessing",0x10001,1&lt;/p&gt;
&lt;p minmax_bound="true"&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;
&lt;p minmax_bound="true"&gt;&lt;i minmax_bound="true"&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/i&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1670507" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wpdblog/archive/tags/MTP/default.aspx">MTP</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/WIA/default.aspx">WIA</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/PTP/default.aspx">PTP</category></item><item><title>WIA Camera Support in Windows Vista (Part 1 of 2)</title><link>http://blogs.msdn.com/wpdblog/archive/2007/02/13/migrating-from-wia-to-wpd.aspx</link><pubDate>Tue, 13 Feb 2007 11:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1667610</guid><dc:creator>wpdblog</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wpdblog/comments/1667610.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wpdblog/commentrss.aspx?PostID=1667610</wfw:commentRss><description>&lt;p&gt;In this two-part post, we will cover&amp;nbsp;WIA&amp;nbsp;support&amp;nbsp;for cameras on Windows Vista, and the migration from WIA to WPD for richer applications.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;WIA-WPD Compatibility Layer&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;On Windows XP, Picture Transfer Protocol (PTP) cameras are accessible through&amp;nbsp;the &lt;a href="http://msdn.microsoft.com/en-us/library/ms630368%28VS.85%29.aspx" title="Windows Image Acquisition" mce_href="http://msdn.microsoft.com/en-us/library/ms630368(VS.85).aspx"&gt;WIndows Image Acquisition&lt;/a&gt; (WIA) infrastructure.&amp;nbsp; This is still supported on Windows Vista through&amp;nbsp;the WIA-WPD Compatibility Layer (&lt;i&gt;PortableDeviceWiaCompat.dll&lt;/i&gt;).&amp;nbsp;&amp;nbsp;This&amp;nbsp;component is a WIA mini-driver that&amp;nbsp;communicates to the&amp;nbsp;inbox&amp;nbsp;Media&amp;nbsp;Transfer Protocol (MTP)&amp;nbsp;class driver&amp;nbsp;using the WPD API.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The following classes of devices&amp;nbsp;have the WIA-WPD Compatibility Layer enabled:&lt;/p&gt;
&lt;p&gt;1. PTP Cameras&lt;/p&gt;
&lt;p&gt;2. MTP devices that report WPD_DEVICE_TYPE_CAMERA (subcomp = 2) or WPD_DEVICE_TYPE_VIDEO (subcomp = 6)&lt;/p&gt;
&lt;p&gt;3. WPD devices that support WPD_CONTENT_TYPE_VIDEO&amp;nbsp;or WPD_CONTENT_TYPE_IMAGE, and&amp;nbsp;with the lowest bit set in the&amp;nbsp;&lt;b&gt;&lt;i&gt;EnableLegacySupport &lt;/i&gt;&lt;/b&gt;entry&amp;nbsp;under Device Parameters.&amp;nbsp;&amp;nbsp; This can be set in the driver INF:&lt;/p&gt;
&lt;p&gt;HKR,,"EnableLegacySupport",0x10001,1&lt;/p&gt;
&lt;p&gt;&lt;b&gt;WIA&amp;nbsp;Event Registration for Cameras&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;On Windows Vista, WIA &lt;i&gt;imaging &lt;/i&gt;applications communicate to PTP cameras&amp;nbsp;via the WPD-WIA Compatibility Layer and the Media Transfer Protocol (MTP) class driver.&amp;nbsp; Windows&amp;nbsp;Autoplay is supported, third party applications can register for WIA device-connected events and appear in the autoplay dialog.&amp;nbsp;&amp;nbsp;&amp;nbsp;Note that some third-party WIA applications may require Elevation ("Run as Administrator") at first launch to in order to successfully register for WIA events.&lt;/p&gt;
&lt;p&gt;1. Only &lt;b&gt;&lt;i&gt;Global WIA Event Registration&lt;/i&gt;&lt;/b&gt;&amp;nbsp;for WIA_EVENT_DEVICE_CONNECTED is supported.&amp;nbsp;&amp;nbsp;&amp;nbsp;Any WIA application that registers for&amp;nbsp;this event will be listed in&amp;nbsp;the&amp;nbsp;Windows Autoplay dialog&amp;nbsp;when any WIA-compatible&amp;nbsp;PTP camera is connected.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;2. Supported registration mechanisms: &lt;b&gt;STI Proxy &lt;/b&gt;registration (&lt;i&gt;IStillImage::RegisterLaunchApplication&lt;/i&gt;), &lt;b&gt;WIA CLSID &lt;/b&gt;registration (&lt;i&gt;IWiaDevMgr::RegisterEventCallbackCLSID&lt;/i&gt;), and &lt;b&gt;WIA Program &lt;/b&gt;registration (&lt;i&gt;IWiaDevMgr::RegisterEventCallbackProgram&lt;/i&gt;).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Custom Vendor Events&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To enable &lt;i&gt;&lt;b&gt;Device-Specific&lt;/b&gt;&lt;/i&gt; &lt;i&gt;&lt;b&gt;WIA Event Registration &lt;/b&gt;&lt;/i&gt;for custom vendor events, there is an "opt-in" mechanism.&amp;nbsp;&amp;nbsp; There are&amp;nbsp;2 steps to this:&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Step&amp;nbsp;1:&amp;nbsp;The vendor camera driver INF will&amp;nbsp;need to add the &lt;i&gt;&lt;b&gt;UseWiaAutoPlay&lt;/b&gt;&lt;/i&gt; setting in the &lt;i&gt;Device Parameters&lt;/i&gt; section in the registry.&amp;nbsp; This is a DWORD setting.&amp;nbsp; If set to 1, the WPD-WIA Compatiliby Layer will mark "device connected" and custom vendor events as "action events."&amp;nbsp;&amp;nbsp;&amp;nbsp; If unset, the default value is 0 (WIA autoplay is disabled).&lt;/p&gt;
&lt;p&gt;HKR,,"UseWiaAutoPlay",0x10001,1&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Step 2: The vendor's application&amp;nbsp;calls the&amp;nbsp;IWiaDevMgr APIs to create a&amp;nbsp;Device-specific WIA event registration for their custom WIA event.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The overall effect of&amp;nbsp;enabling device-specific registration is the WIA&amp;nbsp;Autoplay dialog will appear for the custom event.&amp;nbsp;&amp;nbsp;&amp;nbsp;This XP-style dialog&amp;nbsp;is implemented&amp;nbsp;by the WIA Service.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;It is recommended that applications only register via Windows Autoplay or WIA Autoplay, but not both.&amp;nbsp;&amp;nbsp; Windows Autoplay registration is preferred.&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;b&gt;Image and Video Acquisition&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;On Windows Vista, the camera image import functionality of the Scanner and Camera Wizard&amp;nbsp;is replaced by the Photo Acquisition Wizard and the Windows Photo Gallery.&amp;nbsp;&amp;nbsp; This is also known as the "Importing Pictures and Videos" dialog.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The Photo Acquisition wizard communciates&amp;nbsp;to PTP cameras using WPD APIs (more specifically, it uses the WPD Namespace Extension).&amp;nbsp;&amp;nbsp;&amp;nbsp; It does not use the WIA APIs.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Video Content Support&lt;/b&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;Video content support is removed from WIA for Windows Vista.&amp;nbsp;&amp;nbsp; The&amp;nbsp;effect is&amp;nbsp;video content on your device will not appear in WIA applications running on Windows Vista.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p mce_keep="true"&gt;To&amp;nbsp;access video content from your device, we recommend migrating your applciation to use the WPD API.&amp;nbsp;&amp;nbsp; WPD provides&amp;nbsp;broader content coverage (supports &lt;i&gt;both &lt;/i&gt;video and image content)&amp;nbsp;on Windows Vista for camera devices.&amp;nbsp;&amp;nbsp; For instance, the Vista Photo Acquisition Wizard uses WPD to retrieve pictures and video from PTP devices.&lt;/p&gt;
&lt;p mce_keep="true"&gt;For ease of migration, there is usually a straighforward correlation from WIA metadata to WPD object properties.&amp;nbsp; For example,&amp;nbsp;&lt;i&gt;WiaImgFmt_AVI&lt;/i&gt; corresponds to WPD_CONTENT_TYPE_VIDEO and WPD_OBJECT_FORMAT_AVI.&amp;nbsp;&amp;nbsp;&amp;nbsp;For more details,&amp;nbsp;refer to the&amp;nbsp;WPD &lt;a href="http://msdn.microsoft.com/en-us/library/dd420128.aspx" title="WPD video properties" mce_href="http://msdn.microsoft.com/en-us/library/dd420128.aspx"&gt;video properties&lt;/a&gt;&amp;nbsp;and &lt;a href="http://msdn.microsoft.com/en-us/library/dd375703%28VS.85%29.aspx" title="video format GUIDs" mce_href="http://msdn.microsoft.com/en-us/library/dd375703(VS.85).aspx"&gt;video format GUIDs&lt;/a&gt;&amp;nbsp;on MSDN.&lt;/p&gt;
&lt;p minmax_bound="true"&gt;&lt;b&gt;Next Post...&lt;/b&gt;&lt;/p&gt;
&lt;p minmax_bound="true"&gt;Watch the next post for more details on custom PTP&amp;nbsp;vendor commands through the&amp;nbsp;WIA&amp;nbsp;Escape mechanism, custom WIA property and event codes.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p minmax_bound="true"&gt;&lt;i minmax_bound="true"&gt;&lt;/i&gt;&amp;nbsp;&lt;/p&gt;
&lt;p minmax_bound="true"&gt;&lt;i minmax_bound="true"&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/i&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1667610" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wpdblog/archive/tags/MTP/default.aspx">MTP</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/WIA/default.aspx">WIA</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/PTP/default.aspx">PTP</category></item><item><title>Which Portable Devices?</title><link>http://blogs.msdn.com/wpdblog/archive/2007/01/27/which-devices-can-my-application-enumerate-using-wpd.aspx</link><pubDate>Sat, 27 Jan 2007 11:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1541885</guid><dc:creator>wpdblog</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wpdblog/comments/1541885.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wpdblog/commentrss.aspx?PostID=1541885</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;What devices does WPD support?&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A&amp;nbsp;WPD application (e.g. the &lt;a href="http://msdn.microsoft.com/en-us/library/dd389001%28VS.85%29.aspx" title="WPD API Sample" mce_href="http://msdn.microsoft.com/en-us/library/dd389001(VS.85).aspx"&gt;WPD API Sample&lt;/a&gt;) on &lt;b&gt;Windows XP&lt;/b&gt; (with the pre-requisites installed) can connect to these devices:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Devices (e.g. portable media players, cameras, some phones) that support &lt;a href="http://en.wikipedia.org/wiki/Media_Transfer_Protocol" class="" title="MTP in Wikipedia" mce_href="http://en.wikipedia.org/wiki/Media_Transfer_Protocol"&gt;Media Transfer Protocol&lt;/a&gt; (MTP). &lt;/li&gt;
&lt;li&gt;Devices that connect using third party or vendor provided WPD drivers.&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;A WPD application on &lt;b&gt;Windows Vista&lt;/b&gt; can connect to even more devices:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Devices (e.g. portable media players, cameras, some phones) that support MTP.&amp;nbsp; &lt;/li&gt;
&lt;li&gt;Devices that connect using third party or vendor provided WPD drivers.&lt;/li&gt;
&lt;li&gt;Devices (e.g. cameras, camcorders) that support &lt;a href="http://en.wikipedia.org/wiki/Picture_Transfer_Protocol" class="" title="PTP Wikipedia" mce_href="http://en.wikipedia.org/wiki/Picture_Transfer_Protocol"&gt;Picture Transfer Protocol&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;USB Mass Storage Devices.&lt;/li&gt;
&lt;li&gt;Windows CE devices via IPortableDeviceManager::GetPrivateDevices()&lt;/li&gt;&lt;/ul&gt;
&lt;p mce_keep="true"&gt;In both cases, the WPD Shell Namespace Extension is&amp;nbsp;also a&amp;nbsp;WPD application, so you can check whether your device is visible to WPD by browsing to it using Explorer ("My Computer").&amp;nbsp; &lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;b&gt;What about a Smartphone or PocketPC device?&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;p mce_keep="true"&gt;On Windows Vista, Windows CE devices&amp;nbsp;register the private WPD interface GUID, and can be enumerated in WPD&amp;nbsp;by&amp;nbsp;calling &lt;i&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd388694%28VS.85%29.aspx" title="IPortableDeviceManager::GetPrivateDevices" mce_href="http://msdn.microsoft.com/en-us/library/dd388694(VS.85).aspx"&gt;IPortableDeviceManager::GetPrivateDevices()&lt;/a&gt;&lt;/i&gt;.&amp;nbsp; These devices connect to Explorer using the WPD RAPI driver, which provides&amp;nbsp;device browsing&amp;nbsp;functionality.&amp;nbsp;&amp;nbsp; Content sync is&amp;nbsp;implemented&amp;nbsp;through a different channel.&amp;nbsp;&amp;nbsp; The WPD RAPI driver is not available on Windows XP.&lt;/p&gt;
&lt;p mce_keep="true"&gt;On Windows Vista and Windows XP, to enumerate content on a Windows CE device for Windows Media Player applications,&amp;nbsp;you can use the &lt;a href="http://msdn.microsoft.com/en-us/library/bb231982%28VS.85%29.aspx" title="WMDM API" mce_href="http://msdn.microsoft.com/en-us/library/bb231982(VS.85).aspx"&gt;Windows Media Device Manager (WMDM) APIs&lt;/a&gt;.&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;b&gt;How do I install WPD?&lt;/b&gt;&lt;/p&gt;
&lt;p mce_keep="true"&gt;On Windows XP, WPD is available when &lt;b&gt;any one&lt;/b&gt; of these pre-requistes&amp;nbsp;are installed:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Windows Media Player 11&lt;/li&gt;
&lt;li&gt;The redistributable package bundled with &lt;a href="http://msdn.microsoft.com/en-us/windows/bb190309.aspx" title="Windows Media Format 11 SDK Download Link" mce_href="http://msdn.microsoft.com/en-us/windows/bb190309.aspx"&gt;Windows Media Format 11 SDK&lt;/a&gt; (see &lt;a href="http://msdn2.microsoft.com/en-us/library/aa468619.aspx#redistributables__parm" class="" title="release notes" mce_href="http://msdn2.microsoft.com/en-us/library/aa468619.aspx#redistributables__parm"&gt;release notes&lt;/a&gt;)&lt;/li&gt;&lt;/ol&gt;
&lt;p mce_keep="true"&gt;On Windows Vista, WPD is supported natively for&amp;nbsp;SKUs that include Windows Media Player (e.g. Home Basic, Home Premium, Ultimate Edition ...)&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;i&gt;&lt;/i&gt;&amp;nbsp;&lt;/p&gt;
&lt;p mce_keep="true"&gt;&lt;i&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/i&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1541885" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wpdblog/archive/tags/SDK/default.aspx">SDK</category><category domain="http://blogs.msdn.com/wpdblog/archive/tags/MTP/default.aspx">MTP</category></item></channel></rss>