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

120 lines
4.6 KiB
HTML

<html>
<head>
<title>Per</title>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
</head>
<body bgcolor="#C0C0C0" text="#000080">
<p><u><big><big>Nova M3 : Per-Property <em>GetObject</em> Optimizations</big></big></u></p>
<p>&nbsp;</p>
<p>Rev 1.2, 23--Jun-99, raymcc</p>
<hr>
<p><u><strong>1.0&nbsp; Introduction</strong></u></p>
<p>This memo covers an optimization technique intended for internal use between CIMOM and
providers during execution of complex queries.&nbsp;&nbsp; During construction of
association objects, there are many cases where the object is only used for identification
purposes (its key properties)&nbsp; and all other properties are ignored and the object is
quickly discarded. </p>
<p>Considerable latency is introduced by some providers when build instances, since all
properties must be populated. Some type of mechanism to signal the provider that the
caller only needs a subset is required.</p>
<p>RAID 47566 is a critical bug for WMI Nova M3.&nbsp;&nbsp; The necessary optimization
fixes cannot be achieved without functionality described here.</p>
<p><strong>Associated RAID references: 52062, 52063, 47566 (P1).</strong></p>
<hr>
<p><u><strong>2.0&nbsp; Proposed Model</strong></u></p>
<p>The model will make use of the <em>IWbemContext</em> object when used with read APIs,
such as <em>IWbemServices::GetObject. </em>The context object will serve as a hint to the
provider which properties the caller is interested in.&nbsp;&nbsp; </p>
<p>The <em>IWbemServices </em>APIs which will support this functionality are limited to
<ul>
<li>GetObject</li>
<li>GetObjectAsync</li>
<li>CreateInstanceEnum</li>
<li>CreateInstanceEnumAsync</li>
</ul>
<p>For other APIs, the functionality is already present (as in <em>ExecQuery) </em>or not
relevant.</p>
<p>The provider is not required to interpret the context object or to honor the request,
but may continue to provide the object as it normally does, as this would result in a
superset of the user's request.&nbsp;&nbsp; However, if the provider is capable of
interpreting the object, it should return instances with only the properties set which are
requested. &nbsp;</p>
<p>The intent is that the provider can short-circuit its internal implementation and
provide the instance much faster.&nbsp; If no speed optimizations are possible, the
provider may as well return the entire instance. </p>
<p>CIMOM itself is not required to honor the request in the <em>IWbemContext </em>object
with regard to repository requests, as it would actually result in a slowdown to remove
properties from an instance.&nbsp; </p>
<p><strong>Note: </strong>Extending<strong> </strong>this mechanism to cover other <em>IWbemServices
</em>methods such as <em>ExecQuery </em>will be covered in the WMI Quasar Release. </p>
<hr>
<p><u><strong>2.0&nbsp; Context Object Format</strong></u></p>
<p>The context object must have the following contents:</p>
<table border="1" width="100%" height="143">
<tr>
<td width="27%" height="19"><strong>Context Value</strong></td>
<td width="73%" height="19"><strong>Meaning</strong></td>
</tr>
<tr>
<td width="27%" height="37">__GET_EXTENSIONS</td>
<td width="73%" height="37">A boolean value (VT_BOOL) used to signal that per-property
gets are being used.&nbsp; This allows a quick single check without having to enumerate
the entire context object.&nbsp; If any of the other values are used, this one <em>must </em>be.</td>
</tr>
<tr>
<td width="27%" height="19">__GET_EXT_PROPERTIES</td>
<td width="73%" height="19">An array of strings listing the properties to be retrieved.
&nbsp; Cannot be simultaneously specified with __GET_EXT_KEYS_ONLY.</td>
</tr>
<tr>
<td width="27%" height="19">__GET_EXT_KEYS_ONLY</td>
<td width="73%" height="19">A boolean indicating that only key(s) should be provided.
&nbsp;&nbsp; Cannot be simultaneously specified with __GET_EXT_PROPERTIES.</td>
</tr>
<tr>
<td width="27%" height="19"></td>
<td width="73%" height="19"></td>
</tr>
</table>
<p><strong>&nbsp;</strong></p>
<p><strong>Notes: </strong><br>
(1) Further extensions, such as &quot;No Expensive Properties&quot; will be defined for
WMI Quasar.<br>
(2) There is no property name &quot;*&quot; as in a query.<br>
(3) Since it is not possible to enforce that the user uses only one of
__GET_EXT_PROPERTIES and __GET_EXT_KEYS_ONLY, __GET_EXT_KEYS_ONLY will take precedence if
both are in fact (incorrectly) used.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</body>
</html>