windows-nt/Source/XPSP1/NT/base/pnp/tools/devcon2/scripts
2020-09-26 16:20:57 +08:00
..
devmgr Add source files 2020-09-26 16:20:57 +08:00
devcon2.inf Add source files 2020-09-26 16:20:57 +08:00
devlist.hta Add source files 2020-09-26 16:20:57 +08:00
hardware.vbs Add source files 2020-09-26 16:20:57 +08:00
readme.htm Add source files 2020-09-26 16:20:57 +08:00
serialports.vbs Add source files 2020-09-26 16:20:57 +08:00
test1.vbs Add source files 2020-09-26 16:20:57 +08:00
test1a.vbs Add source files 2020-09-26 16:20:57 +08:00
test2.vbs Add source files 2020-09-26 16:20:57 +08:00
test3.vbs Add source files 2020-09-26 16:20:57 +08:00
test4.vbs Add source files 2020-09-26 16:20:57 +08:00
test5.vbs Add source files 2020-09-26 16:20:57 +08:00
test6.vbs Add source files 2020-09-26 16:20:57 +08:00
test7.vbs Add source files 2020-09-26 16:20:57 +08:00
test7r1.vbs Add source files 2020-09-26 16:20:57 +08:00
test8.vbs Add source files 2020-09-26 16:20:57 +08:00
test8dcom.vbs Add source files 2020-09-26 16:20:57 +08:00
test8r1.vbs Add source files 2020-09-26 16:20:57 +08:00

<HTML>
<HEAD>
<TITLE>Device Console Scripting</TITLE>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
<META content="Microsoft FrontPage 5.0" name=GENERATOR>
</HEAD>

<BODY link=#0000ff><FONT face=Verdana size=5>
<H2>Device Console Scripting</H2></FONT><FONT face=Verdana size=2>
<P><SPAN style="COLOR: #ff0000; FONT-FAMILY: Arial; FONT-SIZE: 10pt">[This is 
preliminary documentation and subject to change.]</SPAN></P>

<H3>SUMMARY</H3>
This document accompanies the Device Console COM Objects. The instructions herein apply to the Windows Whistler operating
system.

<p>The COM objects described in this document allow device query and management 
using any COM aware language, for example, Visual Basic, VBScript and JScript.

<H3>HOW IT WORKS</H3>

<p>Right-click on &quot;devcon.inf&quot; and click &quot;install&quot;. The COM objects will be 
installed and made available for use. The following document describes the 
objects available and samples on how to use them in context of VBScript.<h3>COM 
Objects</h3>

<h4>DevCon.DeviceConsole {2F4D685C-7304-45F1-8075-443255A11156}</h4>

<p>Root object that can be created via CreateObject either locally or remote.<h5>Properties</h5>

<p>RebootRequired&nbsp;&nbsp;&nbsp; (Get/Set)<blockquote>

<p>This property is set if any derived objects indicate a reboot is required.</blockquote>

<h5>Methods</h5>

<p>AllDevices(<i>[flags]</i>,<i>[machine]</i>)<blockquote>

<p>Returns a <i>Devices </i>collection of all devices for local or specified 
machine. Flags include 1 (Include not-present devices), 2 (In context of current 
hardware profile rather than globally).</blockquote>

<p>DevicesBySetupClasses(<i>classList</i>,<i>[flags]</i>,<i>[machine]</i>)<blockquote>

<p>Returns a <i>Devices</i> collection of all devices of the specified setup 
classes, otherwise similar to AllDevices. The classes may either be GUID's in 
string form or class names. ClassList may be either a single string, a 
collection of strings or an array of strings.</blockquote>

<p>DevicesByInterfaceClasses(<i>classList</i>,<i>[flags]</i>,<i>[machine]</i>)<blockquote>

<p>Returns a <i>Devices</i> collection of all devices that currently support any 
of the specified interface classes. Interface classes must be specified as 
GUID's in string form. Classlist may be either a single string, a collection of 
strings or an array of strings.</blockquote>

<p>DevicesByInstanceIds(<i>idList</i>,<i>[machine]</i>)<blockquote>

<p>Same as CreateEmptyDeviceList followed by an &quot;Add&quot; on that device list.</blockquote>

<p>SetupClasses(<i>[classList]</i>,<i>[machine]</i>)<blockquote>

<p>Create a <i>SetupClasses</i> collection from the specified classlist. 
Classlist may be either a single string, a collection of strings or an array of 
strings. If classlist is omitted or is &quot;&quot;, all classes for local/specified 
machine is returned.</blockquote>

<p>CreateEmptyDeviceList(<i>[machine]</i>)<blockquote>

<p>Create a <i>Devices</i> collection that contains no devices for specified 
machine. Creating the collection object this way (or by any of the other methods 
in this object) associates the collection with this object and allows child 
objects to be associated with this object. Creating the<i> </i>collection object 
directly will not associate it with this object or a machine.<i> </i>
</blockquote>

<p>CreateEmptySetupClassList(<i>[machine]</i>)<blockquote>

<p>Create a <i>SetupClasses</i> collection that contains no setup classes for 
specified machine. Creating the collection object this way (or by any of the 
other methods in this object) associates the collection with this object and 
allows child objects to be associated with this object. Creating the collection 
object directly will not associate it with this object or a machine.</blockquote>

<p>UpdateDriver(<i>scriptName</i>,<i>hardwareId</i>,<i>[flags]</i>)<blockquote>

<p>Updates all devices that have specified<i> </i>hardwareId with best<i> </i>
driver in either specified script or system scripts (currently only INF files 
are supported). A failure must be caught with appropriate error handling. Reboot 
status can be checked via RebootRequired property. Appropriate permissions are 
required.</blockquote>

<p>CheckReboot<blockquote>

<p>Prompts user for reboot if one is required. Reboots machine if user says ok, 
otherwise returns. Appropriate permissions are required.</blockquote>

<p>RebootReasonHardware<blockquote>

<p>Unconditionally reboots the machine logging the reason as planned &quot;hardware&quot;. 
Appropriate permissions are required.</blockquote>

<p>AttachEvent(<i>event,handler</i>)<blockquote>

<p>Attach an event handler for the specified <i>event</i>. This function returns 
'true' to indicate success. <span style="background-color: #FFFF00">currently no 
other value is returned.</span> <i>Handler</i> is a function pointer. If 
multiple handlers are specified, there is no guarantee on order of execution. In 
VBScript, the <i>handler</i> parameter must be obtained using &quot;getRef&quot;. The 
following events are currently defined:<blockquote>
    <table border="0" cellpadding="4" style="border-collapse: collapse" bordercolor="#111111" cellspacing="4">
      <tr>
        <td><b>Event name</b></td>
        <td><b>Parameters</b></td>
        <td><b>Action</b></td>
      </tr>
      <tr>
        <td>OnDeviceNodesChanged</td>
        <td><i>none</i></td>
        <td>Indicates a device change (inserted/deleted/started/stopped) akin to 
        DBT_DEVNODES_CHANGED.</td>
      </tr>
    </table>
  </blockquote>
</blockquote>

<p>DetachEvent(<i>event,</i><i>handler</i>)<blockquote>

<p>Detach event handler previously attached by AttachEvent. <i>Handler</i> and
<i>event</i> must be exactly the same as that specified in AttachEvent.</blockquote>

<h4>DevCon.Strings {BFDE9AEE-9418-42C0-8FA2-8B04C31ECDC7}</h4>

<p>Root object that can be created via CreateObject, also may be returned by 
methods/properties. Provides a dynamic collection of strings. This dynamic 
collection may be enumerated and/or indexed. Default method is &quot;Item&quot;.<h5>
Properties</h5>

<p>CaseSensative (Get/Set)<blockquote>

<p>Normally the strings collection is lenient on case when indexing by string or 
when finding strings. Leniency may be changed using this property. All strings 
are stored case sensitive.</blockquote>

<p>Count (Get)<blockquote>

<p>Number of items in the collection. The Collection is indexed 1..Count 
inclusive.</blockquote>

<h5>Methods</h5>

<p>Item(<i>[index/value]</i>) (Default)<blockquote>

<p>If no index specified, a snapshot of the collection is returned as a 1-based 
array, otherwise the indexed string is returned. Either a numerical or string 
index may be specified.</blockquote>

<p>Add(<i>items</i>)<blockquote>

<p>A string, collection of strings or array of strings may be added to the 
collection. Multi-dimension arrays are flattened.</blockquote>

<p>Insert(<i>index/value</i>,<i>items</i>)<blockquote>

<p>A string, collection of strings or array of strings may be inserted before 
the specified index (which may be a string in the collection or a numeric 
index).</blockquote>

<p>Remove(<i>index/value</i>)<blockquote>

<p>Remove a string either by numeric index or by value.</blockquote>

<p>Find(<i>value</i>)<blockquote>

<p>Returns index of string if it exists, otherwise 0.</blockquote>

<h4>&nbsp;</h4>

<h4>DevCon.SetupClasses {84524499-52D7-4336-8A5D-EC6FE6A9C8DE}</h4>

<p>Root object that can be created via CreateObject (although creation via 
DeviceConsole is preferred). Provides a dynamic collection of setup classes. 
This dynamic collection may be enumerated and/or indexed. Default method is 
&quot;Item&quot;. This object may be associated with a machine and is typically associated 
with a DeviceConsole object.<h5>Properties</h5>

<p>Count (Get)<blockquote>

<p>Returns number of SetupClass objects in the collection.</blockquote>

<h5>Methods</h5>

<p>Item(<i>index/guid</i>) (Default)<blockquote>

<p>Returns <i>SetupClass</i> object at specified index. Index is 1-based 
numeric, or the class GUID may be supplied.</blockquote>

<p>Add(<i>classNames</i>)<blockquote>

<p>Add one or more classes to the collection. If a single GUID string is 
specified, then only one SetupClass object will be added. If a class name is 
specified, it is possible for multiple SetupClass objects to be associated with 
the class name.</blockquote>

<p>Remove(<i>index/guid</i>)<blockquote>

<p>Remove a class from the collection.</blockquote>

<p>Devices(<i>[flags]</i>)<blockquote>

<p>Return <i>Devices</i> collection that contains the union of the devices of 
all the device classes specified in this collection.</blockquote>

<h4>&nbsp;</h4>

<h4>DevCon.SetupClass</h4>

<p>A single object in the SetupClasses collection. Inherits any information 
associated with the SetupClasses collection it was derived from. Default 
property is &quot;Guid&quot;.<h5>Properties</h5>

<p>Guid (Get, Default)<blockquote>

<p>Returns class Guid.</blockquote>

<p>Name (Get)<blockquote>

<p>Returns simple name of the setup class.</blockquote>

<p>Description (Get)<blockquote>

<p>Returns class description.</blockquote>

<p>Security (Get/Set)<blockquote>
  <p>Default device security for class in SDDL format. Setting it to null or 
  nothing will delete setting.<span style="background-color: #FFFF00"> Not yet 
  implemented.</span></p>
</blockquote>

<p>DeviceTypeOverride (Set/Get)<blockquote>

<p>Default device type for class (eg FILE_DEVICE_CDROM = 0x02). Setting it to 
null or nothing will delete setting.<span style="background-color: #FFFF00"> Not 
yet implemented.</span></blockquote>

<p>ForceExclusive (Set/Get)<blockquote>

<p>If TRUE, sets default to force all devices in the class to only be opened in exclusive mode. 
Setting it to null or nothing will delete setting.<span style="background-color: #FFFF00"> 
Not yet implemented.</span></blockquote>

<p>CharacteristicsOverride (Get/Set)<blockquote>

<p>Allows forcing (setting) of FILE_REMOVABLE_MEDIA (1) FILE_READ_ONLY_DEVICE 
(2) FILE_FLOPPY_DISKETTE (4) FILE_WRITE_ONCE_MEDIA (8) FILE_DEVICE_SECURE_OPEN 
(256)<p>If specified, sets default for the class. Setting it to null or nothing 
will delete setting.<span style="background-color: #FFFF00"> Not yet 
implemented.</span></blockquote>

<p>Machine (Get)<blockquote>

<p>Name of remote machine (usually prefixed by '\\').</blockquote>

<p>&nbsp;<h5>Methods</h5>

<p>Devices(<i>[flags]</i>)<blockquote>

<p>Return <i>Devices</i> collection for devices of this specific setup class.</blockquote>

<p>CreateEmptyDeviceList()<blockquote>
  <p>Creates an empty device list that is locked to this setup class. (That is, 
  no devices can be added to it unless that device has the same setup class).</p>
</blockquote>

<p>RegRead(<i>keyPath</i>)<blockquote>

<p>If keyPath ends in 
&quot;\&quot; then read key's default value, otherwise read named value. Supports reading 
of REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ and REG_DWORD values.</blockquote>

<p>RegWrite(<i>keyPath</i>,<i>value</i>,<i>[type]</i>)<blockquote>

<p>If keyPath 
ends in &quot;\&quot; then write key's default value, otherwise write named value. 
Supports writing of REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ, REG_DWORD and 
REG_BINARY values. If type is specified, it should be a string &quot;REG_SZ&quot;, &quot;REG_EXPAND_SZ&quot;, 
&quot;REG_MULTI_SZ&quot;, &quot;REG_DWORD&quot; or &quot;REG_BINARY&quot; and explicitly indicates the type of 
value to be written. If not specified, type is determined from value 
(collections will be written as REG_MULTI_SZ, strings as REG_SZ, integers as 
REG_DWORD). If &quot;REG_BINARY&quot; is specified, value must be numeric.</blockquote>

<p>RegDelete(keyPath)<blockquote>

<p>Delete class specific value.</blockquote>

<h4>&nbsp;</h4>

<h4>DevCon.Devices {176FAC5E-3A43-42A3-9CFC-157308934DF4}</h4>

<p>Root object that can be created via CreateObject (although creation via 
DeviceConsole or derived objects is preferred). Provides a dynamic collection of 
devices. This dynamic collection may be enumerated and/or indexed. This object 
may be associated with a machine and is typically associated with a 
DeviceConsole object. Default method is &quot;Item&quot;.<h5>Properties</h5>

<p>Count (Get)<blockquote>

<p>Returns number of Device objects in the collection.</blockquote>

<h5>Methods</h5>

<p>Item(<i>index/instanceId</i>) (Default)<blockquote>

<p>Return specified Device object. Index is 1-based.</blockquote>

<p>Add(<i>instanceId/instanceIdCollection</i>)<blockquote>

<p>Add one or more devices with specified instance ID's to this collection. This operation 
will fail if the specified device does not exist, or if the collection is locked 
to a specific setup class and the devi&nbsp;&nbsp;&nbsp; ce is of a different setup class.</blockquote>

<p>Remove(<i>index/instanceId</i>)<blockquote>

<p>Remove a device from collection. Index is 1-based. Does not delete the device 
itself.</blockquote>

<p>CreateRootDevice(<i>[hardwareId]</i>)<blockquote>

<p>Create a root-enumerated device and add to the collection. If the collection 
is locked to a specific setup class, the new device is associated with that 
setup class. The device will have the specified hardware id.&nbsp;Returns a Device object for the newly created device.</blockquote>

<h4>&nbsp;</h4>

<h4>DevCon.Device</h4>

<p>A single object representing a device. Usually associated with a 
DeviceConsole object and may be associated with a specific machine. Default 
property is &quot;InstanceId&quot;<h5>Properties</h5>

<p>InstanceId (Default,Get)<blockquote>

<p>Instance Id of the device.</blockquote>

<p>RebootRequired (Get/Set)<blockquote>

<p>Indicates if this device requires a reboot to start. Setting this property 
will also set the RebootRequired property of the associated DeviceConsole object 
if any.</blockquote>

<p>Description (Get)<blockquote>

<p>Description of device as it would appear in device manager. If friendly name 
is available, that is returned instead.</blockquote>

<p>HardwareIds (Get/Set)<blockquote>

<p>Strings collection of all hardware Id's reported by the device. May be 
modified for root-enumerated devices. Setting it to null or nothing will delete 
it.</blockquote>

<p>CompatibleIds (Get/Set)<blockquote>

<p>Strings collection of all compatible Id's reported by the device. May be 
modified for root-enumerated devices. Setting it to null or nothing will delete 
it.</blockquote>

<p>ServiceName (Get)<blockquote>

<p>Name of FDO service.</blockquote>

<p>Class (Get)<blockquote>

<p>GUID of SetupClass that device is associated with.</blockquote>

<p>Manufacturer (Get)<blockquote>

<p>Name of manufacturer of device if known.</blockquote>

<p>FriendlyName (Get/Set)<blockquote>

<p>Friendly name of device. Setting it to null or nothing will delete it.</blockquote>

<p>LocationInformation (Get/Set)<blockquote>

<p>Informative information about where the device is located. Setting it to null 
or nothing will delete it.</blockquote>

<p>UpperFilters (Get/Set)<blockquote>

<p>Strings collection of all upper filter services. Setting it to null or 
nothing will delete it.</blockquote>

<p>LowerFilters (Get/Set)<blockquote>

<p>Strings collection of all lower filter services. Setting it to null or 
nothing will delete it.</blockquote>

<p>EnumeratorName (Get)<blockquote>

<p>Indicates bus enumerator type.</blockquote>

<p>Security (Get/Set)<blockquote>
  <p>Device security in SDDL format. Setting it to null or nothing will delete 
  it.</p>
</blockquote>

<p>DeviceTypeOverride (Set/Get)<blockquote>

<p>Allows device type to be specified (eg FILE_DEVICE_CDROM = 0x02). If 
specified overrides class settings. Setting it to null or nothing will delete 
it.</blockquote>

<p>ForceExclusive (Set/Get)<blockquote>

<p>If TRUE, forces the device to only be opened in exclusive mode. If specified, 
overrides class settings. Setting it to null or nothing will delete it.</blockquote>

<p>CharacteristicsOverride (Get/Set)<blockquote>

<p>Allows forcing (setting) of FILE_REMOVABLE_MEDIA (1) FILE_READ_ONLY_DEVICE 
(2) FILE_FLOPPY_DISKETTE (4) FILE_WRITE_ONCE_MEDIA (8) FILE_DEVICE_SECURE_OPEN 
(256)<p>If specified, overrides class settings. Setting it to null or nothing 
will delete it.</blockquote>

<p>IsRunning (Get)<blockquote>

<p>True if device is up and running.</blockquote>

<p>IsDisabled (Get)<blockquote>

<p>True if device is disabled.</blockquote>

<p>HasProblem (Get)<blockquote>

<p>True if device has any kind of problem.</blockquote>

<p>ProblemCode (Get)<blockquote>

<p>Non-zero problem code if available, otherwise 0 (including if the device has 
a private problem).</blockquote>

<p>HasPrivateProblem (Get)<blockquote>

<p>True if device has a private problem that no code is available for.</blockquote>

<p>IsRootEnumerated (Get)<blockquote>

<p>True if device is root enumerated.</blockquote>

<p>IsDisableable (Get)<blockquote>

<p>True if device can be disabled.</blockquote>

<p>IsRemovable (Get)<blockquote>

<p>True if device supports being removed while OS is running.</blockquote>

<p>Machine (Get)<blockquote>

<p>Name of remote machine (usually prefixed by '\\').</blockquote>

<h5>Methods</h5>

<p>Delete<blockquote>

<p>Delete (remove) the device. If successful, this object is invalid and the 
device is removed.</blockquote>

<p>Enable<blockquote>

<p>Enable the device. If reboot is required, it is reported through the 
RebootRequired property.</blockquote>

<p>Disable<blockquote>

<p>Disable the device. If reboot is required, it is reported through the 
RebootRequired property.</blockquote>

<p>Start<blockquote>

<p>Start a stopped device.</blockquote>

<p>Stop<blockquote>

<p>Stop a running device.</blockquote>

<p>Restart<blockquote>

<p>Stop and then Start a device (property-change). This may succeed in cases 
where Stop-Start would not.</blockquote>

<p>HasInterface(<i>interfaceClass</i>)<blockquote>

<p>Return true if the device supports the specified interface (and that 
interface is currently active).</blockquote>

<p>RegRead(<i>keyPath</i>)<blockquote>

<p>If keyPath is prefixed with &quot;SW\&quot; then read the devices software key. If it 
is prefixed with &quot;HW\&quot; then read the devices hardware key. If keyPath ends in 
&quot;\&quot; then read key's default value, otherwise read named value. Supports reading 
of REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ and REG_DWORD values.</blockquote>

<p>RegWrite(<i>keyPath</i>,<i>value</i>,<i>[type]</i>)<blockquote>

<p>If keyPath is prefixed with &quot;SW\&quot; then write to the devices software key. If 
it is prefixed with &quot;HW\&quot; then write to the devices hardware key. If keyPath 
ends in &quot;\&quot; then write key's default value, otherwise write named value. 
Supports writing of REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ, REG_DWORD and 
REG_BINARY values. If type is specified, it should be a string &quot;REG_SZ&quot;, &quot;REG_EXPAND_SZ&quot;, 
&quot;REG_MULTI_SZ&quot;, &quot;REG_DWORD&quot; or &quot;REG_BINARY&quot; and explicitly indicates the type of 
value to be written. If not specified, type is determined from value 
(collections will be written as REG_MULTI_SZ, strings as REG_SZ, integers as 
REG_DWORD). If &quot;REG_BINARY&quot; is specified, value must be numeric.</blockquote>

<p>RegDelete(keyPath)<blockquote>

<p>If keyPath is prefixed with &quot;SW\&quot; then delete the specified device software 
 
value. If it is prefixed with &quot;HW\&quot; then delete the specified device 
hardware value.</blockquote>

<p>CurrentDriverPackage<blockquote>

<p>Determine driver package that was used for device. Return a DriverPackage 
object or &quot;nothing&quot; if no driver package found for this device.</blockquote>

<p>FindDriverPackages(<i>[pathList]</i>)<blockquote>

<p>Obtain a DriverPackages collection of all viable drivers by searching system 
directories and specified pathList (string/collection/array) for driver 
packages. PathList may contain directories to search for installation scripts, 
or may specify installation scripts by name (currently only INF files). 
Sub-directories are not searched. An empty collection is returned if no 
compatible drivers were found. If a path list is specified, only those 
files/directories are searched unless one of the paths is &quot;*&quot; (search default 
paths).<p>&nbsp;</blockquote>

<h4>DevCon.DriverPackages</h4>

<p>A collection of Driver Packages for a specific device. This collection may be 
enumerated and/or indexed. This object is always associated with a device. 
Default method is &quot;Item&quot;.<h5>Properties</h5>

<p>Count<blockquote>

<p>Number of drivers.</blockquote>

<h5>Methods</h5>

<p>Item(<i>[index]</i>)<blockquote>

<p>Returns a specific DriverPackage object. Index is 1-based.</blockquote>

<p>BestDriver<blockquote>

<p>Returns best DriverPackage object for device.</blockquote>

<p>Add(<i>[pathlist]</i>)<blockquote>

<p>Add more drivers. <span style="background-color: #FFFF00">Not implemented.</span><p>&nbsp;</blockquote>

<h4>DevCon.DriverPackage</h4>

<p>An individual driver package.<h5>Properties</h5>

<p>Description (Get)<blockquote>

<p>Default description for the device. (Note that this may be different to 
DriverDescription).</blockquote>

<p>Manufacturer (Get)<blockquote>

<p>Manufacturer of the device.</blockquote>

<p>Provider (Get)<blockquote>

<p>Provider of the install script.</blockquote>

<p>Date (Get)<blockquote>

<p>Driver date (returned as a date/time type).</blockquote>

<p>Version (Get)<blockquote>

<p>Version of driver (returned as a string in format &quot;a.b.c.d&quot;).</blockquote>

<p>ScriptFile (Get)<blockquote>

<p>Name of file that determines how driver is to be installed. Currently only 
INF files are supported.</blockquote>

<p>ScriptName (Get)<blockquote>

<p>In context of INF files, this is the decorated &quot;DDInstall&quot; section.</blockquote>

<p>HardwareIds (Get)<blockquote>

<p>Zero or more hardware ID's returned as a collection of strings. These are 
devices the package was designed for.</blockquote>

<p>CompatibleIds (Get)<blockquote>

<p>Zero or more compatible ID's returned as a collection of strings. These are 
devices the package will work with.</blockquote>

<p>DriverDescription (Get)<blockquote>

<p>A description of the driver (vs. the default description of the device).</blockquote>

<p>Reject (Get/Set)<blockquote>
  <p>Mark the driver that it should not be considered when using &quot;BestDriver&quot; 
  method in containing collection.</blockquote>
<p>IsClassDriver (Get)<blockquote>
  <p>Indicates this is a class driver.</blockquote>
<p>IsCompatibleDriver (Get)<blockquote>
  <p>Indicates this is a compatible driver.</blockquote>
<p>DescriptionIsDuplicate (Get)<blockquote>
  <p>Indicates there is another driver with same description in the containing 
  collection.</blockquote>
<p>ProviderIsDuplicate (Get)<blockquote>
  <p>Indicates there is another driver with same provider in the containing 
  collection.</blockquote>
<p>ExcludeFromList (Get)<blockquote>
  <p>Exclude this driver when using (future) DisplayAndSelectDriver method on 
  the containing collection.</blockquote>
<p>FromInternet (Get)<blockquote>
  <p>Indicates this driver is from the internet.</blockquote>
<p>NoDriver (Get)<blockquote>
  <p>No physical driver will be installed with this driver package.</blockquote>
<p>OldDriver (Get)<blockquote>
  <p>Driver presently/previously controlled device.</blockquote>
<p>OldInternetDriver (Get)<blockquote>
  <p>Driver was from internet but source files are no longer available.</blockquote>
<p>Rank (Get/Set)<blockquote>
  <p>Obtains/modifies ranking of driver prior to searching using &quot;BestDriver&quot; 
  method in containing collection. The value '0' indicates ideal driver. Values 
  0x8000-0xFFFF indicate an un-trusted driver.</blockquote>

<h5>Methods</h5>

<p>DriverFiles<blockquote>

<p>For an installed package, the files that are used by the driver. For other 
drivers, the files that would be used by the driver once installed.</blockquote>

<p>Manifest<blockquote>

<p>Source location of the files. <span style="background-color: #FFFF00">Not 
implemented correctly, needs rethinking.</span></blockquote>

<p>&nbsp;<h4>DevCon.DeviceIcon {514C3095-47E8-4B24-B831-FB1C22C1B1B6}</h4>

<p>ActiveX control to display a device/class icon. Control is windowless and 
transparent.<h5>Properties</h5>

<h5>Methods</h5>

<p>ObtainIcon(<i>deviceObject</i>/<i>classObject</i>)</p>

<blockquote>
  <p>Pass in a device or class object. An appropriate icon will be displayed.</p>

</blockquote>
<p>&nbsp;</p>

</FONT><FONT face="Courier" size="3"><H3>FEEDBACK</H3>
<P>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>. 
</FONT></P>
<P align=center><FONT face=Verdana size=2><A href="#top">Top of page</A></P></FONT>
<TABLE border=0" cellSpacing="0" width="624">
<TR>
<TD bgColor="#00ffff" height="2" vAlign="middle"></TD></TR></TABLE>
<FONT face="MS Sans Serif" size=1>
<P>&copy; Microsoft Corporation 2001</FONT><FONT face=Verdana size=2> 
</P></FONT>
</BODY>