<div class="content"><p> </p><p>The <b>FAX_EnumRoutingMethods (Opnum 13)</b> method is
called by the client to enumerate all the <span><a href="46aba9c4-ebb1-4b10-86ac-4bb3025657b9#gt_efaa1290-6d4b-4f44-9e84-35a867069d45" data-linktype="relative-path">routing</a></span> methods for
a specified port that are registered with the fax server in the fax server&#39;s
list of routing methods. The client calls <b>Fax_OpenPort</b> (section <span><a href="aca2b58a-e310-42dc-9903-18c5b6c35797" data-linktype="relative-path">3.1.4.1.65</a></span>)
to get the value for FaxPortHandle. The function returns detailed information
about each of the enumerated routing methods. </p><p>In response, the server MUST validate that the client&#39;s fax
user account has access to query configuration. The server MUST allocate memory
for the routing information array to be passed out and the server MUST fill the
routing information array with data.</p><p>On success, the server MUST fill the buffer with the routing
information for the particular port, along with the buffer size and the number
of enumerated methods.</p><p>The client SHOULD free the buffer.<a id="Appendix_A_Target_98"></a><a aria-label="Product behavior note 98" href="056171e7-80bc-45ff-8107-66ba3abb2023#Appendix_A_98" data-linktype="relative-path">&lt;98&gt;</a></p><dl>
<dd>
<div><pre> error_status_t FAX_EnumRoutingMethods(
   [in] RPC_FAX_PORT_HANDLE FaxPortHandle,
   [out, size_is(, *RoutingInfoBufferSize)] 
     LPBYTE* RoutingInfoBuffer,
   [out, ref] LPDWORD RoutingInfoBufferSize,
   [out, ref] LPDWORD PortsReturned
 );
</pre></div>
</dd></dl><p><b>FaxPortHandle: </b>An <span><a href="46aba9c4-ebb1-4b10-86ac-4bb3025657b9#gt_8a7f6700-8311-45bc-af10-82e10accd331" data-linktype="relative-path">RPC</a></span> context handle
that references a specified fax port.</p><p><b>RoutingInfoBuffer: </b>A pointer to the address of
a buffer to receive an array of <b>FAX_ROUTING_METHOD</b> (section <span><a href="8267ada5-e810-4a67-849a-cd4e9fae9735" data-linktype="relative-path">2.2.9</a></span>)
structures. Each structure contains information about one <span><a href="46aba9c4-ebb1-4b10-86ac-4bb3025657b9#gt_d98e028a-1e6d-4e09-a915-7e8b90d9f9de" data-linktype="relative-path">fax
routing method</a></span>.</p><p><b>RoutingInfoBufferSize: </b>A variable to return
the size, in bytes, of the routing method buffer.</p><p><b>PortsReturned: </b>A pointer to a <b>DWORD</b> (<span><a href="../ms-dtyp/cca27429-5689-4a16-b2b4-9325d93e4ba2" data-linktype="relative-path">[MS-DTYP]</a></span>
section <span><a href="../ms-dtyp/262627d8-3418-4627-9218-4ffe110850b2" data-linktype="relative-path">2.2.9</a></span>)
variable to receive the number of <b>FAX_ROUTING_METHOD</b>  that are returned
by the <i>RoutingInfoBuffer</i> parameter.</p><p><b>Return Values: </b>This method MUST return
0x00000000 (ERROR_SUCCESS) for success; otherwise, it MUST return one of the
following error codes, one of the fax-specific errors that are defined in
section <span><a href="cbe6c4fb-4dda-4f6c-9701-0d490ba0d105" data-linktype="relative-path">2.2.52</a></span>, or one of
the other standard errors defined in <span><a href="../ms-erref/1bc92ddf-b79e-413c-bbaa-99a5281a6c90" data-linktype="relative-path">[MS-ERREF]</a></span>
section <span><a href="../ms-erref/18d8fbe8-a967-4f1c-ae50-99ca8e491d2d" data-linktype="relative-path">2.2</a></span>.</p><dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Return value/code</p>
   </th>
   <th>
   <p>Description</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>
  <p>ERROR_INVALID_FUNCTION</p>
  <p>0x00000001</p>
  </td>
  <td>
  <p>The fax server failed to enumerate any routing methods
  for the fax port specified through the <i>FaxPortHandle</i> parameter.</p>
  </td>
 </tr><tr>
  <td>
  <p>ERROR_ACCESS_DENIED</p>
  <p>0x00000005</p>
  </td>
  <td>
  <p>Access is denied. The client&#39;s fax user account does
  not have the access rights (<b>FAX_ACCESS_QUERY_CONFIG</b>) required for this
  operation.</p>
  </td>
 </tr><tr>
  <td>
  <p>ERROR_NOT_ENOUGH_MEMORY</p>
  <p>0x00000008</p>
  </td>
  <td>
  <p>Not enough storage is available to process this
  command. The fax server cannot allocate sufficient memory to hold the array
  of <b>FAX_ROUTING_METHOD</b> to be returned to the client.</p>
  </td>
 </tr><tr>
  <td>
  <p>ERROR_INVALID_DATA</p>
  <p>0x0000000D</p>
  </td>
  <td>
  <p>This error SHOULD be returned if the <i>FaxPortHandle</i>
  argument is not a valid handle obtained using <b>FAX_OpenPort</b>.<a id="Appendix_A_Target_99"></a><a aria-label="Product behavior note 99" href="056171e7-80bc-45ff-8107-66ba3abb2023#Appendix_A_99" data-linktype="relative-path">&lt;99&gt;</a></p>
  </td>
 </tr><tr>
  <td>
  <p>ERROR_INVALID_PARAMETER</p>
  <p>0x00000057</p>
  </td>
  <td>
  <p>The <i>RoutingInfoBuffer</i> parameter is set to a
  NULL pointer value. <a id="Appendix_A_Target_100"></a><a aria-label="Product behavior note 100" href="056171e7-80bc-45ff-8107-66ba3abb2023#Appendix_A_100" data-linktype="relative-path">&lt;100&gt;</a></p>
  </td>
 </tr><tr>
  <td>
  <p>ERROR_INTERNAL_ERROR</p>
  <p>0x0000054F</p>
  </td>
  <td>
  <p>The fax server failed to custom marshal the array of <b>FAX_ROUTING_METHOD</b>
  structures to be returned to the client.</p>
  </td>
 </tr></tbody></table>
</dd></dl><p><b>Exceptions Thrown:</b> No exceptions are thrown
except those that are thrown by the underlying RPC protocol, <span><a href="../ms-rpce/290c38b1-92fe-4229-91e6-4fc376610c15" data-linktype="relative-path">[MS-RPCE]</a></span>.</p></div>