summaryrefslogtreecommitdiff
path: root/setup/devcon
diff options
context:
space:
mode:
authorDave Wilson <[email protected]>2015-04-29 09:48:49 -0700
committerDave Wilson <[email protected]>2015-04-29 10:47:29 -0700
commitd40232638faaab19de557e70a3ee938da7a35295 (patch)
tree14e61c973745949af186b7940e3a53d25322f5de /setup/devcon
parent02e5b090a6131a7cc1b90f4a9373117c9e3c7088 (diff)
samples update for //build
Diffstat (limited to 'setup/devcon')
-rw-r--r--setup/devcon/devcon.htm680
-rw-r--r--setup/devcon/devcon.sln18
-rw-r--r--setup/devcon/devcon.vcxproj4
-rw-r--r--setup/devcon/devcon.vcxproj.Filters6
4 files changed, 694 insertions, 14 deletions
diff --git a/setup/devcon/devcon.htm b/setup/devcon/devcon.htm
new file mode 100644
index 00000000..200ecf21
--- /dev/null
+++ b/setup/devcon/devcon.htm
@@ -0,0 +1,680 @@
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 11">
+<meta name=Originator content="Microsoft Word 11">
+<link rel=File-List href="devcon_files/filelist.xml">
+<title>DevCon Sample</title>
+<!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:SpellingState>Clean</w:SpellingState>
+ <w:GrammarState>Clean</w:GrammarState>
+ <w:ValidateAgainstSchemas/>
+ <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+ <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+ <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
+ </w:LatentStyles>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+ {font-family:Courier;
+ panose-1:2 7 4 9 2 2 5 2 4 4;
+ mso-font-alt:"Courier New";
+ mso-font-charset:0;
+ mso-generic-font-family:modern;
+ mso-font-format:other;
+ mso-font-pitch:fixed;
+ mso-font-signature:3 0 0 0 1 0;}
+@font-face
+ {font-family:Verdana;
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-generic-font-family:swiss;
+ mso-font-pitch:variable;
+ mso-font-signature:536871559 0 0 0 415 0;}
+@font-face
+ {font-family:"MS Sans Serif";
+ panose-1:0 0 0 0 0 0 0 0 0 0;
+ mso-font-alt:"Times New Roman";
+ mso-font-charset:0;
+ mso-generic-font-family:roman;
+ mso-font-format:other;
+ mso-font-pitch:auto;
+ mso-font-signature:0 0 0 0 0 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+p.MsoListNumber, li.MsoListNumber, div.MsoListNumber
+ {mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+a:link, span.MsoHyperlink
+ {color:blue;
+ text-decoration:underline;
+ text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+ {color:blue;
+ text-decoration:underline;
+ text-underline:single;}
+p
+ {mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+span.SpellE
+ {mso-style-name:"";
+ mso-spl-e:yes;}
+span.GramE
+ {mso-style-name:"";
+ mso-gram-e:yes;}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+ /* List Definitions */
+ @list l0
+ {mso-list-id:-120;
+ mso-list-type:simple;
+ mso-list-template-ids:-155046518;}
+@list l0:level1
+ {mso-level-style-link:"List Number";
+ mso-level-tab-stop:.25in;
+ mso-level-number-position:left;
+ margin-left:.25in;
+ text-indent:-.25in;}
+@list l1
+ {mso-list-id:2061856105;
+ mso-list-template-ids:886459906;}
+@list l1:level1
+ {mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+ol
+ {margin-bottom:0in;}
+ul
+ {margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+ {mso-style-name:"Table Normal";
+ mso-tstyle-rowband-size:0;
+ mso-tstyle-colband-size:0;
+ mso-style-noshow:yes;
+ mso-style-parent:"";
+ mso-padding-alt:0in 5.4pt 0in 5.4pt;
+ mso-para-margin:0in;
+ mso-para-margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Times New Roman";
+ mso-ansi-language:#0400;
+ mso-fareast-language:#0400;
+ mso-bidi-language:#0400;}
+</style>
+<![endif]-->
+</head>
+
+<body lang=EN-US link=blue vlink=blue style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<h2><span class=SpellE><span style='font-family:Verdana'>DevCon</span></span><span
+style='font-family:Verdana'> Sample<o:p></o:p></span></h2>
+
+<h3><span style='font-family:Verdana'>DEVCON<o:p></o:p></span></h3>
+
+<p><span class=SpellE><span style='font-size:10.0pt;font-family:Verdana'>DevCon</span></span><span
+style='font-size:10.0pt;font-family:Verdana'> is a command-line tool that
+displays detailed information about devices, and lets you search for and
+manipulate devices from the command line. <span class=SpellE>DevCon</span>
+enables, disables, installs, configures, and removes devices on the local
+computer and displays detailed information about devices on local and remote
+computers. <span class=SpellE>DevCon</span> is included in the Windows DDK.<o:p></o:p></span></p>
+
+<h3><span style='font-family:Verdana'>ABOUT THIS DOCUMENT<o:p></o:p></span></h3>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>This document describes
+the <span class=SpellE>DevCon</span> source code, which is included in the
+Windows DDK in the /<span class=SpellE>src/setup/devcon</span> directory. It
+explains the <span class=SpellE>DevCon</span> design, and describes how to use
+the <span class=SpellE>SetupAPI</span> and device installation functions to
+enumerate devices and perform device operations in a console application.<o:p></o:p></span></p>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>For a complete
+description of <span class=SpellE>DevCon</span> features and instructions for
+using them, see the <span class=SpellE>DevCon</span> help file in the DDK
+documentation in Driver Development Tools/Tools for Testing Drivers/<span
+class=SpellE>DevCon</span>.<o:p></o:p></span></p>
+
+<h3><span style='font-family:Verdana'>SCOPE<o:p></o:p></span></h3>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>These instructions
+pertain to Windows XP and Windows Server 2003. <span class=SpellE>DevCon</span>
+was designed for use on Windows 2000, Windows XP, and Windows Server 2003. It
+will not work on Windows 95, Windows 98, or Windows ME.<o:p></o:p></span></p>
+
+<h3><span style='font-family:Verdana'>HOW IT WORKS<o:p></o:p></span></h3>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>Running &quot;<span
+class=SpellE>devcon</span> help&quot; will provide a list of commands along
+with short descriptions of what each command does. &quot;<span class=SpellE><span
+class=GramE>devcon</span></span> help &lt;command&gt;&quot; will give more
+detailed help on that command. The interpretation of each command is done via a
+dispatch table &quot;<span class=SpellE>DispatchTable</span>&quot; that is at
+the bottom of &quot;<span class=SpellE>cmds.cpp</span>&quot;. Some of the
+commands make use of a generic device enumerator &quot;<span class=SpellE>EnumerateDevices</span>&quot;.
+A few of these commands will work when given a remote target computer, and will
+also work if using the 32-bit <span class=SpellE>devcon</span> on Wow64.&nbsp;
+A description of some of the more interesting functions and the APIs they use
+follows:<o:p></o:p></span></p>
+
+<h4><span class=SpellE><span class=GramE><span style='font-family:Verdana'>cmdClasses</span></span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>This command demonstrates
+the use of <span class=SpellE>SetupDiBuildClassInfoListEx</span> to enumerate
+all device class <span class=SpellE>GUID's</span>. The function <span
+class=SpellE>SetupDiClassNameFromGuidEx</span> and <span class=SpellE>SetupDiGetClassDescriptionEx</span>
+are used to obtain more information about each device class.<o:p></o:p></span></p>
+
+<h4><span class=SpellE><span class=GramE><span style='font-family:Verdana'>cmdListClass</span></span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>This command demonstrates
+the use of <span class=SpellE>SetupDiClassGuidsFromNameEx</span> to enumerate
+one or more class <span class=SpellE>GUID's</span> that match the class name.
+This command also demonstrates the use of <span class=SpellE>SetupDiGetClassDevsEx</span>
+to list all the devices for each class GUID.<o:p></o:p></span></p>
+
+<h4><span class=SpellE><span class=GramE><span style='font-family:Verdana'>cmdFind</span></span></span><span
+style='font-family:Verdana'> <span class=SpellE>cmdFindAll</span> <span
+class=SpellE>cmdStatus</span><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>A simple use of <span
+class=SpellE>EnumerateDevices</span> (explained below) to list devices and
+display different levels of information about each device. Note that all but <span
+class=SpellE>cmdFindAll</span> use DIGCF_PRESENT to only list information about
+devices that are currently present. The main functionality for these and
+related devices is done inside <span class=SpellE>FindCallback</span>.<o:p></o:p></span></p>
+
+<h4><span class=SpellE><span class=GramE><span style='font-family:Verdana'>cmdEnable</span></span></span><span
+style='font-family:Verdana'> <span class=SpellE>cmdDisable</span> <span
+class=SpellE>cmdRestart</span><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>These&nbsp;commands show
+how to issue DIF_PROPERTYCHANGE to enable a device, disable a device, or
+restart a device. The main functionality for each of these commands is done
+inside <span class=SpellE>ControlCallback</span>. <o:p></o:p></span></p>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>These operations cannot
+be done on a remote machine or in the context of Wow64. CFGMGR32 API's should
+not be used as they skip class and co-installers. <o:p></o:p></span></p>
+
+<h4><span class=SpellE><span class=GramE><span style='font-family:Verdana'>cmdUpdate</span></span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>This command shows how to
+use <span class=SpellE>UpdateDriverForPlugAndPlayDevices</span> to update the
+driver for all devices to a specific driver. Normally INSTALLFLAG_FORCE would
+not be specified allowing <span class=SpellE>UpdateDriverForPlugAndPlayDevices</span>
+to determine if there is a better match already known. It's specified in <span
+class=SpellE>DevCon</span> to allow <span class=SpellE>DevCon</span> to be used
+more effectively as a debugging/testing tool. This cannot be done on a remote
+machine or in the context of Wow64. <o:p></o:p></span></p>
+
+<h4><span class=SpellE><span class=GramE><span style='font-family:Verdana'>cmdInstall</span></span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>A variation of <span
+class=SpellE>cmdUpdate</span> to install a driver when there is no associated
+hardware. It creates a new root-enumerated device instance and associates it
+with a made up hardware ID specified on the command line (which should
+correspond to a hardware ID in the INF). This cannot be done on a remote
+machine or in the context of Wow64.<o:p></o:p></span></p>
+
+<h4><span class=SpellE><span class=GramE><span style='font-family:Verdana'>cmdRemove</span></span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span class=GramE><span style='font-size:10.0pt;font-family:Verdana'>A
+command to remove devices.</span></span><span style='font-size:10.0pt;
+font-family:Verdana'> Plug &amp; Play devices that are removed will reappear in
+response to <span class=SpellE>cmdRescan</span>. The main functionality of this
+command is in <span class=SpellE>RemoveCallback</span> that demonstrates the
+use of DIF_REMOVE. This cannot be done on a remote machine or in the context of
+Wow64. CFGMGR32 API's should not be used as they skip class and co-installers.<o:p></o:p></span></p>
+
+<h4><span class=SpellE><span class=GramE><span style='font-family:Verdana'>cmdRescan</span></span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>This command shows the
+correct way to rescan for all Plug &amp; Play devices that may have previously
+been removed, or that otherwise require a rescan to detect them. <o:p></o:p></span></p>
+
+<h4><span class=SpellE><span class=GramE><span style='font-family:Verdana'>cmdDPAdd</span></span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Verdana'>This
+command allows you to add a Driver Package to the machine.<span
+style='mso-spacerun:yes'>� </span>The main functionality of this command
+demonstrates the use of <span class=SpellE>SetupCopyOEMInf</span>. Adding a Driver
+Package to the machine doesn�t mean the drivers are installed on devices, it
+simply means the drivers are available automatically when a new device is
+plugged in or <span class=GramE>a</span> existing device is updated.<o:p></o:p></span></p>
+
+<h4><span class=SpellE><span class=GramE><span style='font-family:Verdana'>cmdDPDelete</span></span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Verdana'>This
+command allows you to uninstall a Driver Package from the machine.<span
+style='mso-spacerun:yes'>� </span>The main functionality of this command
+demonstrates the use of <span class=SpellE>SetupUninstallOEMInf</span>.
+Removing a Driver Package from the machine does not uninstall the drivers
+associated with a device. If you want to accomplish both then use <span
+class=SpellE>cmdRemove</span> on all the devices using a given Driver Package
+and then <span class=SpellE>cmdDPDelete</span> to remove the Driver Package
+itself from the machine. This functionality is not available in Windows 2000 or
+earlier.<o:p></o:p></span></p>
+
+<h4><span class=SpellE><span class=GramE><span style='font-family:Verdana'>cmdDPEnum</span></span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Verdana'>This
+command allows you to enumerate all of the 3<sup>rd</sup> party Driver Packages
+currently installed on the machine and also shows you how to get some common
+properties from a Driver Package (Provider, Class description, <span
+class=SpellE>DriverVer</span> date and version).<o:p></o:p></span></p>
+
+<h4><span class=SpellE><span class=GramE><span style='font-family:Verdana'>cmdDPEnumLegacy</span></span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Verdana'>This
+command shows you how to enumerate 3<sup>rd</sup> party Driver Packages on
+Windows Server 2003 and earlier operating systems.<o:p></o:p></span></p>
+
+<h4><span style='font-family:Verdana'>Reboot<o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>This function shows how
+to correctly reboot the machine from a hardware install program. In particular
+it passes flags to <span class=SpellE>ExitWindowsEx</span> that cause the
+reboot to be associated with hardware installation. You should never reboot <span
+class=GramE>the</span> machine unnecessarily.<o:p></o:p></span></p>
+
+<h4><span class=SpellE><span style='font-family:Verdana'>EnumerateDevices</span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span class=GramE><span style='font-size:10.0pt;font-family:Verdana'>Demonstrates
+the use of <span class=SpellE>SetupDiGetClassDevsEx</span> to enumerate all
+devices or all present devices, either globally or limited to a specific setup
+class.</span></span><span style='font-size:10.0pt;font-family:Verdana'>
+Demonstrates the use of <span class=SpellE>SetupDiCreateDeviceInfoListEx</span>
+to create a blank list associated with a class or not (for most cases, a blank
+list need not be associated with a class). <span class=GramE>Demonstrates the
+use of <span class=SpellE>SetupDiOpenDeviceInfo</span> to add a device instance
+into a device info list.</span> These last two API's are ideal to obtain a <span
+class=SpellE>DeviceInfoData</span> structure from a device instance and machine
+name when mixing CFGMGR32 API's with SETUPAPI API's. <span class=SpellE>SetupDiGetDeviceInfoListDetail</span>
+is called to obtain a remote machine handle that may be passed into CFGMGR32
+API's. <span class=SpellE>SetupDiEnumDeviceInfo</span> is called to enumerate
+each and every device that is in the device info list (either explicitly added,
+or determined by the call to <span class=SpellE>SetupDiGetClassDevsEx</span>).
+The instance ID is obtained by calling <span class=SpellE>CM_Get_Device_ID_Ex</span>,
+using information in <span class=SpellE>devInfo</span> (obtained from <span
+class=SpellE>SetupDiEnumerateDeviceInfo</span>) and <span class=SpellE>devInfoListDetail</span>
+(obtained from <span class=SpellE>SetupDiGetDeviceInfoListDetail</span>). <span
+class=SpellE>GetHwIds</span> is called to obtain a list of hardware and
+compatible ID's (explained below). Once an interesting device has been
+determined (typically by checking hardware ID's) then the callback is called to
+operate on that individual device.<o:p></o:p></span></p>
+
+<h4><span class=SpellE><span style='font-family:Verdana'>GetHwIds</span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>Shows how to get the
+complete list of hardware ID's or compatible ID's for a device using <span
+class=SpellE>SetupDiGetDeviceRegistryProperty</span>.<o:p></o:p></span></p>
+
+<h4><span class=SpellE><span style='font-family:Verdana'>GetDeviceDescription</span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span class=GramE><span style='font-size:10.0pt;font-family:Verdana'>Shows
+how to obtain descriptive information about a device.</span></span><span
+style='font-size:10.0pt;font-family:Verdana'> The friendly name is used if it <span
+class=GramE>exists,</span> otherwise the device description is used.<o:p></o:p></span></p>
+
+<h4><span class=SpellE><span style='font-family:Verdana'>DumpDeviceWithInfo</span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span class=GramE><span style='font-size:10.0pt;font-family:Verdana'>Shows
+how to obtain an instance ID (or use any CFGMGR32 API) given HDEVINFO (device
+info list) and PSP_DEVINFO_DATA (device info data).</span></span><span
+style='font-size:10.0pt;font-family:Verdana'><o:p></o:p></span></p>
+
+<h4><span class=SpellE><span style='font-family:Verdana'>DumpDeviceStatus</span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span class=GramE><span style='font-size:10.0pt;font-family:Verdana'>Shows
+how to interpret the information returned by <span class=SpellE>CM_Get_DevNode_Status_Ex</span>.
+Refer to <span class=SpellE>cfg.h</span> for information returned by this API.</span></span><span
+style='font-size:10.0pt;font-family:Verdana'> <o:p></o:p></span></p>
+
+<h4><span class=SpellE><span style='font-family:Verdana'>DumpDeviceResources</span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span class=GramE><span style='font-size:10.0pt;font-family:Verdana'>Shows
+how to obtain information about resources used by a device.</span></span><span
+style='font-size:10.0pt;font-family:Verdana'><o:p></o:p></span></p>
+
+<h4><span class=SpellE><span style='font-family:Verdana'>DumpDeviceDriverFiles</span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>Provided as a debugging
+aid, obtains information about the files apparently being used for a device. It
+uses <span class=SpellE>SetupDiBuildDriverInfoList</span> to obtain information
+about the driver being used for the specified device. The driver list
+associated with a device may be enumerated by calling <span class=SpellE>SetupDiEnumDriverInfo</span>.
+In this case, there will be no more than one driver listed. This function
+proceeds to obtain a list of files that would normally be copied for this
+driver using DIF_INSTALLDEVICEFILES. <span class=SpellE>SetupScanFileQueue</span>
+is used to enumerate the file queue to display the list of files that are associated
+with the driver.<o:p></o:p></span></p>
+
+<h4><span class=SpellE><span style='font-family:Verdana'>DumpDeviceDriverNodes</span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>Provided as a debugging
+aid, this function determines the list of compatible drivers for a device. It
+uses <span class=SpellE>SetupDiBuildDriverInfoList</span> to obtain the list of
+compatible drivers. In this case, all drivers are enumerated, however typically
+DIF_SELECTBESTCOMPATDRV and <span class=SpellE>SetupDiGetSelectedDriver</span>
+would be used together to find which driver the OS would consider to be the
+best. <o:p></o:p></span></p>
+
+<h4><span class=SpellE><span style='font-family:Verdana'>DumpDeviceStack</span></span><span
+style='font-family:Verdana'><o:p></o:p></span></h4>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>This function determines
+class and device upper and lower filters. <o:p></o:p></span></p>
+
+<h3><span style='font-family:Verdana'>BUILDING THE DEVCON SAMPLE<o:p></o:p></span></h3>
+
+<h5><span style='font-family:Verdana'>To build the <span class=SpellE>devcon</span>
+sample:<o:p></o:p></span></h5>
+
+<p class=MsoListNumber style='margin-left:.5in;text-indent:-.25in;mso-list:
+l1 level1 lfo3;tab-stops:list .5in'><![if !supportLists]><span
+style='font-size:10.0pt;font-family:Verdana;mso-fareast-font-family:Verdana;
+mso-bidi-font-family:Verdana'><span style='mso-list:Ignore'>1.<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
+style='font-size:10.0pt;font-family:Verdana'>Click the Build Environment icon
+of choice in the Development Kits Build Environments sub-menu. This will set up
+the correct build environment to build this sample. Note that this sample will
+build in the 64-bit environments as well as the 32-bit environments. <o:p></o:p></span></p>
+
+<p class=MsoListNumber style='margin-left:.5in;text-indent:-.25in;mso-list:
+l1 level1 lfo3;tab-stops:list .5in'><![if !supportLists]><span
+style='font-size:10.0pt;font-family:Verdana;mso-fareast-font-family:Verdana;
+mso-bidi-font-family:Verdana'><span style='mso-list:Ignore'>2.<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
+style='font-size:10.0pt;font-family:Verdana'>In a command window, change to the
+directory containing the <span class=SpellE>DevCon</span> source code. For
+example:<o:p></o:p></span></p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p style='margin-left:.5in'><span class=SpellE><span class=GramE><b><span
+style='font-size:10.0pt;font-family:Verdana'>cd</span></b></span></span><b><span
+style='font-size:10.0pt;font-family:Verdana'> <span class=SpellE>src\setup\devcon</span></span></b><span
+style='font-size:10.0pt;font-family:Verdana'> <o:p></o:p></span></p>
+
+</blockquote>
+
+<p class=MsoListNumber style='margin-left:.5in;text-indent:-.25in;mso-list:
+l1 level1 lfo3;tab-stops:list .5in'><![if !supportLists]><span
+style='font-size:10.0pt;font-family:Verdana;mso-fareast-font-family:Verdana;
+mso-bidi-font-family:Verdana'><span style='mso-list:Ignore'>3.<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
+style='font-size:10.0pt;font-family:Verdana'>Use the macro BLD or run the
+following from the command prompt: <o:p></o:p></span></p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><span class=GramE><b><span style='font-size:10.0pt;font-family:Verdana'>build</span></b></span><b><span
+style='font-size:10.0pt;font-family:Verdana'> �c</span></b><span
+style='font-size:10.0pt;font-family:Verdana'> <o:p></o:p></span></p>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>This invokes the
+Microsoft make routines that produce the <span class=SpellE>Build.log</span>, <span
+class=SpellE>Build.wrn</span>, and <span class=SpellE>Build.err</span> log
+files. <o:p></o:p></span></p>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>When the build completes,
+the executable will be placed in the ObjXXX\I386 subdirectory of the
+&lt;TARGETPATH&gt; directory specified in the Sources file (depending on build
+environment chosen). <o:p></o:p></span></p>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>If the build does not
+succeed, check for these errors: 1) the build environment is not set up
+properly, or 2) modifications made to the sample source code introduced errors.
+<o:p></o:p></span></p>
+
+</blockquote>
+
+<h3><span style='font-family:Verdana'>USING DEVCON<o:p></o:p></span></h3>
+
+<p><span class=SpellE><span style='font-size:10.0pt;font-family:Verdana'>DevCon</span></span><span
+style='font-size:10.0pt;font-family:Verdana'> is provided in ready-to-run form
+in tools\<span class=SpellE>devcon</span>. For usage, refer to the document
+provided with devcon.exe. <span class=SpellE>DevCon</span> is a command line
+utility with built-in documentation available by typing &quot;<span
+class=SpellE>devcon</span> help&quot;. <o:p></o:p></span></p>
+
+<h3><span style='font-family:Verdana'>TESTING<o:p></o:p></span></h3>
+
+<p><span style='font-size:10.0pt;font-family:Verdana'>Type &quot;<span
+class=SpellE>devcon</span> find *&quot; to list device instances of all present
+devices on the local machine.<o:p></o:p></span></p>
+
+<p><span class=GramE><span style='font-size:10.0pt;font-family:Verdana'>Type
+&quot;<span class=SpellE>devcon</span> status @root\rdp_mou\0000&quot; to list
+status of the terminal server mouse driver.</span></span><span
+style='font-size:10.0pt;font-family:Verdana'><o:p></o:p></span></p>
+
+<p><span class=GramE><span style='font-size:10.0pt;font-family:Verdana'>Type
+&quot;<span class=SpellE>devcon</span> status *PNP05*&quot; to list status of
+all COM ports.</span></span><span style='font-size:10.0pt;font-family:Verdana'><o:p></o:p></span></p>
+
+<h3><span style='font-family:Verdana'>CODE TOUR<o:p></o:p></span></h3>
+
+<h4><span style='font-family:Verdana'>File Manifest<o:p></o:p></span></h4>
+
+<table class=MsoNormalTable border=0 cellspacing=1 cellpadding=0 width=916
+ style='width:687.0pt;mso-cellspacing:.7pt;mso-padding-alt:0in 0in 0in 0in'>
+ <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
+ <td width=151 valign=top style='width:113.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><u>File</u></p>
+ </td>
+ <td width=755 style='width:566.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><u>Description</u></p>
+ </td>
+ </tr>
+ <tr style='mso-yfti-irow:1'>
+ <td width=151 valign=top style='width:113.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><i>DevCon.htm</i></p>
+ </td>
+ <td width=755 style='width:566.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal>Sample tour documentation for this binary (this file).</p>
+ </td>
+ </tr>
+ <tr style='mso-yfti-irow:2'>
+ <td width=151 valign=top style='width:113.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><span class=SpellE><i>DevCon.cpp</i></span></p>
+ </td>
+ <td width=755 style='width:566.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal>Source file for <span class=SpellE>tmain</span> entry
+ point and utility functions.</p>
+ </td>
+ </tr>
+ <tr style='mso-yfti-irow:3'>
+ <td width=151 valign=top style='width:113.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><span class=SpellE><i>Cmds.cpp</i></span></p>
+ </td>
+ <td width=755 style='width:566.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal>Source file for supported commands.</p>
+ </td>
+ </tr>
+ <tr style='mso-yfti-irow:4'>
+ <td width=151 valign=top style='width:113.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><span class=SpellE><i>Dump.cpp</i></span></p>
+ </td>
+ <td width=755 style='width:566.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal>Source file for functions that output information about
+ devices.</p>
+ </td>
+ </tr>
+ <tr style='mso-yfti-irow:5'>
+ <td width=151 valign=top style='width:113.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><span class=SpellE><i>DevCon.h</i></span></p>
+ </td>
+ <td width=755 style='width:566.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><span class=GramE>Header file</span> for sample.</p>
+ </td>
+ </tr>
+ <tr style='mso-yfti-irow:6'>
+ <td width=151 valign=top style='width:113.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><span class=SpellE><i>DevCon.rc</i></span></p>
+ </td>
+ <td width=755 style='width:566.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><span class=GramE>Resource file</span> containing some
+ strings and version information.</p>
+ </td>
+ </tr>
+ <tr style='mso-yfti-irow:7'>
+ <td width=151 valign=top style='width:113.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><span class=SpellE><i>rc_ids.h</i></span></p>
+ </td>
+ <td width=755 style='width:566.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><span class=GramE>Header file</span> for resources.</p>
+ </td>
+ </tr>
+ <tr style='mso-yfti-irow:8'>
+ <td width=151 valign=top style='width:113.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><span class=SpellE><i>Msg.mc</i></span></p>
+ </td>
+ <td width=755 style='width:566.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal>Message file that is used to build <span class=SpellE>msg.rc</span>
+ and <span class=SpellE>msg.h</span> used for help texts and other messages.</p>
+ </td>
+ </tr>
+ <tr style='mso-yfti-irow:9'>
+ <td width=151 valign=top style='width:113.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><i>Sources</i></p>
+ </td>
+ <td width=755 style='width:566.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal>Generic file that lists source files and all the build
+ options.</p>
+ </td>
+ </tr>
+ <tr style='mso-yfti-irow:10;mso-yfti-lastrow:yes'>
+ <td width=151 valign=top style='width:113.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal><span class=SpellE><i>Makefile</i></span></p>
+ </td>
+ <td width=755 style='width:566.25pt;padding:0in 0in 0in 0in'>
+ <p class=MsoNormal>File that redirects to the real make file that is shared
+ by all the driver components of the Windows DDK.</p>
+ </td>
+ </tr>
+</table>
+
+<h3><span style='font-family:Courier'>FEEDBACK<o:p></o:p></span></h3>
+
+<p><span style='font-family:Courier'>We welcome your comments, problem reports
+and wish-list requests. Please submit them by pointing your Internet browser to
+<a href="http://www.microsoft.com/ddk">http://www.microsoft.com/ddk</a>. </span></p>
+
+<p align=center style='text-align:center'><span style='font-size:10.0pt;
+font-family:Verdana'><a href="#top">Top of page</a><o:p></o:p></span></p>
+
+<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width=624
+ style='width:6.5in;mso-cellspacing:0in;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
+ <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;
+ height:1.5pt'>
+ <td style='background:aqua;padding:.75pt .75pt .75pt .75pt;height:1.5pt'>
+ <p class=MsoNormal><span style='font-size:2.0pt;mso-bidi-font-size:12.0pt'><o:p>&nbsp;</o:p></span></p>
+ </td>
+ </tr>
+</table>
+
+<p><span style='font-size:7.5pt;font-family:"MS Sans Serif"'>� 2004</span><span
+style='font-size:10.0pt;font-family:Verdana'> </span><span style='font-size:
+7.5pt;font-family:"MS Sans Serif"'>Microsoft Corporation </span><span
+style='font-size:10.0pt;font-family:Verdana'><o:p></o:p></span></p>
+
+</div>
+
+</body>
+
+</html>
diff --git a/setup/devcon/devcon.sln b/setup/devcon/devcon.sln
index cc5b6752..68b6a2f9 100644
--- a/setup/devcon/devcon.sln
+++ b/setup/devcon/devcon.sln
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0
MinimumVisualStudioVersion = 12.0
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "devcon", "devcon.vcxproj", "{E3D0CF6A-32E9-4970-8BED-43CC8DF57A5D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "devcon", "devcon.vcxproj", "{B3ABCC72-91F9-40CB-A8F4-CB9C1400C5FC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -13,14 +13,14 @@ Global
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {E3D0CF6A-32E9-4970-8BED-43CC8DF57A5D}.Debug|Win32.ActiveCfg = Debug|Win32
- {E3D0CF6A-32E9-4970-8BED-43CC8DF57A5D}.Debug|Win32.Build.0 = Debug|Win32
- {E3D0CF6A-32E9-4970-8BED-43CC8DF57A5D}.Release|Win32.ActiveCfg = Release|Win32
- {E3D0CF6A-32E9-4970-8BED-43CC8DF57A5D}.Release|Win32.Build.0 = Release|Win32
- {E3D0CF6A-32E9-4970-8BED-43CC8DF57A5D}.Debug|x64.ActiveCfg = Debug|x64
- {E3D0CF6A-32E9-4970-8BED-43CC8DF57A5D}.Debug|x64.Build.0 = Debug|x64
- {E3D0CF6A-32E9-4970-8BED-43CC8DF57A5D}.Release|x64.ActiveCfg = Release|x64
- {E3D0CF6A-32E9-4970-8BED-43CC8DF57A5D}.Release|x64.Build.0 = Release|x64
+ {B3ABCC72-91F9-40CB-A8F4-CB9C1400C5FC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B3ABCC72-91F9-40CB-A8F4-CB9C1400C5FC}.Debug|Win32.Build.0 = Debug|Win32
+ {B3ABCC72-91F9-40CB-A8F4-CB9C1400C5FC}.Release|Win32.ActiveCfg = Release|Win32
+ {B3ABCC72-91F9-40CB-A8F4-CB9C1400C5FC}.Release|Win32.Build.0 = Release|Win32
+ {B3ABCC72-91F9-40CB-A8F4-CB9C1400C5FC}.Debug|x64.ActiveCfg = Debug|x64
+ {B3ABCC72-91F9-40CB-A8F4-CB9C1400C5FC}.Debug|x64.Build.0 = Debug|x64
+ {B3ABCC72-91F9-40CB-A8F4-CB9C1400C5FC}.Release|x64.ActiveCfg = Release|x64
+ {B3ABCC72-91F9-40CB-A8F4-CB9C1400C5FC}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/setup/devcon/devcon.vcxproj b/setup/devcon/devcon.vcxproj
index c674ef8a..096388e6 100644
--- a/setup/devcon/devcon.vcxproj
+++ b/setup/devcon/devcon.vcxproj
@@ -19,11 +19,11 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{E3D0CF6A-32E9-4970-8BED-43CC8DF57A5D}</ProjectGuid>
+ <ProjectGuid>{B3ABCC72-91F9-40CB-A8F4-CB9C1400C5FC}</ProjectGuid>
<RootNamespace>$(MSBuildProjectName)</RootNamespace>
<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
<Platform Condition="'$(Platform)' == ''">Win32</Platform>
- <SampleGuid>{406B583C-3ECF-4696-B3DD-6F2E8B3C1ED5}</SampleGuid>
+ <SampleGuid>{6B50AB2B-3ADE-4D0B-A859-3E6EB578AB42}</SampleGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
diff --git a/setup/devcon/devcon.vcxproj.Filters b/setup/devcon/devcon.vcxproj.Filters
index 803e16d8..38a699dc 100644
--- a/setup/devcon/devcon.vcxproj.Filters
+++ b/setup/devcon/devcon.vcxproj.Filters
@@ -3,15 +3,15 @@
<ItemGroup>
<Filter Include="Source Files">
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx;*</Extensions>
- <UniqueIdentifier>{C14D27DB-E3A6-4543-A3C4-7EF046CD3D67}</UniqueIdentifier>
+ <UniqueIdentifier>{5372BDCC-9AF5-4735-84C0-9AB168DD5DF1}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files">
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- <UniqueIdentifier>{8837D39E-7F9A-4CCB-B352-F512532281A3}</UniqueIdentifier>
+ <UniqueIdentifier>{108192B6-9F15-48AA-A1E2-5C076B2ACFFB}</UniqueIdentifier>
</Filter>
<Filter Include="Resource Files">
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms;man;xml</Extensions>
- <UniqueIdentifier>{CCD87CAF-050E-44E6-B5BE-C919F85E854D}</UniqueIdentifier>
+ <UniqueIdentifier>{FBAAD2FE-6B28-4F66-90D0-2B6662CA1195}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>