<div class="content" name="RRPC_FWGetConfig" uuid="debe35e3-cba1-49ce-b331-374d4e88d0ae"><p>The RRPC_FWGetConfig method retrieves the value of a profile
configuration option. The client specifies to the server from what store and
profile this value MUST be retrieved and in what specific configuration option
it is interested.</p><dl>
<dd>
<div><pre> unsigned long RRPC_FWGetConfig(
   [in] FW_CONN_HANDLE rpcConnHandle,
   [in] FW_POLICY_STORE_HANDLE hPolicyStore,
   [in, range(FW_PROFILE_CONFIG_ENABLE_FW, FW_PROFILE_CONFIG_MAX-1)] 
     FW_PROFILE_CONFIG configID,
   [in] FW_PROFILE_TYPE Profile,
   [in] unsigned long dwFlags,
   [in, out, unique, size_is(cbData), length_is(*pcbTransmittedLen)] 
     unsigned char* pBuffer,
   [in] unsigned long cbData,
   [in, out] unsigned long* pcbTransmittedLen,
   [out] unsigned long* pcbRequired
 );
</pre></div>
</dd></dl><p><b>rpcConnHandle: </b>This parameter is an <span><a href="d891304d-92d8-4f9f-9e60-a1f02b28ae30#gt_8a7f6700-8311-45bc-af10-82e10accd331" data-linktype="relative-path">RPC</a></span>
binding handle that connects to the RPC interface of the Firewall and Advanced
Security Protocol.</p><p><b>hPolicyStore: </b>This input parameter is an <span><a href="88f6ea4a-a946-4747-bb93-f142f1760752" data-linktype="relative-path">FW_POLICY_STORE_HANDLE</a></span>
data type. The data type MUST contain an opened policy store handle,
successfully opened with the RRPC_FWOpenPolicyStore (Opnum 0) method. The
handle MUST have read/write access rights.</p><p><b>configID: </b>This parameter specifies the
specific profile configuration option the client is interested in retrieving.</p><p><b>Profile: </b>This parameter specifies from which
specific profile this value MUST be retrieved.</p><p><b>dwFlags: </b>This parameter is a combination of
flags from the <span><a href="eb0dce3b-08d3-4c32-b9fe-c8bdaf8e256a" data-linktype="relative-path">FW_CONFIG_FLAGS</a></span>
enumeration, which modifies the behavior of this method, as specified in the
definition of the enumeration.</p><p><b>pBuffer: </b>This is an input/output parameter.
This parameter is a pointer to the buffer that the client provides to contain
the value of the profile configuration option being requested.</p><p><b>cbData: </b>This parameter is the size of the
buffer that the <i>pBuffer</i> parameter points to.</p><p><b>pcbTransmittedLen: </b>This is a pointer to an
input and output parameter that specifies the length of the transmitted data
within the buffer.</p><p><b>pcbRequired: </b>This is a pointer to an output
parameter that specifies the required minimum buffer size in octets for the
method to be able to return the configuration value. This output parameter is
nonzero only if the buffer (pointed to by <i>pBuffer</i> and whose size is <i>cbData</i>)
was not big enough to contain the value.</p><p><b>Return Values: </b>The method returns 0 if
successful; if failed, it returns a nonzero error code. The field can take any
specific error code value, as specified in <span><a href="../ms-erref/1bc92ddf-b79e-413c-bbaa-99a5281a6c90" data-linktype="relative-path">[MS-ERREF]</a></span>.
The following are common. </p><dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Return value/code</p>
   </th>
   <th>
   <p>Description</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>0x00000005 ERROR_ACCESS_DENIED</td>
  <td>The client does not have the required credentials to call the method.</td>
 </tr><tr>
  <td>0x00000002 ERROR_FILE_NOT_FOUND</td>
  <td>The specific configuration option is not found within the policy. This means that it is not configured. If the option is not configured in any other store, the firewall uses a default value.</td>
 </tr><tr>
  <td>0x00000032 ERROR_NOT_SUPPORTED</td>
  <td>The method does not support the specified combination of parameters. This can be because:  The store type specified does not support this method.  The configuration option is not supported in this store.  The Profile parameter contains a combination of profiles (instead of a single profile) or an unknown profile.</td>
 </tr><tr>
  <td>0x000000EA ERROR_MORE_DATA</td>
  <td>The buffer is not big enough to hold the configuration option value.</td>
 </tr><tr>
  <td>0x00000057 ERROR_INVALID_PARAMETER</td>
  <td>One of the parameters of this method is incorrect, or is required and not specified. This error can be returned because:  The specified configuration option is not defined.  One of the required values is not specified.</td>
 </tr></tbody></table>
</dd></dl><p><b>Exceptions Thrown:</b> No exceptions are thrown
beyond those thrown by the underlying RPC protocol, as specified in <span><a href="../ms-rpce/290c38b1-92fe-4229-91e6-4fc376610c15" data-linktype="relative-path">[MS-RPCE]</a></span>.
If any lower-layer errors are reported by RPC exception, this exception is
converted to an error code and reported to higher-layer protocols via the
return value.</p><p>The server MUST validate that the client is authorized to
perform the requested operation (as defined in section <span><a href="b0c93352-8371-4d63-abca-b0cc8dbcc3d7" data-linktype="relative-path">3.1.4</a></span>)
before executing this method.</p></div>