<div class="content" name="EnumPropertyDefinitions" uuid="c18e1a6f-27c2-45c6-be85-d0b6254d8d3c"><p>The EnumPropertyDefinitions method returns all the <a href="809180e0-571e-40a0-8067-ffe89cbdcc40#gt_56f7f556-18df-4592-8e2e-68d81fbed565" data-linktype="relative-path">property definitions</a> from
the <b>List of Persisted Property Definitions</b> (section <a href="a4da1447-54a5-4b37-b135-bfa7481aed1c" data-linktype="relative-path">3.2.1.6</a>) on the server.</p><dl>
<dd>
<div><pre> [id(FSRM_DISPID_CLASSIFICATION_MANAGER | 0x01)] HRESULT EnumPropertyDefinitions(
   [in, defaultvalue(FsrmEnumOptions_None)] 
     FsrmEnumOptions options,
   [out, retval] IFsrmCollection** propertyDefinitions
 );
</pre></div>
</dd></dl><p><b>options: </b>Contains the <a href="d01ee30b-4ef8-4eec-8026-3b5a1ccda298" data-linktype="relative-path">FsrmEnumOptions (section 2.2.1.2.5)</a>
to use when enumerating the property definitions.</p><p><b>propertyDefinitions: </b>Pointer to an <b>IFsrmCollection</b>
interface pointer (section <a href="171d3b3c-0f4d-40b9-8f48-0e97f9ff17be" data-linktype="relative-path">3.2.4.2.1</a>)
that upon completion contains a pointer to every property definition on the
server. The caller MUST release the collection when the caller is done with it.</p><p><b>Return Values: </b>The method MUST return zero on
success, or a nonzero error code on failure.</p><dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Return value/code</p>
   </th>
   <th>
   <p>Description</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>0x80045311 FSRM_E_NOT_SUPPORTED</td>
  <td>The options parameter is not a valid FsrmEnumOptions (section 2.2.1.2.5) value.</td>
 </tr><tr>
  <td>0x80070057 E_INVALIDARG</td>
  <td>The propertyDefinitions parameter is NULL.</td>
 </tr></tbody></table>
</dd></dl><p>Upon receiving this message, the server MUST validate
parameters:</p><ul><li><p><span><span> 
</span></span>If <i>propertyDefinitions</i> is NULL, the server MUST return
E_INVALIDARG.</p>
</li><li><p><span><span> 
</span></span>If <i>options</i> contains <b>FsrmEnumOptions_Asynchronous</b> or
any value other than what is specified in section 2.2.1.2.5, the server MUST
return FSRM_E_NOT_SUPPORTED.</p>
</li></ul><p>Upon successful validation of parameters, the server MUST
perform the following actions:</p><ul><li><p><span><span> 
</span></span>Create a new <b>List of Non-Persisted Property Definition
Instances</b> (section 3.2.1.6).</p>
</li><li><p><span><span> 
</span></span>Populate it with <a href="5d17b734-466f-4c07-9328-adc8cde6ba5a" data-linktype="relative-path">Non-Persisted Property
Definition Instances (section 3.2.1.6.1.2)</a> copied from the <a href="00194c43-c91d-447d-9c24-0725f48d4219" data-linktype="relative-path">Persisted Property
Definitions (section 3.2.1.6.1.1)</a> in the <b>List of Persisted
Property Definitions</b>.</p>
</li><li><p><span><span> 
</span></span>If <i>options</i> did not include
FsrmEnumOptions_IncludeDeprecatedObjects, remove all Non-Persisted Property
Definition Instances that have <a href="aeb8c879-da1a-4676-8d16-d7f85bac7a04" data-linktype="relative-path">Property Definition.Deprecated</a>
set to true.</p>
</li><li><p><span><span> 
</span></span>Populate <i>propertyDefinitions</i> with objects that MUST
implement the <b>IFsrmPropertyDefiniton</b> interface pointer (section <a href="d6a2c986-14d7-4a53-be09-ed52b5ac5033" data-linktype="relative-path">3.2.4.2.37</a>) and SHOULD<a id="Appendix_A_Target_67"></a><a aria-label="Product behavior note 67" href="1cc8408c-3c9b-4510-9585-e4a8d0d40e27#Appendix_A_67" data-linktype="relative-path">&lt;67&gt;</a> implement the <a href="1546f68c-b242-48b0-8782-099bda212c97" data-linktype="relative-path">IFsrmPropertyDefinition2 (section 3.2.4.2.38)</a>
interface of every Non-Persisted Property Definition Instance in this <b>List
of Non-Persisted Property Definition Instances</b>.</p>
</li></ul></div>