<div class="content" name="PPP_PROJECTION_INFO_1" uuid="ec995980-0a4b-421f-ab29-b18a021d1320"><p>The <b>PPP_PROJECTION_INFO_1</b> structure<a id="Appendix_A_Target_117"></a><a aria-label="Product behavior note 117" href="3bb906f0-b077-47ab-ad11-d8d807afde26#Appendix_A_117" data-linktype="relative-path">&lt;117&gt;</a> contains information obtained
during the PPP negotiation for the PPP-based tunnels.</p><dl>
<dd>
<div><pre> typedef struct _PPP_PROJECTION_INFO_1{
   DWORD dwIPv4NegotiationError;
   WCHAR wszAddress[16];
   WCHAR wszRemoteAddress[16];
   DWORD dwIPv4Options;
   DWORD dwIPv4RemoteOptions;
   ULONG64 IPv4SubInterfaceIndex;
   DWORD dwIPv6NegotiationError;
   UCHAR bInterfaceIdentifier[8];
   UCHAR bRemoteInterfaceIdentifier[8];
   UCHAR bPrefix[8];
   DWORD dwPrefixLength;
   ULONG64 IPv6SubInterfaceIndex;
   DWORD dwLcpError;
   DWORD dwAuthenticationProtocol;
   DWORD dwAuthenticationData;
   DWORD dwRemoteAuthenticationProtocol;
   DWORD dwRemoteAuthenticationData;
   DWORD dwLcpTerminateReason;
   DWORD dwLcpRemoteTerminateReason;
   DWORD dwLcpOptions;
   DWORD dwLcpRemoteOptions;
   DWORD dwEapTypeId;
   DWORD dwRemoteEapTypeId;
   DWORD dwCcpError;
   DWORD dwCompressionAlgorithm;
   DWORD dwCcpOptions;
   DWORD dwRemoteCompressionAlgorithm;
   DWORD dwCcpRemoteOptions;
 } PPP_PROJECTION_INFO_1,
  *PPPP_PROJECTION_INFO_1;
</pre></div>
</dd></dl><p><b>dwIPv4NegotiationError: </b>Same as <b>dwError</b>
in <a href="a61b226f-bc4c-4fdd-9683-6b7e80e58737" data-linktype="relative-path"><b>PPP_IPCP_INFO (section 2.2.1.2.65)</b></a>. 
</p><p><b>wszAddress: </b>Same as <b>wszAddress</b> in <b>PPP_IPCP_INFO</b>.</p><p><b>wszRemoteAddress: </b>Same as <b>wszRemoteAddress</b>
in <b>PPP_IPCP_INFO</b>.</p><p><b>dwIPv4Options: </b>Same as <b>dwOptions</b> in <b>PPP_IPCP_INFO</b>.</p><p><b>dwIPv4RemoteOptions: </b>Same as <b>dwIPv4Options</b>.</p><p><b>IPv4SubInterfaceIndex: </b>Specifies the index of
the <a href="fc2dfae9-0d04-4e1d-97c9-c51c2dc06c3b#gt_5874bf10-ab68-43bd-acbd-a123cb494c06" data-linktype="relative-path">subinterface</a>
corresponding to the connection on the server.</p><p><b>dwIPv6NegotiationError: </b>Specifies the result
of PPP_IPv6. Network control protocol negotiation. A value of zero (0)
indicates that either IPv6 was not negotiated or Ipv6 has been negotiated
successfully. A nonzero value indicates failure and is the actual fatal error
that occurred during the control protocol.</p><p><b>bInterfaceIdentifier: </b>If <b>dwIPv6NegotiationError</b>
is zero (0) and IPv6 was negotiated, this MUST be the 64-bit interface
identifier of the IPv6 address of the server interface. If <b>dwIPv6NegotiationError</b>
is zero, a value of zero for this indicates that IPv6 was not negotiated. It
MUST be zero when <b>dwIPv6NegotiationError</b> is nonzero. </p><p><b>bRemoteInterfaceIdentifier: </b>If <b>dwIPv6NegotiationError</b>
is zero (0) and IPv6 was negotiated, this MUST be the 64-bit interface
identifier of the IPv6 address of the client interface. If <b>dwIPv6NegotiationError</b>
is zero, a value of zero for this indicates that IPv6 was not negotiated. It
MUST be zero when <b>dwIPv6NegotiationError</b> is nonzero. </p><p><b>bPrefix: </b>Specifies the prefix of the IPv6
address of the client interface.</p><p><b>dwPrefixLength: </b>The length, in bits, of the
address prefix.</p><p><b>IPv6SubInterfaceIndex: </b>Specifies the index of the
subInterface corresponding to the connection on the server.</p><p><b>dwLcpError: </b>Specifies the error that occurred if the
PPP negotiation was unsuccessful and it MUST be one of the following values.</p><dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>ERROR_NO_LOCAL_ENCRYPTION 0x000002E5</td>
  <td>The local computer does not support the required data encryption type.</td>
 </tr><tr>
  <td>ERROR_NO_REMOTE_ENCRYPTION 0x000002E6</td>
  <td>The remote computer does not support the required data encryption type.</td>
 </tr><tr>
  <td>ERROR_CHANGING_PASSWORD 0x000002C5</td>
  <td>There was an error changing the password on the domain. The password might have been too short or might have matched a previously used password.</td>
 </tr><tr>
  <td>ERROR_PPP_NO_PROTOCOLS_CONFIGURED 0x000002D0</td>
  <td>The PPP controlled protocols were not configured.</td>
 </tr><tr>
  <td>ERROR_AUTHENTICATION_FAILURE 0x000002B3</td>
  <td>The connection was denied because the username or password specified is not valid or because the selected authentication protocol is not permitted on the remote server.</td>
 </tr><tr>
  <td>ERROR_MORE_DATA 0x000000EA</td>
  <td>More data is available.</td>
 </tr><tr>
  <td>ERROR_PROTOCOL_NOT_CONFIGURED 0x000002DC</td>
  <td>The received control protocol of the PPP is not configured.</td>
 </tr><tr>
  <td>ERROR_AUTH_INTERNAL 0x00000285</td>
  <td>There was an internal error while processing authentication.</td>
 </tr><tr>
  <td>ERROR_NO_DIALIN_PERMISSION 0x00000289</td>
  <td>The user does not have permission to dial in.</td>
 </tr><tr>
  <td>ERROR_SERVER_POLICY 0x0000032C</td>
  <td>The connection was prevented because of a policy configured on the RRAS.</td>
 </tr><tr>
  <td>ERROR_PEER_REFUSED_AUTH 0x00000397</td>
  <td>The connection could not be established because the authentication protocol used by the RRAS to verify username and password could not be matched with the one proposed by the client.</td>
 </tr><tr>
  <td>ERROR_UNKNOWN_FRAMED_PROTOCOL 0x0000031A</td>
  <td>The Framed Protocol RADIUS [RFC2865] attribute for this client is not PPP.</td>
 </tr><tr>
  <td>ERROR_WRONG_TUNNEL_TYPE 0x0000031B</td>
  <td>The Tunnel Type RADIUS [RFC2865] attribute for this user is not correct.</td>
 </tr><tr>
  <td>ERROR_UNKNOWN_SERVICE_TYPE 0x0000031C</td>
  <td>The Service Type RADIUS [RFC2865] attribute for this user is neither Framed nor callback Framed.</td>
 </tr><tr>
  <td>ERROR_RESTRICTED_LOGON_HOURS 0x00000286</td>
  <td>The user is not permitted to log on at this time of day.</td>
 </tr><tr>
  <td>ERROR_ACCT_DISABLED 0x00000287</td>
  <td>The account is disabled.</td>
 </tr><tr>
  <td>ERROR_PASSWD_EXPIRED 0x00000288</td>
  <td>The password for this account has expired.</td>
 </tr><tr>
  <td>ERROR_ILL_FORMED_PASSWORD 0x0000052C</td>
  <td>Unable to update the password. The value provided for the new password contains values that are not allowed in passwords.</td>
 </tr></tbody></table>
</dd></dl><p><b>dwAuthenticationProtocol: </b>The same as <b>dwAuthenticatedProtocol</b>
in <a href="4532a920-e20e-4fb0-8f72-22a95c3e5553" data-linktype="relative-path"><b>PPP_LCP_INFO</b></a>.
</p><p><b>dwAuthenticationData: </b>The same as <b>dwAuthenticationData</b>
in <b>PPP_LCP_INFO </b>(see section 2.2.1.2.71).</p><p><b>dwRemoteAuthenticationProtocol: </b>Specifies the
authentication protocol used to authenticate the remote computer. This will be
different from <b>dwAuthenticationProtocol</b> in the case of demand-dial if
the authentication protocol used by the two ends are different. See the <b>dwAuthenticationProtocol</b>
member for a list of possible values.</p><p><b>dwRemoteAuthenticationData: </b>Specifies
additional information about the authentication protocol specified by <i>dwRemoteAuthenticationProtocol</i>.
This will be different from <b>dwAuthenticationData</b> in the case of
demand-dial if the authentication protocol used by the two ends are different.
See the <b>dwAuthenticationData</b> member for a list of possible values.</p><p><b>dwLcpTerminateReason: </b>Specifies the reason the
connection was terminated by the local computer. This member always has a value
of zero (0).</p><p><b>dwLcpRemoteTerminateReason: </b>Specifies the
reason the connection was terminated by the remote computer. This member always
has a value of zero (0).</p><p><b>dwLcpOptions: </b>The same as <b>dwOptions</b> in <b>PPP_LCP_INFO
</b>(see<b> </b>section 2.2.1.2.71).</p><p><b>dwLcpRemoteOptions: </b>Specifies information
about the LCP options in use by the remote computer. See the <b>dwLcpOptions</b>
member for a list of possible values.</p><p><b>dwEapTypeId: </b>Specifies the type identifier of
the <a href="fc2dfae9-0d04-4e1d-97c9-c51c2dc06c3b#gt_5de8ef80-3a1d-4ec8-bf8c-321972e06eae" data-linktype="relative-path">EAP</a> used to
authenticate the local computer. The value of this member is valid only if <b>dwAuthenticationProtocol</b>
is PPP_LCP_EAP. The valid values are defined in <a href="https://go.microsoft.com/fwlink/?LinkId=89882" data-linktype="external">[IANA-EAP]</a>.</p><p><b>dwRemoteEapTypeId: </b>MUST be zero (0). This
value has no significance.</p><p><b>dwCcpError: </b>Specifies an error if the
negotiation is unsuccessful.</p><p><b>dwCompressionAlgorithm: </b>The same as <b>dwCompressionAlgorithm</b>
in <b>PPP_LCP_INFO</b>.</p><p><b>dwCcpOptions: </b>The same as <b>dwCcpOptions</b>
in <b>PPP_LCP_INFO</b>.</p><p><b>dwRemoteCompressionAlgorithm: </b>Specifies the
compression algorithm used by the remote computer. The values are the same as
those for <b>dwCompressionAlgorithm</b>.</p><p><b>dwCcpRemoteOptions: </b>Specifies the compression
options on the remote computer. The following options are supported.</p><dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>PPP_CCP_COMPRESSION 0x00000001</td>
  <td>Compression without encryption.</td>
 </tr><tr>
  <td>PPP_CCP_HISTORYLESS 0x01000000</td>
  <td>MPPE in stateless mode. The session key is changed after every packet. This mode improves performance on high-latency networks, or networks that experience significant packet loss.</td>
 </tr><tr>
  <td>PPP_CCP_ENCRYPTION40BITOLD 0x00000010</td>
  <td>PPE using 40-bit keys.</td>
 </tr><tr>
  <td>PPP_CCP_ENCRYPTION40BIT 0x00000020</td>
  <td>MPPE using 40-bit keys.</td>
 </tr><tr>
  <td>PPP_CCP_ENCRYPTION56BIT 0x00000080</td>
  <td>MPPE using 56-bit keys.</td>
 </tr><tr>
  <td>PPP_CCP_ENCRYPTION128BIT 0x00000040</td>
  <td>MPPE using 128-bit keys.</td>
 </tr><tr>
  <td>ERROR_PPP_NOT_CONVERGING 0x000002DC</td>
  <td>The remote computer and RRAS could not converge on address negotiation.</td>
 </tr></tbody></table>
</dd></dl><p> </p></div>