<div class="content" name="RRouterInterfaceEnum" uuid="0d19911e-f4d7-47f0-b615-90feef69831c"><p>The <b>RRouterInterfaceEnum</b> method<a id="Appendix_A_Target_280"></a><a aria-label="Product behavior note 280" href="3bb906f0-b077-47ab-ad11-d8d807afde26#Appendix_A_280" data-linktype="relative-path">&lt;280&gt;</a> Retrieves the list of all the
interfaces from the specified server. The <i>hDimServer</i> handle specifies
the RRASM server on which the call is to be executed. The caller MUST pass a
pointer to a valid <a href="95609dbb-56aa-4b1b-a0e2-697864a141bd" data-linktype="relative-path"><b>DIM_INFORMATION_CONTAINER (section 2.2.1.2.1)</b></a>,
where <b>DIM_INFORMATION_CONTAINER.dwBufferSize</b> is initialized to zero (0).
The caller SHOULD free the memory pointed to by <i>pInfoStruct</i>.  </p><dl>
<dd>
<div><pre> DWORD RRouterInterfaceEnum(
   [in] DIM_HANDLE hDimServer,
   [in] DWORD dwLevel,
   [in, out] PDIM_INFORMATION_CONTAINER pInfoStruct,
   [in] DWORD dwPreferedMaximumLength,
   [out] LPDWORD lpdwEntriesRead,
   [out] LPDWORD lpdwTotalEntries,
   [in, out, unique] LPDWORD lpdwResumeHandle
 );
</pre></div>
</dd></dl><p><b>hDimServer: </b>A handle to the RRASM server where
the call is to be executed, see section <a href="1f8cdbcc-9791-4a35-ad78-878b8d110e15" data-linktype="relative-path">3.1.3</a>.</p><p><b>dwLevel: </b>This is of type <b>DWORD</b> and
SHOULD be set to zero (0).</p><p><b>pInfoStruct: </b>This is a pointer of type <b>DIM_INFORMATION_CONTAINER</b>. 
<b>pInfoStruct.dwBufferSize</b> SHOULD be initialized to zero (0). Upon
successful return, the pInfoStruct-&gt;pBuffer is cast to an array of <a href="1c0f45b1-e5f4-4479-86cf-5f7753b4697c" data-linktype="relative-path"><b>MPRI_INTERFACE_0 (section 2.2.1.2.81)</b></a>,
and the array size is determined by the value to pointer <i>lpdwEntriesRead</i>. 
</p><p><b>dwPreferedMaximumLength: </b>This is of type <b>DWORD</b>
and SHOULD specify the preferred maximum length of returned data
(pInfoStruct-&gt;pBuffer) in bytes. If this parameter is -1, the buffer
returned is large enough to hold all available information.</p><p><b>lpdwEntriesRead: </b>This is a pointer to type <b>DWORD</b>.
Upon successful return, this determines the total number of connections
enumerated from the current resume position given by <i>lpdwResumeHandle</i>.</p><p><b>lpdwTotalEntries: </b>This is a pointer to type <b>DWORD</b>
and receives the total number of connections that could have been enumerated
from the current resume position given by <i>lpdwResumeHandle</i>.</p><p><b>lpdwResumeHandle: </b>This is a pointer to type <b>DWORD</b>
and specifies a resume handle used to continue the enumeration. The <i>lpdwResumeHandle</i>
parameter is zero (0) on the first call and left unchanged on subsequent calls
(the caller MUST pass the same returned value in the next call to this
function). If the return code is ERROR_MORE_DATA (0x000000EA), another call MAY
be made using this handle to retrieve more data. If the handle is NULL upon
return, the enumeration is complete. This handle is invalid for other types of
error returns.</p><p><b>Return Values: </b>A 32-bit, unsigned integer
value that indicates return status. A return value of ERROR_SUCCESS
(0x00000000) indicates that the operation was completed successfully;
otherwise, it contains an error code, as specified in <a href="../ms-erref/1bc92ddf-b79e-413c-bbaa-99a5281a6c90" data-linktype="relative-path">[MS-ERREF]</a>
or in section <a href="5c0c991a-0d3d-4fe5-9503-5128d0d49fe1" data-linktype="relative-path">2.2.4</a>.
All values that are not in the table that follows MUST be treated the same by
the RRASM client. This error code value can correspond to a RRAS Management
Protocol–specific failure, which takes a value between 600 and 975, or any
generic failure.</p><dl>
<dd>
<p>The return value is one of the following error
codes. All other error values MUST be treated the same.</p>
</dd>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Return value/code</p>
   </th>
   <th>
   <p>Description</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>ERROR_SUCCESS 0x00000000</td>
  <td>The call was successful.</td>
 </tr><tr>
  <td>ERROR_ACCESS_DENIED 0x00000005</td>
  <td>The calling application does not have sufficient privileges, as specified in section 2.1.1.1.</td>
 </tr><tr>
  <td>ERROR_MORE_DATA 0x000000EA</td>
  <td>More information is available; the enumeration can be continued.</td>
 </tr></tbody></table>
</dd></dl><p>The opnum field value for this method is 20.</p><p> When processing this call, the RRASM server MUST do the
following:</p><ul><li><p><span><span> 
</span></span>Validate, as specified in section 2.1.1.1, whether this method
was called by a client that has access to the method. If the client does not
have access, then return error ERROR_ACCESS_DENIED (0x00000005).</p>
</li><li><p><span><span> 
</span></span>If <i>pInfoStruct</i> is NULL, return an error other than those
in the preceding table.</p>
</li><li><p><span><span> 
</span></span>If <i>dwLevel</i> is not supported, return an error other than
those in the preceding table.</p>
</li><li><p><span><span> 
</span></span>Call the abstract interface <b>Invoke DIMSVC</b> method
specifying the operation and the parameters to enable RRAS server to perform
the required management task.</p>
</li><li><p><span><span> 
</span></span>If the RRAS server processes the request successfully, populate
the interface information in <i>pInfoStruct</i> and fill the values for <i>lpdwResumeHandle</i>,
<i>lpdwEntriesRead</i>, and <i>lpdwTotalEntries</i> as returned by the RRAS
server. If the RRAS server has updated the resume handle and there are more
entries to be enumerated, return ERROR_MORE_DATA. Otherwise, return
ERROR_SUCCESS (0x00000000).</p>
</li><li><p><span><span> 
</span></span>Otherwise return the error status provided by RRAS server.</p>
</li></ul><p>No exceptions are thrown beyond those thrown by the
underlying RPC protocol <a href="../ms-rpce/290c38b1-92fe-4229-91e6-4fc376610c15" data-linktype="relative-path">[MS-RPCE]</a>.</p></div>