<div class="content"><p> </p><p>The <b>FaxObs_EnumPorts (Opnum 13)</b> method is called by
the client to enumerate the fax ports (devices) on the server and retrieve
information describing these ports (devices).</p><p>In response, the server MUST validate that the client&#39;s fax
user account has access to enumerate the ports (devices) on the server. On
success, the server MUST return information about all its ports (devices) in
the <i>PortBuffer</i> buffer. The server MUST also return the total size of the
returned data and the number of ports (devices) it successfully enumerated.</p><p>The client SHOULD free the returned buffer.</p><dl>
<dd>
<div><pre> error_status_t FaxObs_EnumPorts(
   [in] handle_t hBinding,
   [in, out, unique, size_is(,*BufferSize)] 
     LPBYTE* PortBuffer,
   [in, out] LPDWORD BufferSize,
   [out] LPDWORD PortsReturned
 );
</pre></div>
</dd></dl><p><b>hBinding: </b>The RPC binding handle for this
call. The client SHOULD reuse the RPC binding handle used as an input <i>hBinding</i>
argument for the <b>FaxObs_ConnectionRefCount</b> (section <span><a href="9430f7e2-d21d-4a38-a859-367b74f68a1a" data-linktype="relative-path">3.1.4.2.2</a></span>)
method call used to connect to the fax server.</p><p><b>PortBuffer: </b>A pointer to the address of the
returned buffer containing an array of <b>_FAX_PORT_INFO</b> (section <span><a href="ed920746-d222-4e0a-a75d-905f26cf1dfc" data-linktype="relative-path">2.2.8</a></span>)
structures. Each structure describes one fax port (device).</p><p><b>BufferSize: </b>A variable to return the size, in
bytes, of the <i>PortBuffer</i>.</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_PORT_INFO</b> that the method returns
in the <i>PortBuffer</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_ACCESS_DENIED</p>
  <p>0x00000005</p>
  </td>
  <td>
  <p>Access is denied. The client&#39;s fax user account does
  not have the FAX_ PORT_QUERY access rights. </p>
  </td>
 </tr><tr>
  <td>
  <p>ERROR_NOT_ENOUGH_MEMORY</p>
  <p>0x00000008</p>
  </td>
  <td>
  <p>The fax server cannot allocate sufficient memory to
  hold the array of <b>_FAX_PORT_INFO</b> structures to be returned to the
  client. </p>
  </td>
 </tr><tr>
  <td>
  <p>ERROR_INVALID_PARAMETER</p>
  <p>0x00000057</p>
  </td>
  <td>
  <p>The <i>PortsReturned</i> parameter is set to a NULL
  pointer value.<a id="Appendix_A_Target_199"></a><a aria-label="Product behavior note 199" href="056171e7-80bc-45ff-8107-66ba3abb2023#Appendix_A_199" data-linktype="relative-path">&lt;199&gt;</a></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>