WindowsXP/admin/wmi/wbem/winmgmt/specs/html/interface_iwbemclassobject.htm
2025-04-27 07:49:33 -04:00

2932 lines
121 KiB
HTML
Raw Permalink Blame History

<html>
<head>
<title>Interface IWbemClassObject</title>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
</head>
<body>
<font FACE="Arial Narrow" SIZE="6" COLOR="#800000">
<p></font><font SIZE="6" FACE="Arial Narrow" color="#000000"><b>Interface IWbemClassObject</b></font><font
SIZE="2"></p>
</font><font FACE="Arial" SIZE="2">
<p>The <b>IWbemClassObject</b> interface contains and manipulates both class definitions
and class object instances.</p>
<p>From the WBEM client perspective, this interface is always in-process. <b>Put</b>
(write) operations will only affect the local copy of the object, and <b>Get</b> (read)
operations always retrieve values from the local copy. </p>
<p>You can perform updates to CIMOM only when entire objects are read or written using
methods on the <b>IWbemServices</b> interface. Examples of such updates are <b>IWbemServices::PutInstance</b>
or <b>IWbemServices::PutClass.</b></p>
<p>This interface is not implemented by the user or by a provider under any circumstances.
The implementation provided by CIMOM is the only one that is supported. </p>
</font>
<table CELLSPACING="0" BORDER="0" WIDTH="585">
<tr>
<td VALIGN="TOP" COLSPAN="3" width="1238"></td>
</tr>
<tr>
<td WIDTH="597" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" size="3"><b>IWbemClassObject
Methods</b></font></td>
<td WIDTH="639" VALIGN="TOP"><font FACE="Arial" size="3"><b>Description</b></font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><font FACE="Arial" SIZE="2" color="#008000"><b>GetQualifierSet</b></font></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Allows access to the
qualifier set of the entire object.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><font FACE="Arial" SIZE="2" color="#008000"><b>Get</b></font></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Gets a particular
property value.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><font FACE="Arial" SIZE="2" color="#008000"><b>Put</b></font></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Updates or creates a
particular property value.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">Delete</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Removes the
specified property from the object.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">GetNames</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Obtains a list of
the names of the properties in the object.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">BeginEnumeration</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Begins an
enumeration of the properties.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">Next</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Obtains the next
property in an enumeration after an initial call to <b>BeginEnumeration</b>.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">EndEnumeration</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Ends an enumeration
begun with <b>BeginEnumeration</b>.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">GetPropertyQualifierSet</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Allows access to the
qualifiers of a particular property.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">Clone</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Makes a copy of the
current object.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">GetObjectText</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Obtains the textual
rendition of the object in Managed Object Format (MOF) syntax.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">SpawnDerivedClass</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Creates a new
derived class from the current class.</font></td>
</tr>
<tr>
<td WIDTH="597" VALIGN="TOP" COLSPAN="2"><b><font FACE="Arial" SIZE="2" color="#008000">SpawnInstance</font></b></td>
<td WIDTH="639" VALIGN="TOP"><font FACE="Arial" SIZE="2">Creates a new instance from the
current class.</font></td>
</tr>
<tr>
<td WIDTH="597" VALIGN="TOP" COLSPAN="2"><b><font FACE="Arial" SIZE="2" color="#008000">CompareTo</font></b></td>
<td WIDTH="639" VALIGN="TOP"><font FACE="Arial" SIZE="2">Tests two objects for equality.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">GetPropertyOrigin</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Reports the class in
which a particular property was introduced.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">InheritsFrom</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Reports whether the
current object inherits from a particular class.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">GetMethod</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Gets the in- and
out-parameter definitions for a specific CIM method.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">PutMethod</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Creates a CIM
method.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">DeleteMethod</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Removes a CIM
method.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">BeginMethodEnumeration</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Begins an
enumeration of CIM methods for the object.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">NextMethod</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Retrieves the next
CIM method definition in an enumeration of methods.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">EndMethodEnumeration</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Ends the enumeration
of CIM methods for an object.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">GetMethodQualifierSet</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Returns the
qualifier set object for a specific CIM method.</font></td>
</tr>
<tr>
<td WIDTH="13" VALIGN="TOP"><b><font FACE="Arial" SIZE="2" color="#008000">GetMethodOrigin</font></b></td>
<td WIDTH="1395" VALIGN="TOP" COLSPAN="2"><font FACE="Arial" SIZE="2">Reports the class in
which a CIM method is defined.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<hr>
<p></font><font FACE="Arial Narrow" SIZE="5" COLOR="#800000">&nbsp;</p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::QueryInterface</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::QueryInterface</b> method determines if the object supports a
particular COM interface. If it does, the system increases the object's reference count,
and the application can use that interface immediately.</font><font
FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::QueryInterface(</p>
<p>[in] REFIID</b><i> riid</i><b>,</p>
<p>[out] LPVOID</b><i> *ppv </i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>riid</p>
<blockquote>
</i><p>The COM interface identifier of the requested interface.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>obp</p>
<blockquote>
</i><p>Address of a pointer that is filled with the interface pointer if the query
succeeds.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font><font FACE="Arial" SIZE="2"></p>
<p>Returns standard COM error codes for <b>QueryInterface</b><i>. </i>It returns
WBEM_S_NO_ERROR if the call succeeds. If the requested interface is not supported this
call will fail and return E_NOINTERFACE.</font><font FACE="Arial Narrow"><b></p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>When the application no longer needs the interface retrieved by a call to this method,
it must call the <u><b>Release</b></u></font><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_Release</font><font
FACE="Arial" SIZE="2"> method for that interface to free it. The <b>QueryInterface</b>
method allows the extension of objects without interfering with existing or future
functionality of the objects.</p>
<p>The <b>QueryInterface</b> method is part of the <b>IUnknown</b> interface inherited by
the object. For more information about this method, see the COM documentation in the
Microsoft Platform SDK.</font><b><font FACE="Arial Narrow"></p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IUnknown Interface Basics</u></font></b><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_iunknown_interface_basics</font><font
FACE="Arial" SIZE="2"> </font><font FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::AddRef</font><font FACE="Arial Narrow" SIZE="1" COLOR="#800000"><EFBFBD>@<40></font></b><font
SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::AddRef</b> method increases the object's reference count by 1.</font><font
FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>ULONG AddRef( );</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"></p>
<p>None.</font><font FACE="Arial Narrow"><b></p>
<p>Return Values</b></font><font FACE="Arial" SIZE="2"></p>
<p>Returns the new reference count.</font><font FACE="Arial Narrow"><b></p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>When you create the object, its reference count is set to 1. Every time an application
obtains an interface to the object or calls the <b>AddRef</b> method, the object's
reference count increases by 1. Use the <u><b>Release</b></u></font><font FACE="Arial"
SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_Release</font><font FACE="Arial" SIZE="2">
method to decrease the object's reference count by 1. </p>
<p>This method is part of the <b>IUnknown</b> interface inherited by the object. For a
complete discussion of <b>IUnknown</b> methods, see <b>IUnknown Programming Basics</b>.</p>
<p>For more information about this method, see the COM documentation in the Microsoft
Platform SDK.</font><b><font FACE="Arial Narrow"></p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IUnknown Interface Basics</u></font></b><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_iunknown_Interface_basics</font><font
FACE="Arial" SIZE="2"> </font><font FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::Release</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::Release</b> method decreases the object's reference count by
1.</font><b><font FACE="Lucida Sans Typewriter" SIZE="2"></p>
<p>ULONG IWbemClassObject::Release( );</p>
<p></font><font FACE="Arial Narrow">&nbsp;</p>
<p>Parameters</font></b><font FACE="Arial" SIZE="2"></p>
<p>None.</font><font FACE="Arial Narrow"><b></p>
<p>Return Values</b></font><font FACE="Arial" SIZE="2"></p>
<p>Returns the new reference count.</font><font FACE="Arial Narrow"><b></p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>The object deallocates itself when its reference count reaches zero. Use the <u><b>AddRef</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_AddRef</font><font
FACE="Arial" SIZE="2"> method to increase the object's reference count by 1.</p>
<p>This method is part of the <b>IUnknown</b> interface inherited by the object. For more
information about this method, see the COM documentation in the Microsoft Platform SDK.</font><b><font
FACE="Arial Narrow"></p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IUnknown Interface Basics</u></font></b><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_iunknown_interface_basics</font><font
FACE="Arial" SIZE="2"> </font><font FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::GetQualifierSet</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::GetQualifierSet</b> method returns an interface pointer that
allows read and write operations on the set of qualifiers for the entire class object,
whether the object is an instance or a class definition. Any qualifiers added, deleted, or
edited using the returned pointer apply to the entire instance or class definition.</font><font
FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::GetQualifierSet(</p>
<p>[out] IWbemQualifierSet</b><i> **ppQualSet</i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>ppQualSet</p>
<blockquote>
</i><p>Receives the interface pointer that allows access to the qualifiers for the class
object. The returned object has a positive reference count upon return from the call. The
caller must call <u><b>IWbemQualifierSet::Release</b></u></font><font FACE="Arial"
SIZE="2" COLOR="#800000">_hmm_IWbemQualifierSet_Release</font><font FACE="Arial" SIZE="2">
when the object is no longer needed. This parameter cannot be NULL. On error, a new object
is not returned and the pointer is left unmodified.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="463">
<tr>
<td WIDTH="42%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="58%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
complete the call.</font></td>
</tr>
<tr>
<td WIDTH="42%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="58%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
<tr>
<td WIDTH="42%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="58%" VALIGN="TOP"><font FACE="Arial" SIZE="2">A null pointer was used in the
parameter list.</font></td>
</tr>
<tr>
<td WIDTH="42%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_FAILED</font></td>
<td WIDTH="58%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There has been a general failure.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><b><font FACE="Arial Narrow">&nbsp;</p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IWbemQualifierSet</u></font></b><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemQualifierSet</font><font
FACE="Arial" SIZE="2">, <u><b>IWbemClassObject::GetPropertyQualifierSet</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_GetPropertyQualifierSet</font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::Get</font><font FACE="Arial Narrow" SIZE="1" COLOR="#800000"><EFBFBD>@<40></font></b><font
SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::Get</b> method retrieves the specified property value, if it
exists. This method also can return <u>system properties</u></font><font FACE="Arial"
SIZE="2" COLOR="#800000">_hmm_System_Properties</font><font FACE="Arial" SIZE="2">.</font><font
FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::Get(</p>
<p>[in] BSTR</b><i> strName</i><b>,</p>
<p>[in] LONG </b><i>lFlags</i><b>,</p>
<p>[out, OPTIONAL] VARIANT</b><i> *pVal</i><b>, </p>
<p>[out, OPTIONAL] CIMTYPE</b><i> *pvtType</i><b>, </p>
<p>[out, OPTIONAL] LONG </b><i>*plFlavor</i> </p>
<p><b>&nbsp;</p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>strName</p>
<blockquote>
</i><p>The desired property name. This must point to a valid BSTR. It is treated as
read-only.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>lFlags</p>
<blockquote>
</i><p>Reserved. It must be zero.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>pVal</p>
<blockquote>
</i><p>Points to an existing uninitialized <b>VARIANT</b> structure that receives the
property value, if found. Since this is an out-only parameter, this method calls <b>VariantInit</b>
on this<b> VARIANT, </b>so the caller should take care that this is not pointing to an
active <b>VARIANT</b>. The <i>pVal</i> parameter can be NULL if a property value is not
required. If an error code is returned from this method, the pointer is left unmodified.</p>
</font>
</blockquote>
<p><font FACE="Arial Narrow" SIZE="3"><b>&nbsp;</p>
<p>Note</p>
<blockquote>
</b></font><font FACE="Arial" SIZE="2"><p>It is required that the caller call <b>VariantClear</b>
on the returned <b>VARIANT</b> when its value is no longer required. This will prevent
memory leaks in the client process. The type of the <b>VARIANT</b> returned does not
always indicate the real CIM type of the property, which is indicated by the <i>pTyp</i>e
out-parameter. If the property currently has no value (the null value), the <b>VARIANT</b>
is of type VT_NULL. Client applications must use the <i>plType</i> parameter to learn the
real CIM type of the property. </p>
<p>If the type is VT_UNKNOWN, the returned property in the <b>VARIANT</b> is an embedded <b>IWbemClassObject</b><i>.
</i>After extracting the <b>IUnknown</b> pointer, the user must call <b>IUnknown::QueryInterface</b>
for <b>IID_IWbemClassObject</b> and use the returned pointer to access the embedded <b>IWbemClassObject</b>.
Note that <b>VariantClear</b> invokes <b>Release</b> on the object. However, since the
user causes an implicit <b>AddRef</b><i> </i>to occur by calling <b>QueryInterface</b><i>,
</i>the user must explicitly <b>Release</b> the <b>IWbemClassObject</b> pointer retrieved
from <b>IUnknown::QueryInterface</b>, as well as call <b>VariantClear</b> on the returned <b>VARIANT</b>.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>pvtType</p>
<blockquote>
</i><p>Can be NULL. If it is not NULL, it receives the CIM type of the property, that is,
one of the CIM type constants, such as CIM_SINT32, CIM_STRING, etc. This indicates the CIM
semantics of the property value packed into the VARIANT.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>plFlavor</p>
<blockquote>
</i><p>Can be NULL. If not NULL, the LONG value pointed to receives information on the
origin of the property:</p>
<p>WBEM_FLAVOR_ORIGIN_LOCAL</p>
<blockquote>
<p>The property belongs to the derived-most class.</p>
</blockquote>
<p>WBEM_FLAVOR_ORIGIN_PROPAGATED</p>
<blockquote>
<p>The property was inherited from a parent class.</p>
</blockquote>
<p>WBEM_FLAVOR_ORIGIN_SYSTEM</p>
<blockquote>
<p>The property is a standard system property.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="463">
<tr>
<td WIDTH="46%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_FAILED</font></td>
<td WIDTH="54%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There has been a general failure.</font></td>
</tr>
<tr>
<td WIDTH="46%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_NOT_FOUND</font></td>
<td WIDTH="54%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The specified property was not
found.</font></td>
</tr>
<tr>
<td WIDTH="46%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="54%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
complete the operation.</font></td>
</tr>
<tr>
<td WIDTH="46%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="54%" VALIGN="TOP"><font FACE="Arial" SIZE="2">One or more parameters was not
valid.</font></td>
</tr>
<tr>
<td WIDTH="46%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="54%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>If the underlying type of the property is an object path, a date/time string, or
another special type, the returned values in the VARIANT will not contain enough
information to identify the true type. The pvtType out-parameter will indicate this.</p>
<p>To obtain the string form of the CIM type for the property, the IWbemQualifierSet
pointer for the property must be obtained and the CIMTYPE qualifier retrieved. That
qualifier is the string form of the CIM type, such as &quot;sint32&quot; vs. CIM_SINT32 (a
numeric constant).</font><font FACE="Arial Narrow" SIZE="3"><b></p>
<p>Note</p>
<blockquote>
</b></font><font FACE="Arial" SIZE="2"><p>When you create a new object using <u><b>IWbemClassObject::SpawnInstance</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_SpawnInstance</font><font
FACE="Arial" SIZE="2">, it is important to note that some system properties are not set
until the object has been written to CIMOM. In all cases, <b>IWbemClassObject::Get</b><i> </i>will
succeed in accessing the requested system property, but the returned VARIANT may contain
VT_NULL.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><b><font FACE="Arial Narrow">&nbsp;</p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IWbemClassObject::GetPropertyQualifierSet</u></font></b><font FACE="Arial" SIZE="2"
COLOR="#800000">_hmm_IWbemClassObject_GetPropertyQualifierSet</font><font FACE="Arial"
SIZE="2">, System Classes, Properties, and Qualifiers</p>
<p>The following sample code retrieves the CIM class name from an object using the system
property <i>__CLASS</i></font><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_System_Class_Reference</font><font
FACE="Arial" SIZE="2">:</font><font FACE="Lucida Sans Typewriter" SIZE="1"></p>
<p>IWbemClassObject *pObj = NULL;</p>
<p>VARIANT v;</p>
<p>BSTR strClassProp = SysAllocString(L&quot;__CLASS&quot;);</p>
<p>pObj-&gt;Get(strClassProp, 0, &amp;v, 0, 0);</p>
<p>SysFreeString(strClassProp);</p>
<p>wprintf(L&quot;The class name is %S\n&quot;, V_BSTR(&amp;v));</font><font
FACE="Lucida Sans Typewriter" SIZE="2"></p>
<p>VariantClear( &amp;v );</font><font FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::Put</font><font FACE="Arial Narrow" SIZE="1" COLOR="#800000"><EFBFBD>@<40></font></b><font
SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::Put</b> method sets a named property to a new value. This
method always overwrites the current value with the new one. When the <i>IWbemClassObject </i>points
to a CIM class definition, <i>Put </i>will either create or update the property value.
When the <i>IWbemClassObject </i>points to a CIM instance, <i>Put </i>will update a
property value only; it cannot create one.</p>
<p>The user may not create properties with names that begin or end with an underscore.
This is reserved for system classes and properties.</font><font
FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::Put(</p>
<p>[in] BSTR</b><i> strName</i><b>, </p>
<p>[in] LONG </b><i>lFlags</i><b>,</p>
<p>[in] VARIANT</b><i> *pVal</i><b>,</p>
<p>[in] CIMTYPE</b><i> vtType </i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>strName</p>
<blockquote>
</i><p>Must point to a valid BSTR containing the property name. The pointer is treated as
read-only. This cannot be NULL.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>lFlags</p>
<blockquote>
</i><p>Reserved. It must be zero.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>pVal</p>
<blockquote>
</i><p>Must point to a valid <b>VARIANT</b>, which becomes the new property value. If <i>pVal</i>
is NULL or points to a <b>VARIANT</b> of type VT_NULL, the property is set to NULL, that
is, no value.</p>
</font>
</blockquote>
<p><font FACE="Arial Narrow" SIZE="3"><b>&nbsp;</p>
<p>Note</p>
<blockquote>
</b></font><font FACE="Arial" SIZE="2"><p>The NULL value for a property designated by a <b>VARIANT</b>
of type VT_NULL is distinguished from a property of type VT_I4 with a zero <i>value</i>.</p>
<p>When creating new properties, if <i>pVal</i> is NULL or points to a VT_NULL, the type
of the property is determined from the <i>vtType</i> parameter.</p>
<p>If <i>pVal </i>is to contain an embedded <b>IWbemClassObject</b><i>, </i>the caller
must call <u><b>IWbemClassObject::QueryInterface</b></u></font><font FACE="Arial" SIZE="2"
COLOR="#800000">_hmm_IWbemClassObject_QueryInterface</font><font FACE="Arial" SIZE="2"><i>
</i>for <b>IID_IUNKNOWN<i> </i></b>and place the resulting pointer in the <b>VARIANT</b>
using a type of VT_UNKNOWN. </p>
<p>The pointer is treated as read-only. The caller is responsible for invoking <b>VariantClear</b>
after this call is complete.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>vtType</p>
<blockquote>
</i><p>Use this parameter only when creating new properties in a CIM class definition and <i>pVal</i>
is NULL or points to a <b>VARIANT</b> of type VT_NULL. In such a case, the <i>vtType</i>
parameter specifies the CIM type of the property. In every other case, <i>vtType</i> must
be zero. Also, <i>vtType</i> must be zero whenever the underlying object is an instance
(even if <i>pVal</i> is NULL), since the type of the property is fixed and cannot be
changed. In other words, use <i>vtType</i> if, and only if, <i>pVal</i> is NULL or points
to a VT_NULL <b>VARIANT</b>, and the underlying object is a CIM class.</font></p>
</blockquote>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="463">
<tr>
<td WIDTH="57%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_FAILED</font></td>
<td WIDTH="43%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There has been a general failure.</font></td>
</tr>
<tr>
<td WIDTH="57%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="43%" VALIGN="TOP"><font FACE="Arial" SIZE="2">An invalid parameter was
specified.</font></td>
</tr>
<tr>
<td WIDTH="57%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PROPERTY_TYPE</font></td>
<td WIDTH="43%" VALIGN="TOP"><font FACE="Arial" SIZE="2">Property type is not recognized.</font></td>
</tr>
<tr>
<td WIDTH="57%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="43%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
complete the operation.</font></td>
</tr>
<tr>
<td WIDTH="57%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_TYPE_MISMATCH</font></td>
<td WIDTH="43%" VALIGN="TOP"><font FACE="Arial" SIZE="2">For instances, this error code
indicates that the <i>pVal</i> parameter points to a <b>VARIANT</b> of an incorrect type
for the property. For class definitions, this is returned if the property already exists
in the parent class, and the new COM type is different from the old COM type. Such
properties are read-only for the derived class.</font></td>
</tr>
<tr>
<td WIDTH="57%" VALIGN="TOP"><font face="Arial" size="2">WBEM_E_TOO_MANY_PROPERTIES</font></td>
<td WIDTH="43%" VALIGN="TOP"><font face="Arial" size="2">Exceeded limit of 1024 properties
in a class hierarchy.</font></td>
</tr>
<tr>
<td WIDTH="57%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="43%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>If the property exists in the superclass, its default value is changed unless it is a
type mismatch. If the property does not exist and it is not a type mismatch, the property
is created.&nbsp; There is a limit of 1024 properties in a class hierarchy.</p>
<p>When executing this method on an instance, an overwrite always occurs. It occurs
because the property always exists.</p>
<p>When you are creating a new class, and the underlying type of the property is an object
reference, a date/time string, or other special type, it might be necessary to modify the
CIMTYPE qualifier for the property to indicate the special new class. When modifying
properties of an instance, the qualifiers are set to the correct values ahead of time.</p>
<p>You can only write system properties when you create a new class. In that case, the
name of the class you create is designated by writing it to the system property <u><b>__CLASS</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_System_Properties</font><font FACE="Arial"
SIZE="2">.</font><b><font FACE="Arial Narrow"></p>
<p></font></b><font FACE="Arial" SIZE="2">To set an exising class property to NULL,
specify CIM_EMPTY as the type and pass in a NULL for the pVal.</p>
<p></font><font FACE="Arial Narrow"><b>See Also</b></font></p>
<p><font FACE="Arial" SIZE="2">System Classes, Properties, and Qualifiers_</font><font
FACE="Arial" SIZE="3" COLOR="#008000"></p>
<p></font><font FACE="Arial" SIZE="2">&nbsp;</p>
<p>The following code sample sets the class name for a new CIM class:</font><font
FACE="Lucida Sans Typewriter" SIZE="1"></p>
<p>// Empty object from IWbemServices::GetObject</p>
<p>IWbemClassObject *pObj = &#133; </p>
<p>// Set up the property value</p>
<p>VARIANT v; </p>
<p>VariantInit(&amp;v);</p>
<p>V_VT(&amp;v) = VT_BSTR;</p>
<p>V_BSTR(&amp;v) = SysAllocString(L&quot;MyClass&quot;);</p>
<p>// Write it</p>
<p>BSTR strClassProp = SysAllocString(L&quot;__CLASS&quot;);</p>
<p>pObj-&gt;Put(strClassProp, 0, &amp;v, 0);</p>
<p>// Cleanup</p>
<p>SysFreeString(strClassProp);</p>
<p>VariantClear(&amp;v);</p>
<p></font><font FACE="Arial Narrow" SIZE="5" COLOR="#800000">&nbsp;</p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::Delete</font><font FACE="Arial Narrow" SIZE="1" COLOR="#800000"><EFBFBD>@<40></font></b><font
SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::Delete</b> method deletes the specified property from a CIM
class definition and all of its qualifiers. Since instances cannot have contents that are
different from the owning class, delete operations for properties are only possible on
class definitions. If you invoke Delete on a property in an instance, the operation
succeeds, but rather than removing the value it is simply reset to the default value for
the class.</p>
<p>It is not possible to delete a property that was inherited from a parent class.
However, if an override default value for a property inherited from a parent class was
specified, it is possible to revert to the parent&#146;s default value by invoking this
method. In this case, WBEM_S_RESET_TO_DEFAULT returns. </p>
<p><u>&nbsp;</p>
<p>System properties</u></font><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_System_Properties</font><font
FACE="Arial" SIZE="2"> cannot be deleted.</font><font FACE="Lucida Sans Typewriter"
SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::Delete(</p>
<p>[in] BSTR</b><i> strName </i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>strName</p>
<blockquote>
</i><p>The property name to delete. This must point to a valid BSTR. It is treated as
read-only.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="463">
<tr>
<td WIDTH="56%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_FAILED</font></td>
<td WIDTH="44%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There has been a general failure.</font></td>
</tr>
<tr>
<td WIDTH="56%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_OPERATION</font></td>
<td WIDTH="44%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The user attempted to delete a
property which cannot be deleted.</font></td>
</tr>
<tr>
<td WIDTH="56%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="44%" VALIGN="TOP"><font FACE="Arial" SIZE="2">An invalid <i>Name</i> was
specified.</font></td>
</tr>
<tr>
<td WIDTH="56%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_NOT_FOUND</font></td>
<td WIDTH="44%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The specified property does not
exist.</font></td>
</tr>
<tr>
<td WIDTH="56%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="44%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
complete the operation.</font></td>
</tr>
<tr>
<td WIDTH="56%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_PROPAGATED_PROPERTY</font></td>
<td WIDTH="44%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The user attempted to delete a
property that was not owned. The property was inherited from a parent class.</font></td>
</tr>
<tr>
<td WIDTH="56%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="44%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
<tr>
<td WIDTH="56%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_RESET_TO_DEFAULT</font></td>
<td WIDTH="44%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The caller deleted an override
default value for the current class. The default value for this property in the parent
class has been reactivated.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>See Also</b></font><font FACE="Arial" SIZE="2"><u></p>
<p>System Properties</u></font><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_System_Properties</font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::GetNames</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::GetNames</b> method retrieves the names of the properties in
the object. Furthermore, depending on user-supplied selection criteria, it can retrieve
all or a subset of the properties. These properties can then be accessed by using <u><b>IWbemClassObject::Get</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_Get</font><font FACE="Arial"
SIZE="2"> for each name. This method can also return <u>system properties</u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_System_Properties</font><font FACE="Arial"
SIZE="2">.</font><font FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::GetNames(</p>
<p>[in] BSTR</b><i> strQualifierName</i><b>,</p>
<p>[in] LONG </b><i>lFlags</i><b>,</p>
<p>[in] VARIANT</b><i> *pQualifierVal</i><b>,</p>
<p>[out] SAFEARRAY (BSTR)</b><i> *pstrNames</i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>strQualifierName</p>
<blockquote>
</i><p>Can be NULL. If not NULL, it must point to a valid BSTR specifying a qualifier name
which acts as part of a filter. This is treated as read-only. See Remarks.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>lFlags</p>
<blockquote>
</i><p>See Remarks.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>pQualifierValue</p>
<blockquote>
</i><p>Can be NULL. If not NULL, it must point to a valid <b>VARIANT</b> structure
initialized to a filter value. See Remarks. This <b>VARIANT</b> is treated as read-only by
the method. Thus, the caller is responsible for calling <b>VariantClear</b> on it, if
required.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>pstrNames</p>
<blockquote>
</i><p>Cannot be NULL, but on entry this parameter must point to NULL. A new <u><b>SAFEARRAY
</b></u>is always allocated, and the pointer is set to point to it. The returned array can
have zero elements, but is always allocated when WBEM_S_NO_ERROR returns. On error, a new <b>SAFEARRAY</b>
is not<i> </i>returned.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="463">
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_FAILED</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There has been a general failure.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">One or more parameters were
invalid, or an incorrect combination of flags and parameters was specified.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
complete the task.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>The names returned are controlled by a combination of flags and parameters. For
example, all names of all properties can be specified, or only the key properties can be
specified, and so on. The primary filter is specified in the <i>lFlags</i> parameter; the
other parameters vary depending upon it.</p>
<p>The flag values are bit fields, and can be combined. One flag from each of the
following groups can be combined with a flag from each of the other groups. Flag values
within a group are mutually exclusive.</font><font FACE="Arial Narrow"><b></p>
<p>GROUP 1</b></font><font FACE="Arial" SIZE="2"></p>
<p>WBEM_FLAG_ALWAYS</p>
<blockquote>
<p>Return all property names. <i>strQualifierName</i> and <i>pQualifierVal</i> are not
used.</p>
</blockquote>
<p>WBEM_FLAG_ONLY_IF_TRUE</p>
<blockquote>
<p>Return only properties that have a qualifier of the name specified by the parameter <i>strQualifierName</i>.
If this flag is used, you must specify <i>strQualifierName</i>.</p>
</blockquote>
<p>WBEM_FLAG_ONLY_IF_FALSE</p>
<blockquote>
<p>Return only properties that do not have a qualifier of the name specified by the
parameter <i>strQualifierName</i>. If this flag is used, you must specify <i>strQualifierName</i>.</p>
</blockquote>
<p>WBEM_FLAG_ONLY_IF_IDENTICAL</p>
<blockquote>
<p>Return only properties that have a qualifier of the name specified by the parameter <i>QualifierName</i>,
and also have a value identical to the value specified by the <b>VARIANT</b> pointed to by
<i>pQualifierVal</i>. If this flag is used, you must specify both <i>QualifierName</i> and
<i>pQualifierVal</i>.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>GROUP 2</b></font><font FACE="Arial" SIZE="2"></p>
<p>WBEM_FLAG_KEYS_ONLY</p>
<blockquote>
<p>Return only the names of the property or properties that define the keys.</p>
</blockquote>
<p>WBEM_FLAG_REFS_ONLY</p>
<blockquote>
<p>Return only property names that are object references.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>GROUP 3</b></font><font FACE="Arial" SIZE="2"></p>
<p>WBEM_FLAG_LOCAL_ONLY</p>
<blockquote>
<p>Return only property names that belong to the derived-most class. Exclude properties
from the superclass or superclasses.</p>
</blockquote>
<p>WBEM_FLAG_PROPAGATED_ONLY</p>
<blockquote>
<p>Return only property names that belong to the superclass or superclasses.</p>
</blockquote>
<p>WBEM_FLAG_SYSTEM_ONLY</p>
<blockquote>
<p>Return only <u>system properties</u></font><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_System_Properties</font><font
FACE="Arial" SIZE="2">.</p>
</blockquote>
<p>WBEM_FLAG_NONSYSTEM_ONLY</p>
<blockquote>
<p>Return only property names that are not system properties.</p>
</font>
</blockquote>
<p><font FACE="Arial" SIZE="2">&nbsp;</p>
<p>It is not an error for an empty list, which is an array of zero elements, to be
returned in cases where no properties match the specified filters.</font><b><font
FACE="Arial Narrow"></p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IWbemClassObject::Get</u></font></b><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_Get</font><font
FACE="Arial" SIZE="2">, <u>System Properties</u></font><font FACE="Arial" SIZE="2"
COLOR="#800000">_hmm_System_Properties</font><font FACE="Arial" SIZE="2">, <u><b>IWbemClassObject::BeginEnumeration</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_BeginEnumeration</font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::BeginEnumeration</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::BeginEnumeration</b> method resets the enumeration cursor to
the beginning of the enumeration. The caller must call this method prior to the first call
to <u><b>IWbemClassObject::Next</b></u></font><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_Next</font><font
FACE="Arial" SIZE="2"> to enumerate all of the properties on an object. </font><font
FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::BeginEnumeration(</p>
<p>[in] LONG </b><i>lEnumFlags </i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>lEnumFlags</p>
<blockquote>
</i><p>A combination of flags described in Remarks.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="463">
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The specified combination of
flags was invalid or an invalid parameter was specified.</font></td>
</tr>
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There is not enough memory to
begin a new enumeration.</font></td>
</tr>
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>You can control the properties included in the enumeration by specifying a combination
of the following flags. You can combine one flag from each group with any flag from any
other group. However, flags from the same group are mutually exclusive.</font><font
FACE="Arial Narrow"><b></p>
<p>GROUP 1</b></font><font FACE="Arial" SIZE="2"></p>
<p>WBEM_FLAG_KEYS_ONLY</p>
<blockquote>
<p>Only include properties that constitute the key.</p>
</blockquote>
<p>WBEM_FLAG_REFS_ONLY</p>
<blockquote>
<p>Only include properties that are object references.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>GROUP 2</b></font><font FACE="Arial" SIZE="2"></p>
<p>WBEM_FLAG_LOCAL_ONLY</p>
<blockquote>
<p>Only include properties that are defined or modified in the class itself. Exclude all
properties that are inherited from superclasses. Exclude system properties from the
enumeration.</p>
</blockquote>
<p>WBEM_FLAG_PROPAGATED_ONLY</p>
<blockquote>
<p>Only include properties that are inherited from superclasses. Exclude properties that
are defined or modified in the class itself. Exclude system properties from the
enumeration.</p>
</blockquote>
<p>WBEM_FLAG_SYSTEM_ONLY</p>
<blockquote>
<p>Limit the enumeration to <u>system properties</u></font><font FACE="Arial" SIZE="2"
COLOR="#800000">_hmm_System_Properties</font><font FACE="Arial" SIZE="2"> only.</p>
</blockquote>
<p>WBEM_FLAG_NONSYSTEM_ONLY</p>
<blockquote>
<p>Exclude system properties from the enumeration. Includes local and propagated
properties.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><b><font FACE="Arial Narrow">&nbsp;</p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IWbemClassObject::Next</u></font></b><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_Next</font><font
FACE="Arial" SIZE="2">, <u><b>System Properties</b></u></font><font FACE="Arial" SIZE="2"
COLOR="#800000">_hmm_System_Properties</font><font FACE="Arial" SIZE="2">, <u><b>IWbemClassObject::EndEnumeration</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_EndEnumeration</font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::Next</font><font FACE="Arial Narrow" SIZE="1" COLOR="#800000"><EFBFBD>@<40></font></b><font
SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::Next</b> method retrieves the next property in an enumeration
that started with <u><b>IWbemClassObject::BeginEnumeration</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_BeginEnumeration</font><font
FACE="Arial" SIZE="2">. This should be called repeatedly to enumerate all the properties
until WBEM_S_NO_MORE_DATA returns. If the enumeration is to be terminated early, then <u><b>IWbemClassObject::EndEnumeration</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_EndEnumeration</font><font
FACE="Arial" SIZE="2"> should be called.</p>
<p>The order of the properties returned during the enumeration is not defined. </font><font
FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::Next(</p>
<p>[in] LONG </b><i>lFlags</i><b>,</p>
<p>[out, OPTIONAL] BSTR</b><i> *pstrName</i><b>,</p>
<p>[out, OPTIONAL] VARIANT</b><i> *pVal</i><b>,</p>
<p>[out, OPTIONAL] CIMTYPE </b><i>*pType</i><b>,</p>
<p>[out, OPTIONAL] LONG </b><i>*plFlavor</i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>lFlags</p>
<blockquote>
</i><p>Reserved. It must be zero.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>pstrName</p>
<blockquote>
</i><p>Receives a new BSTR which contains the property name. To prevent memory leaks in
the client process, the caller must call <b>SysFreeString</b> when the name is no longer
needed. You can set this parameter to NULL if the name is not required.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>pVal</p>
<blockquote>
</i><p>This <b>VARIANT</b> is filled with the value of the property. The method calls <b>VariantInit</b>
on this <b>VARIANT, </b>so the caller should ensure that the VARIANT is not active prior
to the call . The caller must use <b>VariantClear</b> when the value is no longer needed.</p>
<p>You can set this parameter to NULL if the value is not required. If an error code is
returned, the <b>VARIANT</b> pointed to by <i>pVal </i>is left unmodified.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>pvtType</p>
<blockquote>
</i><p>This parameter can be NULL. If it is not NULL, it must point to a CIMTYPE variable
(a LONG) into which the type of the property is placed. It is possible that the value of
this property can be a VT_NULL <b>VARIANT</b>, in which case it is necessary to determine
the actual type of the property.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>plFlavor</p>
<blockquote>
</i><p>Can be NULL. If not NULL, the LONG value pointed to receives information on the
origin of the property as follows:</p>
<p>WBEM_FLAVOR_ORIGIN_LOCAL</p>
<blockquote>
<p>The property belongs to the derived-most class.</p>
</blockquote>
<p>WBEM_FLAVOR_ORIGIN_PROPAGATED</p>
<blockquote>
<p>The property was inherited from a parent class.</p>
</blockquote>
<p>WBEM_FLAVOR_ORIGIN_SYSTEM</p>
<blockquote>
<p>The property is a standard system property.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="464">
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_FAILED</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">An unspecified error has
occurred.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">An invalid parameter was
specified.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
complete the operation.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_UNEXPECTED</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">Did not call <u><b>IWbemClassObject::BeginEnumeration</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_BeginEnumeration</font><font
FACE="Arial" SIZE="2">.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_MORE_DATA</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">No more properties are left in
the enumeration.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_TRANSPORT_FAILURE</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">This indicates the failure of the
remote procedure call (RPC) link between the current process and CIMOM.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>If the underlying type of the property is an object path, a date/time, or another
special type, then the returned type does not contain enough information. The caller must
examine the CIMTYPE for the specified property, and determine if the property is an object
reference, date/time, or another special type.</p>
<p>This method also returns <u>system properties</u></font><font FACE="Arial" SIZE="2"
COLOR="#800000">_hmm_System_Properties</font><font FACE="Arial" SIZE="2">.</font><b><font
FACE="Arial Narrow"></p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IWbemClassObject::BeginEnumeration</u></font></b><font FACE="Arial" SIZE="2"
COLOR="#800000">_hmm_IWbemClassObject_BeginEnumeration</font><font FACE="Arial" SIZE="2">,
<u><b>IWbemClassObject::EndEnumeration</b></u></font><font FACE="Arial" SIZE="2"
COLOR="#800000">_hmm_IWbemClassObject_EndEnumeration</font><font FACE="Arial" SIZE="2">, <u><b>IWbemClassObject::Get</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_Get</font><font FACE="Arial"
SIZE="2">, <u>System Properties</u></font><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_System_Properties</font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::EndEnumeration</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::EndEnumeration</b> method terminates an enumeration sequence
started with <u><b>IWbemClassObject::BeginEnumeration</b></u></font><font FACE="Arial"
SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_BeginEnumeration</font><font FACE="Arial"
SIZE="2">. This call is not required, but it is recommended to developers because it
releases resources associated with the enumeration. However, the resources are deallocated
automatically when the next enumeration is started or the object is released.</font><b><font
FACE="Lucida Sans Typewriter" SIZE="2"></p>
<p>HRESULT IWbemClassObject::EndEnumeration( );</p>
<p></font><font FACE="Arial Narrow">&nbsp;</p>
<p>Parameters</font></b><font FACE="Arial" SIZE="2"></p>
<p>None.</font><font FACE="Arial Narrow"><b></p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="463">
<tr>
<td WIDTH="38%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_FAILED</font></td>
<td WIDTH="62%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There has been a general failure.</font></td>
</tr>
<tr>
<td WIDTH="38%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="62%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><b><font FACE="Arial Narrow">&nbsp;</p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IWbemClassObject::BeginEnumeration</u></font></b><font FACE="Arial" SIZE="2"
COLOR="#800000">_hmm_IWbemClassObject_BeginEnumeration</font><font FACE="Arial" SIZE="2">,
<u><b>IWbemClassObject::Next</b></u></font><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_Next</font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::GetPropertyQualifierSet</font><font FACE="Arial Narrow"
SIZE="1" COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::GetPropertyQualifierSet</b> method gets the qualifier set for
a particular property in the class object. This succeeds whether the property is a member
of an instance or a class definition.</font><font FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::GetPropertyQualifierSet(</p>
<p>[in] BSTR</b><i> strProperty</i><b>,</p>
<p>[out] IWbemQualifierSet</b><i> **ppQualSet </i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>strProperty</p>
<blockquote>
</i><p>The property for which the qualifier set is requested. This must point to a valid
BSTR, which is treated as read-only. The property can be local or propagated from the
superclass. Note that system properties have no qualifiers so this method returns the
error code <b>WBEM_E_SYSTEM_PROPERTY</b>.if you attempt to obtain the <i>IWbemQualifierSet</i>
</font><font FACE="Arial" SIZE="2" COLOR="#008000"><b>&#139;Brett, Dave, format ?&#155;</b></font><font
FACE="Arial" SIZE="2">pointer for a system property.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>ppQualSet</p>
<blockquote>
</i><p>Receives an interface pointer that allows access to the qualifiers for the named
property. The caller must call <u><b>IWbemQualifierSet::Release</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemQualifierSet_Release</font><font
FACE="Arial" SIZE="2"> on the pointer when access to the object is no longer required. The
property is set to point to NULL when there are error conditions. A new object is not<i> </i>returned.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="463">
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_FAILED</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There has been a general failure.</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_NOT_FOUND</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The specified property does not
exist.</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
complete the operation.</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_SYSTEM_PROPERTY</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was an attempt to get
qualifiers on a system property.</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">An invalid parameter was
specified.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><b><font FACE="Arial Narrow">&nbsp;</p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IWbemQualifierSet</u></font></b><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemQualifierSet</font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::Clone</font><font FACE="Arial Narrow" SIZE="1" COLOR="#800000"><EFBFBD>@<40></font></b><font
SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::Clone</b> method returns a new object that is a complete clone
of the current object. The new object has a COM reference count of 1.</font><font
FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::Clone(</b></p>
<p><b>[out] IWbemClassObject</b><i> **ppCop</i>y</p>
<p><b>&nbsp;</p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>ppCopy</p>
<blockquote>
</i><p>This parameter cannot be NULL. It receives the copy of the current object. The
caller must call <u><b>IWbemClassObject::Release</b></u></font><font FACE="Arial" SIZE="2"
COLOR="#800000">_hmm_IWbemClassObject_Release</font><font FACE="Arial" SIZE="2"> on the
returned object when it is no longer required.</p>
<p>A new object is not returned on error.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="464">
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_FAILED</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There has been a general failure.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">NULL was specified as a
parameter, and it is not legal in this usage.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
clone the object.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>Use this method to duplicate a class definition, or to duplicate an instance. This can
be useful when the original copy of the object is required for backup purposes while a new
copy is modified. Likewise, you can use this method to create many new instances from a
single source instance. For example, you can use <u><b>IWbemClassObject::SpawnInstance</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_SpawnInstance</font><font
FACE="Arial" SIZE="2"> to create a single starting instance, and you can use <b>IWbemClassObject::Clone</b>
to produce 100 copies of the instance quickly. Each object can be modified subsequently to
take on its particular values.</p>
<p>It is not possible to use this method to convert a class definition into an instance,
or convert an instance into a class definition.</font><font FACE="Arial Narrow" SIZE="5"
COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::GetObjectText</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::GetObjectText</b> method returns a textual rendering of the
object in the MOF Syntax. Notice that the MOF text returned does not contain all the
information about the object, but only enough information for the MOF compiler to be able
to re-create the original object. For instance, no propagated qualifiers or parent class
properties are displayed.</font><font FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::GetObjectText(</p>
<p>[in] LONG </b><i>lFlags</i><b>,</p>
<p>[out] BSTR</b><i> *pstrObjectText</i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>lFlags</p>
<blockquote>
</i><p>Normally zero. If WBEM_FLAG_NO_FLAVORS is specified, qualifiers will be presented
without propagation or flavor information. If WBEM_FLAG_NO_SEPARATOR is specified, the
trailing semicolon after an <i>class </i>or <i>instance </i>declaration will be omitted
from the MOF text. These flags may be combined.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>pstrObjectText</p>
<blockquote>
</i><p>This must point to NULL on entry. This parameter receives from CIMOM a newly
allocated BSTR that was initialized with <b>SysAllocString</b>. The caller must call <b>SysFreeString</b>
on the pointer when the string is no longer required. This pointer points to a MOF syntax
rendering of the object upon return from the call. Since this is an OUT parameter, the
pointer must not point to a string that is valid before this method is called, because the
pointer will not be deallocated.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="464">
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_FAILED</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">An unspecified error has
occurred.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">An invalid parameter was
specified.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
complete the operation.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><b><font FACE="Arial Narrow">&nbsp;</p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IWbemQualifierSet</u></font></b><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemQualifierSet</font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::SpawnDerivedClass</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>Use the <b>IWbemClassObject::SpawnDerivedClass</b> method to create a new derived class
object from the current object. The current object must be a class definition that becomes
the superclass of the spawned object. The returned object becomes a subclass of the
current object.</font><font FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::SpawnDerivedClass(</p>
<p>[in] LONG </b><i>lFlags</i><b>,</p>
<p>[out] IWbemClassObject</b><i> **ppNewClass</i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>lFlags</p>
<blockquote>
</i><p>Reserved. It must be zero.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>ppNewClass</p>
<blockquote>
</i><p>Must not be NULL. This receives the pointer to the new class definition object. The
caller must invoke <u><b>IWbemClassObject::Release</b></u></font><font FACE="Arial"
SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_Release</font><font FACE="Arial" SIZE="2">
when the object is no longer required, typically after you have invoked <u><b>IWbemServices::PutClass</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemServices_PutClass</font><font FACE="Arial"
SIZE="2"> to write the class definition. On error, a new object is not<i> </i>returned,
and <i>ppNewClass </i>is left unmodified.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="464">
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_FAILED</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There has been a general failure.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_ILLEGAL_OPERATION</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">An illegal operation was
requested, such as spawning a class from an instance.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INCOMPLETE_CLASS</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The source class was not
completely defined or registered with CIMOM, so a new derived class is not permitted.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2"><i>ppNewClass</i> is NULL.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
complete the operation.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>The new object returned in <i>ppNewClass</i> automatically becomes a subclass of the
current object. This behavior cannot be overridden. There is no other method by which
subclasses (derived classes) can be created.</p>
<p>You cannot create a derived class from a class that is local to your own client
process. The superclass (base class) must be created and registered with CIMOM using <b>IWbemServices::PutClass</b>,
and then retrieved using <u><b>IWbemServices::GetObject</b></u></font><font FACE="Arial"
SIZE="2" COLOR="#800000">_hmm_IWbemServices_GetObject</font><font FACE="Arial" SIZE="2">
before this method can be used to create a derived class. </p>
<p>To create a class hierarchy, you must create the initial class with <u><b>IWbemServices::PutClass</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemServices_PutClass</font><font FACE="Arial"
SIZE="2">, retrieve it using <b>IWbemServices::GetObject</b>, and use the retrieved object
to create the newly derived class. Then, this new derived class must be created using <b>IWbemServices::PutClass</b>.
To create other derived classes, you must call <b>IWbemServices::GetObject</b>, then call <b>IWbemClassObject::SpawnDerivedClass</b>,
and so on, in a cycle for each new derivation level. You must follow this procedure in
order to prevent version errors and concurrency conflicts. See <u>Class Creation</u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_Declaring_Classes</font><font FACE="Arial"
SIZE="2"> to create a class with no parent.</font><b><font FACE="Arial Narrow"></p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IWbemServices::GetObject</u></font></b><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemServices_GetObject</font><font
FACE="Arial" SIZE="2">, <u><b>IWbemServices::PutClass</b></u></font><font FACE="Arial"
SIZE="2" COLOR="#800000">_hmm_IWbemServices_PutClass</font><font FACE="Arial Narrow"
SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::SpawnInstance</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>Use the <b>IWbemClassObject::SpawnInstance</b> method to create a new instance of a
class. The current object must be a class definition obtained from CIMOM using <u><b>IWbemServices::GetObject</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemServices_GetObject</font><font
FACE="Arial" SIZE="2">, <u><b>IWbemServices::CreateClassEnum</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemServices_CreateClassEnum</font><font
FACE="Arial" SIZE="2">, or <u><b>IWbemServices::CreateClassEnumAsync</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemServices_CreateClassEnumAsync</font><font
FACE="Arial" SIZE="2"> Then, use this class definition to create new instances. </p>
<p>A call to <u><b>IWbemServices::PutInstance</b></u></font><font FACE="Arial" SIZE="2"
COLOR="#800000">_hmm_IWbemServices_PutInstance</font><font FACE="Arial" SIZE="2"> is
required to actually write the instance to CIMOM. If you intend to discard the object
before calling <b>IWbemServices::PutInstance</b>, simply make a call to <u><b>IWbemClassObject::Release</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_Release</font><font
FACE="Arial" SIZE="2"></p>
<p>Note that spawning an instance from an instance is supported.</font><font
FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::SpawnInstance(</p>
<p>[in] LONG </b><i>lFlags</i><b>,</p>
<p>[out] IWbemClassObject</b><i> **ppNewInstance</i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>lFlags</p>
<blockquote>
</i><p>Reserved. It must be zero.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>ppNewInstance</p>
<blockquote>
</i><p>Must not be NULL. It receives a new instance of the class. The caller must invoke <u><b>IWbemClassObject::Release</b></u></font><font
FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_Release</font><font
FACE="Arial" SIZE="2"><i> </i>when the pointer is no longer required. On error, a new
object is not returned and the pointer is left unmodified.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="464">
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INCOMPLETE_CLASS</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The current object is not a valid
class definition and cannot spawn new instances. Either it is incomplete, or it has not
been registered with CIMOM using <b>PutClass</b>.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">An invalid parameter was
specified.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
complete the operation.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><b><font FACE="Arial Narrow">&nbsp;</p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IWbemServices::GetObject</u></font></b><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemServices_GetObject</font><font
FACE="Arial" SIZE="2">, <u><b>IWbemServices::PutInstance</b></u></font><font FACE="Arial"
SIZE="2" COLOR="#800000">_hmm_IWbemServices_PutInstance</font><font FACE="Arial Narrow"
SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::CompareTo</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::CompareTo</b> method compares an object to another CIMOM
object. Note that there are certain constraints in this comparison process.</font><font
FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::CompareTo(</p>
<p>[in] LONG </b><i>lFlags</i><b>, </p>
<p>[in] IWbemClassObject </b><i>*pCompareTo</i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>lFlags</p>
<blockquote>
</i><p>Specifies the object characteristics to consider in comparison to other object. It
can be WBEM_COMPARISON_INCLUDE_ALL to consider all features, or any combination of these
flags:</p>
<p>WBEM_FLAG_IGNORE_OBJECT_SOURCE</p>
<blockquote>
<p>The source of the objects, namely the server and the namespace they came from, are
ignored in comparison to other objects.</p>
</blockquote>
<p>WBEM_FLAG_IGNORE_QUALIFIERS</p>
<blockquote>
<p>All qualifiers (including &quot;key&quot; and &quot;dynamic&quot;) should be ignored in
comparison.</p>
</blockquote>
<p>WBEM_FLAG_IGNORE_DEFAULT_VALUES</p>
<blockquote>
<p>Default values of properties should be ignored. This flag is only meaningful when
comparing classes.</p>
</blockquote>
<p>WBEM_FLAG_IGNORE_FLAVOR</p>
<blockquote>
<p>Ignore qualifier flavors. This flag still takes qualifier values into account, but
ignores flavor distinctions such as propagation rules and override restrictions (see <u>Qualifier
Flavors</u></font><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_qualifier_flavors</font><font
FACE="Arial" SIZE="2">).</p>
</blockquote>
<p>WBEM_FLAG_IGNORE_CASE</p>
<blockquote>
<p>Compares string values in a case-insensitive manner. This applies both to strings and
to qualifier values. Property and qualifier names are always compared in a
case-insensitive manner whether this flag is specified or not.</p>
</blockquote>
<p>WBEM_FLAG_IGNORE_CLASS</p>
<blockquote>
<p>This flag instructs the system to assume that the objects being compared are instances
of the same class. Consequently, this flag compares instance-related information only. Use
this flag to optimize performance. If the objects are not of the same class, the results
are undefined.</p>
</font>
</blockquote>
</blockquote>
<p><font FACE="Arial" SIZE="2"><i>&nbsp;</p>
<p>pCompareTo</p>
<blockquote>
</i><p>The object in comparison. This pointer must point to a valid <b>IWbemClassObject</b>
instance. It cannot be NULL.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="464">
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_FAILED</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">An unspecified error has
occurred..</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">An invalid parameter was
specified.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
complete the operation.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_DIFFERENT</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The objects are different.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_SAME</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The objects are the same, subject
to comparison flags.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>See Also</b></font><font FACE="Arial" SIZE="2"><u></p>
<p>Qualifier Flavors</u></font><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_qualifier_flavors</font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::GetPropertyOrigin</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::GetPropertyOrigin</b> method retrieves the name of the class
in which a particular property was introduced. For classes with deep inheritance
hierarchies, it is often desirable to know which properties were declared in which
classes. If the object does not inherit from a parent class, as in the case of a base
class, for example, then the current class name is returned.</font><font
FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::GetPropertyOrigin(</p>
<p>[in] BSTR</b><i> strName</i><b>, </p>
<p>[out] BSTR</b><i> *pstrClassName </i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>strName</p>
<blockquote>
</i><p>The property name for which the owning class name is desired. This must point to a
valid BSTR, which is treated as read-only.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>pstrClassName</p>
<blockquote>
</i><p>A pointer to the address of a new BSTR that receives the parent class name. To
prevent memory leaks in the client process, the caller must call <b>SysFreeString</b> when
the name is no longer needed. This parameter must not point to a valid string before the
method is called because this is an output parameter, and this pointer will not be
deallocated after the call is complete.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="464">
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_FAILED</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There has been a general failure.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMTER</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">One or more parameters was not
valid.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_NOT_FOUND</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The specified property does not
exist.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
complete the operation.</font></td>
</tr>
<tr>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="50%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><b><font FACE="Arial Narrow">&nbsp;</p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IWbemClassObject::InheritsFrom</u></font></b><font FACE="Arial" SIZE="2"
COLOR="#800000">_hmm_IWbemClassObject_InheritsFrom</font><font FACE="Arial Narrow"
SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::InheritsFrom</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>The <b>IWbemClassObject::InheritsFrom</b> method determines if the current class or
instance derives from a specified parent class.</font><font FACE="Lucida Sans Typewriter"
SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::InheritsFrom(</p>
<p>[in] BSTR</b><i> strAncestor</i><b></p>
<p>);</p>
<p></font><font FACE="Arial Narrow">&nbsp;</p>
<p>Parameters</font></b><font FACE="Arial" SIZE="2"><i></p>
<p>strAncestor</p>
<blockquote>
</i><p>Cannot be NULL. It contains the class name that is being tested. If the current
object has this class for one of its ancestor classes, WBEM_S_NO_ERROR returns. This must
point to a valid BSTR, which is treated as read-only.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="464">
<tr>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The current object inherits from
the specified ancestor class.</font></td>
</tr>
<tr>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_FALSE</font></td>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The current object does not
inherit from the specified ancestor class.</font></td>
</tr>
<tr>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The <i>strAncestor</i> parameter
is NULL.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><b><font FACE="Arial Narrow">&nbsp;</p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>GetPropertyOrigin</u></font></b><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_GetPropertyOrigin</font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::GetMethod</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>Returns information about the requested CIM Method. This call is only supported if the
current object is a CIM class definition. CIM Method information is not available from <b>IWbemClassObject</b>
pointers which point to CIM instances.</font><font FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::GetMethod(</p>
<p>[in] BSTR</b><i> Name</i><b>,</p>
<p>[in] LONG </b><i>lFlags</i><b>,</p>
<p>[out] IWbemClassObject</b><i> **ppInSignature</i><b>,</p>
<p>[out] IWbemClassObject</b><i> **ppOutSignature</i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>Name</p>
<blockquote>
</i><p>The CIM method name. Must point to a valid BSTR, which is treated as read-only. </p>
</blockquote>
<p><i>&nbsp;</p>
<p>lFlags</p>
<blockquote>
</i><p>Reserved. It must be zero.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>ppInSignature</p>
<blockquote>
</i><p>Receives an <b>IWbemClassObject </b>pointer which describes the in-parameters to
the method. This parameter can be set to NULL if this method has no in-parameters. See
Notes.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>ppOutSignature</p>
<blockquote>
</i><p>Receives an <b>IWbemClassObject </b>pointer which describes the out-parameters to
the method. This parameter will be ignored if set to NULL.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="464">
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The requested in- and
out-parameter objects were returned.</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_NOT_FOUND</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The method did not exist.</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
complete the call.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>For a CIM method, the in- and out-parameters are described as properties in<i> </i><b>IWbemClassObjects.
</b></p>
<p>For example, consider the following CIM method:</font><font
FACE="Lucida Sans Typewriter" SIZE="1"></p>
<p>Class MyClass{</p>
<p>[key] string KeyVal;</p>
<p>sint32 PropVal;</p>
<p>sint32 ExampleMethod([in] sint32 Parm1, [in] uint32 Parm2, </p>
<p>[out] string Parm3);</p>
<p>};</p>
<p></font><font FACE="Arial" SIZE="2">&nbsp;</p>
<p>In this example, the class has a single method. When the user calls <b>IWbemClassObject::GetMethod</b>,
the <i>ppInSignature</i> parameter will receive an <b>IWbemClassObject</b>, which contains
two properties: <i>Parm1</i> and <i>Parm2</i>. The <i>ppOutSignature</i> will contain a
single property containing <i>Parm3</font><font FACE="Arial" SIZE="2" COLOR="#008000">. </font></i><font
FACE="Arial" SIZE="2"></p>
<p>After filling in the property values of the <i>ppInSignature </i>object, the caller can
use the object to execute the method by calling <b>IWbemServices::ExecMethod </b>or <b>IWbemServices::ExecMethodAsync.</font><font
FACE="Arial Narrow" SIZE="3"></p>
<p>Note</p>
<blockquote>
</font></b><font FACE="Arial" SIZE="2"><p>The caller is responsible for calling
IWbemClassObject::Release on the ppInSignature and ppOutSignature pointers when these
objects are no longer needed.</font></p>
</blockquote>
<p><b><font FACE="Arial Narrow">&nbsp;</p>
<p>See Also</font><font FACE="Arial" SIZE="2"><u></p>
<p>IWbemClassObject::PutMethod</u></font></b><font FACE="Arial" SIZE="2" COLOR="#800000">_hmm_IWbemClassObject_PutMethod</font><font
FACE="Arial Narrow"><b></p>
<p>Using CIM Methods</b></font><font FACE="Arial" SIZE="2"></p>
<p></font><font FACE="Arial Narrow" SIZE="5" COLOR="#800000">&nbsp;</p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::PutMethod</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>Use this to create a CIM method. This call is only supported if the current object is a
CIM class definition. CIM Method manipulation is not available from <b>IWbemClassObject</b>
pointers which point to CIM instances.</p>
<p>The user may not create methods with names that begin or end with an underscore. This
is reserved for system classes and properties.</font><font FACE="Lucida Sans Typewriter"
SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::PutMethod(</p>
<p>[in] BSTR</b><i> Name</i><b>,</p>
<p>[in] LONG </b><i>lFlags</i><b>,</p>
<p>[in] IWbemClassObject</b><i> *pInSignature</i><b>,</p>
<p>[in] IWbemClassObject</b><i> *pOutSignature</i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>Name</p>
<blockquote>
</i><p>The method name which is being created. </p>
</blockquote>
<p><i>&nbsp;</p>
<p>lFlags</p>
<blockquote>
</i><p>Reserved. It must be zero.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>pInSignature</p>
<blockquote>
</i><p>Points to an <b>IWbemClassObject </b>containing the in-parameters for the method.
This parameter will be ignored if set to NULL.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>pOutSignature</p>
<blockquote>
</i><p>Points to an IWbemClassObject containing the out-parameters for the object. This
parameter will be ignored if set to NULL.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="464">
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The requested in- and
out-parameter objects were returned.</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">One or more parameters was
invalid.</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_PROPAGATED_METHOD</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">An attempt was made to reuse an
existing method name from a superclass, and the signatures did not match.</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font color="#FF0000" FACE="Arial" SIZE="2">WBEM_E_INVALID_DUPLICATE_PARAMETER</font></td>
<td WIDTH="48%" VALIGN="TOP"><font color="#FF0000" FACE="Arial" SIZE="2">A duplicate
parameter was specified in pInSignature and pOutSignature that did not have identical
qualifier stes ([in] and [out] not withstanding.</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font color="#FF0000" FACE="Arial" SIZE="2">IDS_E_MISSING_PARAMETER_ID</font></td>
<td WIDTH="48%" VALIGN="TOP"><font color="#FF0000" FACE="Arial" SIZE="2">A parameter was
specified that did not have an [id] qualifier.</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font color="#FF0000" FACE="Arial" SIZE="2">IDS_E_INVALID_PARAMETER_ID</font></td>
<td WIDTH="48%" VALIGN="TOP"><font color="#FF0000" FACE="Arial" SIZE="2">The [id]
qualifiers on the parameters must be greater than 0, and VT_I4..</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font color="#FF0000" FACE="Arial" SIZE="2">IDS_E_NONCONSECUTIVE_PARAMETER_IDS</font></td>
<td WIDTH="48%" VALIGN="TOP"><font color="#FF0000" FACE="Arial" SIZE="2">The [id]
qualifiers on the parameters (duplicates excepted) must be 0 based and contiguous.</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font color="#FF0000" FACE="Arial" SIZE="2">IDS_E_PARAMETER_ID_ON_RETVAL</font></td>
<td WIDTH="48%" VALIGN="TOP"><font color="#FF0000" FACE="Arial" SIZE="2">The ReturnValue
parameter had an [id] qualifier.</font></td>
</tr>
</table>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font face="Arial" size="2"></p>
<p>For a CIM method, the in- and out-parameters are described as properties in<i> </i><b>IWbemClassObjects.
</b></p>
<p>For example, consider the following CIM method:</font><font
FACE="Lucida Sans Typewriter" SIZE="1"></p>
<p>Class MyClass{</p>
<p>[key] string KeyVal;</p>
<p>sint32 PropVal;</p>
<p>sint32 ExampleMethod([in] sint32 Parm1, [in] uint32 Parm2, </p>
<p>[out] string Parm3);</p>
<p>};</p>
<p></font><font face="Arial" size="2">&nbsp;</p>
<p>In this example, the class has a single method. To create the method programmatically,
the user calls <b>IWbemClassObject::PutMethod</b> with the <i>ppInSignature</i> parameter
pointing to an <b>IWbemClassObject</b>, which contains two properties: <b>Parm1</b> and <i>Parm2</i>.
The <i>ppOutSignature</i> points to an object containing a single property containing <i>Parm3</i>.
</font><font FACE="Arial Narrow" SIZE="3"></p>
<p></font><font color="#FF0000" FACE="Arial" SIZE="2">In Parameters must have an [in]
qualifier.&nbsp; Out parameters must have an [out] qualifier.&nbsp; For a parameter to be
both in and out, it must exiist in both pInSignature and pOutSignature, the id qualifier
must have the same value and all other qualifiers must be exactly the same, with the
exception of the [in] and [out] qualifiers.</font></p>
<p><font color="#FF0000" FACE="Arial" SIZE="2">Also, all parameters must have an [id]
qualifier.&nbsp; The ids of the parameters must be 0 based and contiguous.&nbsp; The only
exception to this is the ReturnValue parameter (if it exists) in the pOutSignature, which
cannot have an [id] qualifier.</font></p>
<p><font FACE="Arial Narrow" SIZE="3">Note<b> </p>
<blockquote>
</b></font><font face="Arial" size="2"><p>The caller is responsible for calling
IWbemClassObject::Release on the ppInSignature and ppOutSignature pointers when these
objects are no longer needed.</font></p>
</blockquote>
<p><b><font FACE="Arial Narrow">&nbsp;</p>
<p>See Also</font><font face="Arial" size="2"></p>
<p>IWbemClassObject::GetMethod</b> </font><font FACE="Arial Narrow"><b></p>
<p>Using CIM Methods</b></font><font face="Arial" size="2"></p>
<p></font><font FACE="Arial Narrow" SIZE="5" COLOR="#800000">&nbsp;</p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::DeleteMethod</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>Use this to delete a CIM method. This call is supported only if the current object is a
CIM class definition. CIM Method manipulation is not available from <b>IWbemClassObject</b>
pointers which point to CIM instances.</font><font FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::DeleteMethod(</p>
<p>[in] BSTR</b><i> Name</i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>Name</p>
<blockquote>
</i><p>The method name to be removed from the class definition.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="464">
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The method was deleted from the
CIM class definition..</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_NOT_FOUND</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The method did not exist.</font></td>
</tr>
<tr>
<td WIDTH="52%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_OUT_OF_MEMORY</font></td>
<td WIDTH="48%" VALIGN="TOP"><font FACE="Arial" SIZE="2">There was not enough memory to
complete the call.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>You may not delete methods inherited from superclasses.</font><b><font
FACE="Arial Narrow"></p>
<p>See Also</font><font FACE="Arial" SIZE="2"></p>
<p>IWbemClassObject::GetMethod</b>, <b>IWbemClassObject::PutMethod</font><font
FACE="Arial Narrow"></p>
<p>Using CIM Methods</font></b><font FACE="Arial" SIZE="2"></p>
<p></font><font FACE="Arial Narrow" SIZE="5" COLOR="#800000">&nbsp;</p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::BeginMethodEnumeration</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>Use this call to begin an enumeration of the methods available for the object.</p>
<p>This call is only supported if the current object is a CIM class definition. CIM Method
manipulation is not available from <b>IWbemClassObject</b> pointers which point to CIM
instances.</font><font FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::BeginMethodEnumeration(</p>
<p>[in] LONG </b><i>lEnumFlags</i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>lEnumFlags</p>
<blockquote>
</i><p>Reserved. It must be zero. </p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="463">
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">A non-zero flag value was used.</font></td>
</tr>
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font FACE="Arial" SIZE="1"></p>
<p></font><b><font FACE="Arial Narrow">&nbsp;</p>
<p>See Also</font><font FACE="Arial" SIZE="2"></p>
<p>IWbemClassObject::NextMethod</font></b><font FACE="Arial Narrow" SIZE="5"
COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::NextMethod</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>This is used to retrieve the next method in a method enumeration sequence started with <b>IWbemClassObject::BeginMethodEnumeration</b>.</p>
<p>This call is only supported if the current object is a CIM class definition. CIM Method
manipulation is not available from <b>IWbemClassObject</b> pointers which point to CIM
instances.</font><font FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::NextMethod(</p>
<p>[in] LONG </b><i>lFlags</i><b>,</p>
<p>[out, OPTIONAL] BSTR</b><i> *pName</i><b>,</p>
<p>[out, OPTIONAL] IWbemClassObject</b><i> **ppInSignature</i><b>,</p>
<p>[out, OPTIONAL] IWbemClassObject</b><i> **ppOutSignature</i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>lFlags</p>
<blockquote>
</i><p>Reserved. It must be zero.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>pName</p>
<blockquote>
</i><p>Should point to NULL prior to the call. Receives a BSTR containing the method name.
The caller must release the string using <b>SysFreeString </b>when it is no longer
required.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>ppInSignature</p>
<blockquote>
</i><p>Receives a pointer to an <b>IWbemClassObject </b>containing the in-parameters for
the method.</p>
</blockquote>
<p><i>&nbsp;</p>
<p>ppOutSignature</p>
<blockquote>
</i><p>Receives a pointer to an <b>IWbemClassObject </b>containing the out-parameters for
the method.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="463">
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_UNEXPECTED</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">An internal error occurred.</font></td>
</tr>
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_MORE_DATA</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">Returned when the enumeration
sequence is complete.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>The caller begins the enumeration sequence using <b>IWbemClassObject::BeginMethodEnumeration</b>,<b>
</b>and then calls <b>IWbemClassObject::NextMethod </b>until WBEM_S_NO_MORE_DATA returns.
The caller optionally finishes the sequence with <b>IWbemClassObject::EndMethodEnumeration</b>.<b>
</b>The caller may terminate the enumeration early by calling <b>IWbemClassObject::EndMethodEnumeration
</b>at any time. </font><font FACE="Arial Narrow" SIZE="3"><b></p>
<p>Note</p>
<blockquote>
</b></font><font FACE="Arial" SIZE="2"><p>The caller is responsible for calling
IWbemClassObject::Release on the ppInSignature and ppOutSignature pointers when these
objects are no longer needed.</p>
<p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow" SIZE="5" COLOR="#800000">&nbsp;</p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::EndMethodEnumeration</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>This is used to terminate a method enumeration sequence started with <b>IWbemClassObject::BeginMethodEnumeration</b>.</p>
<p>This call is only supported if the current object is a CIM class definition. CIM Method
manipulation is not available from <b>IWbemClassObject</b> pointers, which point to CIM
instances.</font><font FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::EndMethodEnumeration(</p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"></p>
<p>None.</font><font FACE="Arial Narrow"><b></p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="463">
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_UNEXPECTED</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">An internal error occurred.</font></td>
</tr>
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>The caller begins the enumeration sequence using <b>IWbemClassObject::BeginMethodEnumeration</b>,<b>
</b>and then calls <b>IWbemClassObject::NextMethod </b>until WBEM_S_NO_MORE_DATA returns.
The caller optionally finishes the sequence with <b>IWbemClassObject::EndMethodEnumeration</b>.<b>
</b>The caller may terminate the enumeration early by calling <b>IWbemClassObject::EndMethodEnumeration
</b>at any time.</font><font FACE="Arial Narrow"><b></p>
<p>See Also</b></font><font FACE="Arial" SIZE="2"></p>
<p>Using CIM Methods.</font><font FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::GetMethodQualifierSet</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>This is used to terminate retrieve the qualifier set for a particular method.</p>
<p>This call is supported only if the current object is a CIM class definition. CIM Method
manipulation is not available from <b>IWbemClassObject</b> pointers, which point to CIM
instances.</font><font FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::GetMethodQuailifierSet(</p>
<p>[in] BSTR</b><i> Method</i><b>, </p>
<p>[out] IWbemQualifierSet</b><i> **ppQualSet</i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>Method</p>
<blockquote>
</i><p>Must point to a valid BSTR containing the method name. </p>
</blockquote>
<p><i>&nbsp;</p>
<p>ppQualSet</p>
<blockquote>
</i><p>Receives the interface pointer that allows access to the qualifiers for the method.
The returned object has a positive reference count upon return from the call. The caller
must call <u><b>IWbemQualifierSet::Release</b></u></font><font FACE="Arial" SIZE="2"
COLOR="#800000">_hmm_IWbemQualifierSet_Release</font><font FACE="Arial" SIZE="2"> when the
object is no longer needed. This parameter cannot be NULL. On error, a new object is not
returned, and the pointer is set to point to NULL.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="463">
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_NOT_FOUND</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The method did not exist.</font></td>
</tr>
<tr>
<td WIDTH="49%" VALIGN="TOP"></td>
<td WIDTH="51%" VALIGN="TOP"></td>
</tr>
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>Since each method may have its own qualifiers, use this call to retrieve the <b>IWbemQualifierSet
</b>pointer, which allows the caller to add, edit, or delete such qualifiers.</font><font
FACE="Arial Narrow"><b></p>
<p>See Also</b></font><font FACE="Arial" SIZE="2"></p>
<p>Using CIM Methods</font><font FACE="Arial Narrow" SIZE="5" COLOR="#800000"></p>
<p>&#139;^</font><font FACE="Arial Narrow" SIZE="5"><b># $ K + </b></font><font
FACE="Arial Narrow" SIZE="5" COLOR="#800000">&#155;</font><b><font FACE="Arial Narrow"
SIZE="5">IWbemClassObject::GetMethodOrigin</font><font FACE="Arial Narrow" SIZE="1"
COLOR="#800000"><EFBFBD>@<40></font></b><font SIZE="2" COLOR="#ff00ff"></p>
<p>&lt;span style=color:#FF0000&gt;</font><font FACE="Arial" SIZE="2" COLOR="#ff0000">[This
is preliminary documentation and subject to change.]</font><font SIZE="2" COLOR="#ff00ff">&lt;/span&gt;</font><font
FACE="Arial" SIZE="2"> </p>
<p>This is used to determine for which class a method was declared. </p>
<p>This call is only supported if the current object is a CIM class definition. CIM Method
manipulation is not available from <b>IWbemClassObject</b> pointers which point to CIM
instances.</font><font FACE="Lucida Sans Typewriter" SIZE="2"><b></p>
<p>HRESULT IWbemClassObject::GetMethodOrigin(</p>
<p>[in] BSTR</b><i> strMethodName</i><b>, </p>
<p>[out BSTR</b><i> strClassName</i><b></p>
<p>);</b></p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Parameters</b></font><font FACE="Arial" SIZE="2"><i></p>
<p>strMethodName</p>
<blockquote>
</i><p>The name of the method for the object whose owning class is being requested. </p>
</blockquote>
<p><i>&nbsp;</p>
<p>strClassName</p>
<blockquote>
</i><p>Receives the name of the class which owns the method. The user must call <b>SysFreeString
</b>on the returned BSTR when it is no longer required.</p>
</font><font FACE="Arial" SIZE="1"><p></font>&nbsp;</p>
</blockquote>
<p><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Return Values</b></font></p>
<table CELLSPACING="0" BORDER="0" WIDTH="463">
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_NOT_FOUND</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The method did not exist.</font></td>
</tr>
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_E_INVALID_PARAMETER</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">One or more parameters was not
valid.</font></td>
</tr>
<tr>
<td WIDTH="49%" VALIGN="TOP"><font FACE="Arial" SIZE="2">WBEM_S_NO_ERROR</font></td>
<td WIDTH="51%" VALIGN="TOP"><font FACE="Arial" SIZE="2">The call succeeded.</font></td>
</tr>
</table>
<p><font FACE="Arial" SIZE="1">&nbsp;</p>
<p></font><font FACE="Arial Narrow"><b>&nbsp;</p>
<p>Remarks</b></font><font FACE="Arial" SIZE="2"></p>
<p>Since methods are inherited from class to class, it is often desirable to determine the
owning class for a given method.</font><font FACE="Arial Narrow"><b></p>
<p>See Also</p>
<p>Using CIM Methods</b></font></p>
</body>
</html>