home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / C++ / FreeCommandLineTools.exe / Include / raseapif.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-31  |  23.1 KB  |  622 lines

  1. /********************************************************************/
  2. /**               Copyright(c) 1989-1999 Microsoft Corporation.    **/
  3. /********************************************************************/
  4.  
  5. //***
  6. //
  7. // Filename:    raseapif.h
  8. //
  9. // Description: Defines interface between a third party authentication module
  10. //              and the Remote Access Service PPP engine.
  11. //
  12.  
  13. #ifndef _RASEAPIF_
  14. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  15. #define _RASEAPIF_
  16.  
  17. #if _MSC_VER > 1000
  18. #pragma once
  19. #endif
  20.  
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24.  
  25. #if(WINVER >= 0x0500)
  26.  
  27. //
  28. // Defines used for installtion of EAP DLL
  29. //
  30. // Custom EAP DLL (ex. Name=Sample.dll, Type=(decimal 40) regsitry installation)
  31. //
  32. // HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\PPP\EAP\40)
  33. //      Path                (REG_EXPAND_SZ) %SystemRoot%\system32\sample.dll
  34. //      ConfigUIPath        (REG_EXPAND_SZ) %SystemRoot%\system32\sample.dll
  35. //      InteractiveUIPath   (REG_EXPAND_SZ) %SystemRoot%\system32\sample.dll
  36. //      IdentityPath        (REG_EXPAND_SZ) %SystemRoot%\system32\sample.dll
  37. //      FriendlyName        (REG_SZ) Sample EAP Protocol
  38. //      RequireConfigUI     (REG_DWORD)     1
  39. //      ConfigCLSID         (REG_SZ)        {0000031A-0000-0000-C000-000000000046}
  40. //      StandaloneSupported (REG_DWORD)     1
  41. //
  42.  
  43. #define RAS_EAP_REGISTRY_LOCATION   \
  44.     TEXT("System\\CurrentControlSet\\Services\\Rasman\\PPP\\EAP")
  45.  
  46. #define RAS_EAP_VALUENAME_PATH                  TEXT("Path")
  47. #define RAS_EAP_VALUENAME_CONFIGUI              TEXT("ConfigUIPath")
  48. #define RAS_EAP_VALUENAME_INTERACTIVEUI         TEXT("InteractiveUIPath")
  49. #define RAS_EAP_VALUENAME_IDENTITY              TEXT("IdentityPath")
  50. #define RAS_EAP_VALUENAME_FRIENDLY_NAME         TEXT("FriendlyName")
  51. #define RAS_EAP_VALUENAME_DEFAULT_DATA          TEXT("ConfigData")
  52. #define RAS_EAP_VALUENAME_REQUIRE_CONFIGUI      TEXT("RequireConfigUI")
  53. #define RAS_EAP_VALUENAME_ENCRYPTION            TEXT("MPPEEncryptionSupported")
  54. #define RAS_EAP_VALUENAME_INVOKE_NAMEDLG        TEXT("InvokeUsernameDialog")
  55. #define RAS_EAP_VALUENAME_INVOKE_PWDDLG         TEXT("InvokePasswordDialog")
  56. #define RAS_EAP_VALUENAME_CONFIG_CLSID          TEXT("ConfigCLSID")
  57. #define RAS_EAP_VALUENAME_STANDALONE_SUPPORTED  TEXT("StandaloneSupported")
  58.  
  59. typedef enum _RAS_AUTH_ATTRIBUTE_TYPE_
  60. {
  61.     raatMinimum = 0,                // Undefined
  62.     raatUserName,                   // Value field is a Pointer
  63.     raatUserPassword,               // Value field is a Pointer
  64.     raatMD5CHAPPassword,            // Value field is a Pointer
  65.     raatNASIPAddress,               // Value field is a 32 bit integral value
  66.     raatNASPort,                    // Value field is a 32 bit integral value
  67.     raatServiceType,                // Value field is a 32 bit integral value
  68.     raatFramedProtocol,             // Value field is a 32 bit integral value
  69.     raatFramedIPAddress,            // Value field is a 32 bit integral value
  70.     raatFramedIPNetmask,            // Value field is a 32 bit integral value
  71.     raatFramedRouting = 10,         // Value field is a 32 bit integral value
  72.     raatFilterId,                   // Value field is a Pointer
  73.     raatFramedMTU,                  // Value field is a 32 bit integral value
  74.     raatFramedCompression,          // Value field is a 32 bit integral value
  75.     raatLoginIPHost,                // Value field is a 32 bit integral value
  76.     raatLoginService,               // Value field is a 32 bit integral value
  77.     raatLoginTCPPort,               // Value field is a 32 bit integral value
  78.     raatUnassigned17,               // Undefined
  79.     raatReplyMessage,               // Value field is a Pointer
  80.     raatCallbackNumber,             // Value field is a Pointer
  81.     raatCallbackId =20,             // Value field is a Pointer
  82.     raatUnassigned21,               // Undefined
  83.     raatFramedRoute,                // Value field is a Pointer
  84.     raatFramedIPXNetwork,           // Value field is a 32 bit integral value
  85.     raatState,                      // Value field is a Pointer
  86.     raatClass,                      // Value field is a Pointer
  87.     raatVendorSpecific,             // Value field is a Pointer
  88.     raatSessionTimeout,             // Value field is a 32 bit integral value
  89.     raatIdleTimeout,                // Value field is a 32 bit integral value
  90.     raatTerminationAction,          // Value field is a 32 bit integral value
  91.     raatCalledStationId = 30,       // Value field is a Pointer
  92.     raatCallingStationId,           // Value field is a Pointer
  93.     raatNASIdentifier,              // Value field is a Pointer
  94.     raatProxyState,                 // Value field is a Pointer
  95.     raatLoginLATService,            // Value field is a Pointer
  96.     raatLoginLATNode,               // Value field is a Pointer
  97.     raatLoginLATGroup,              // Value field is a Pointer
  98.     raatFramedAppleTalkLink,        // Value field is a 32 bit integral value
  99.     raatFramedAppleTalkNetwork,     // Value field is a 32 bit integral value
  100.     raatFramedAppleTalkZone,        // Value field is a Pointer
  101.     raatAcctStatusType = 40,        // Value field is a 32 bit integral value
  102.     raatAcctDelayTime,              // Value field is a 32 bit integral value
  103.     raatAcctInputOctets,            // Value field is a 32 bit integral value
  104.     raatAcctOutputOctets,           // Value field is a 32 bit integral value
  105.     raatAcctSessionId,              // Value field is a Pointer
  106.     raatAcctAuthentic,              // Value field is a 32 bit integral value
  107.     raatAcctSessionTime,            // Value field is a 32 bit integral value
  108.     raatAcctInputPackets,           // Value field is a 32 bit integral value
  109.     raatAcctOutputPackets,          // Value field is a 32 bit integral value
  110.     raatAcctTerminateCause,         // Value field is a 32 bit integral value
  111.     raatAcctMultiSessionId = 50,    // Value field is a Pointer
  112.     raatAcctLinkCount,              // Value field is a 32 bit integral value
  113.     raatAcctEventTimeStamp = 55,    // Value field is a 32 bit integral value
  114.     raatMD5CHAPChallenge = 60,      // Value field is a Pointer
  115.     raatNASPortType,                // Value field is a 32 bit integral value
  116.     raatPortLimit,                  // Value field is a 32 bit integral value
  117.     raatLoginLATPort,               // Value field is a Pointer
  118.     raatTunnelType,                 // Value field is a 32 bit integral value
  119.     raatTunnelMediumType,           // Value field is a 32 bit integral value
  120.     raatTunnelClientEndpoint,       // Value field is a Pointer
  121.     raatTunnelServerEndpoint,       // Value field is a Pointer
  122.     raatARAPPassword = 70,          // Value field is a Pointer
  123.     raatARAPFeatures,               // Value field is a Pointer
  124.     raatARAPZoneAccess,             // Value field is a 32 bit integral value
  125.     raatARAPSecurity,               // Value field is a 32 bit integral value
  126.     raatARAPSecurityData,           // Value field is a Pointer
  127.     raatPasswordRetry,              // Value field is a 32 bit integral value
  128.     raatPrompt,                     // Value field is a 32 bit integral value
  129.     raatConnectInfo,                // Value field is a Pointer
  130.     raatConfigurationToken,         // Value field is a Pointer
  131.     raatEAPMessage,                 // Value field is a Pointer
  132.     raatSignature = 80,             // Value field is a Pointer
  133.     raatARAPChallengeResponse = 84, // Value field is a Pointer
  134.     raatAcctInterimInterval = 85,   // Value field is a 32 bit integral value
  135.     raatARAPGuestLogon = 8096,      // Value field is a 32 bit integral value
  136.     raatReserved = 0xFFFFFFFF       // Undefined
  137.  
  138. }RAS_AUTH_ATTRIBUTE_TYPE;
  139.  
  140.  
  141. //
  142. // VSA attribute ids for ARAP
  143. //
  144. #define  raatARAPChallenge              33
  145. #define  raatARAPOldPassword            19
  146. #define  raatARAPNewPassword            20
  147. #define  raatARAPPasswordChangeReason   21
  148.  
  149. //
  150. // Value is set to the 32 bit integral value or a pointer to data.
  151. // 32 bit integral values should be in host format, not network format.
  152. // Length for a 32 bit integral value can be 1, 2 or 4. The array of
  153. // attributes must be terminated with an attribute of type raatMinimum.
  154. //
  155.  
  156. typedef struct _RAS_AUTH_ATTRIBUTE
  157. {
  158.     RAS_AUTH_ATTRIBUTE_TYPE raaType;
  159.     DWORD                   dwLength;
  160.     PVOID                   Value;
  161.  
  162. }RAS_AUTH_ATTRIBUTE, *PRAS_AUTH_ATTRIBUTE;
  163.  
  164. //
  165. // EAP packet codes from EAP spec.
  166. //
  167.  
  168. #define EAPCODE_Request         1
  169. #define EAPCODE_Response        2
  170. #define EAPCODE_Success         3
  171. #define EAPCODE_Failure         4
  172.  
  173. #define MAXEAPCODE              4
  174.  
  175. //
  176. // Values of the fFlags field in PPP_EAP_INPUT
  177. // These have the same values as the RASEAPF_ flags in ras.h
  178. //
  179.  
  180. #define RAS_EAP_FLAG_ROUTER             0x00000001  // This is a router
  181. #define RAS_EAP_FLAG_NON_INTERACTIVE    0x00000002  // No UI should be displayed
  182. #define RAS_EAP_FLAG_LOGON              0x00000004  // The user data was
  183.                                                     // obtained from Winlogon
  184. #define RAS_EAP_FLAG_PREVIEW            0x00000008  // User has checked
  185.                                                     // "Prompt for information
  186.                                                     // before dialing"
  187. #define RAS_EAP_FLAG_FIRST_LINK         0x00000010  // This is the first link
  188.  
  189. typedef struct _PPP_EAP_PACKET
  190. {
  191.     BYTE    Code;       // 1-Request, 2-Response, 3-Success, 4-Failure
  192.  
  193.     BYTE    Id;         // Id of this packet
  194.  
  195.     BYTE    Length[2];  // Length of this packet
  196.  
  197.     BYTE    Data[1];    // Data - First byte is Type for Request/Response
  198.  
  199. }PPP_EAP_PACKET, *PPPP_EAP_PACKET;
  200.  
  201. #define PPP_EAP_PACKET_HDR_LEN  ( sizeof( PPP_EAP_PACKET ) - 1 )
  202.  
  203. //
  204. // Interface structure between the engine and APs. This is passed to the
  205. // AP's via the RasCpBegin call.
  206. //
  207.  
  208. typedef struct _PPP_EAP_INPUT
  209. {
  210.     //
  211.     // Size of this structure
  212.     //
  213.  
  214.     DWORD       dwSizeInBytes;
  215.  
  216.     //
  217.     // The following five fields are valid only in RasEapBegin call
  218.     //
  219.  
  220.     DWORD       fFlags;         // See RAS_EAP_FLAG_*
  221.  
  222.     BOOL        fAuthenticator; // Act as authenticator or authenticatee
  223.  
  224.     WCHAR *     pwszIdentity;   // Users's identity
  225.  
  226.     WCHAR *     pwszPassword;   // Client's account password. Only valid when
  227.                                 // fAuthenticator is FALSE.
  228.  
  229.     BYTE        bInitialId;     // Initial packet identifier. Must be used for
  230.                                 // the first EAP packet sent by the DLL and
  231.                                 // incremented by one for each subsequent
  232.                                 // request packet.
  233.  
  234.     //
  235.     // During the RasEapBegin call on the authenticator side, pUserAttributes
  236.     // contains the set of attributes for the currently dialed in user, e.g.,
  237.     // the port used, NAS IP Address, etc.
  238.     //
  239.     // When the fAuthenticationComplete flag is TRUE, pUserAttributes contains
  240.     // attributes (if any) returned by the authentication provider.
  241.     //
  242.     // This memory is not owned by the EAP DLL and should be treated as
  243.     // read-only.
  244.     //
  245.  
  246.     RAS_AUTH_ATTRIBUTE * pUserAttributes;
  247.  
  248.     //
  249.     // The next two fields are used only if the EAP DLL is using the
  250.     // currently configured authentication provider ex: RADIUS or Windows NT
  251.     // domain authentication, and the fAuthenticator field above is set to
  252.     // TRUE.
  253.     //
  254.  
  255.     //
  256.     // Indicates that the authenticator has completed authentication.
  257.     // Ignore this field if an authentication provider is not being used.
  258.     //
  259.  
  260.     BOOL                fAuthenticationComplete;
  261.  
  262.     //
  263.     // Result of the authentication process by the authentication provider.
  264.     // NO_ERROR indicates success, otherwise it is a value from winerror.h,
  265.     // raserror.h or mprerror.h indicating failure reason.
  266.     //
  267.  
  268.     DWORD               dwAuthResultCode;
  269.  
  270.     //
  271.     // Valid only on the authenticatee side. This may be used on the
  272.     // authenticatee side to impersonate the user being authenticated.
  273.     //
  274.  
  275.     OPTIONAL HANDLE     hTokenImpersonateUser;
  276.  
  277.     //
  278.     // This variable should be examined only by the authenticatee side.
  279.     // The EAP specification states that the success packet may be lost and
  280.     // since it is a non-acknowledged packet, reception of an NCP packet should
  281.     // be interpreted as a success packet. This varable is set to TRUE in this
  282.     // case only on the authenticatee side
  283.     //
  284.  
  285.     BOOL                fSuccessPacketReceived;
  286.  
  287.     //
  288.     // Will be set to TRUE only when the user dismissed the interactive
  289.     // UI that was invoked by the EAP dll
  290.     //
  291.  
  292.     BOOL                fDataReceivedFromInteractiveUI;
  293.  
  294.     //
  295.     // Data received from the Interactive UI. Will be set to
  296.     // non-NULL when fDataReceivedFromInteractiveUI is set to TRUE and
  297.     // RasEapInvokeInteractiveUI returned non-NULL data. This buffer will be
  298.     // freed by the PPP engine on return from the RasEapMakeMessage call. A
  299.     // copy of this data should be made in the EAP Dll's memory space.
  300.     //
  301.  
  302.     OPTIONAL PBYTE      pDataFromInteractiveUI;
  303.  
  304.     //
  305.     // Size in bytes of data pointed to by pInteractiveConnectionData. This may
  306.     // be 0 if there was no data passed back by RasEapInvokeInteractiveUI.
  307.     //
  308.  
  309.     DWORD               dwSizeOfDataFromInteractiveUI;
  310.  
  311.     //
  312.     // Connection data received from the Config UI. Will be set to non-NULL
  313.     // when the RasEapBegin call is made and the RasEapInvokeConfigUI
  314.     // returned non-NULL data. This buffer will be freed by the PPP engine
  315.     // on return from the RasEapBegin call. A copy of this data should
  316.     // be made in the EAP Dll's memory space.
  317.     //
  318.  
  319.     OPTIONAL PBYTE      pConnectionData;
  320.  
  321.     //
  322.     // Size in bytes of data pointed to by pConnectionData. This may be
  323.     // 0 if there was no data passed back by the RasEapInvokeConfigUI call.
  324.     //
  325.  
  326.     DWORD               dwSizeOfConnectionData;
  327.  
  328.     //
  329.     // User data received from the Identity UI or Interactive UI. Will be set
  330.     // to non-NULL when the RasEapBegin call is made if such data exists.
  331.     // This buffer will be freed by the PPP engine on return from the
  332.     // RasEapBegin call. A copy of this data should be made in the EAP Dll's
  333.     // memory space.
  334.     //
  335.  
  336.     OPTIONAL PBYTE      pUserData;
  337.  
  338.     //
  339.     // Size in bytes of data pointed to by pUserData. This may be 0 if there
  340.     // is no data.
  341.     //
  342.  
  343.     DWORD               dwSizeOfUserData;
  344.  
  345.     //
  346.     // Reserved.
  347.     //
  348.  
  349.     HANDLE              hReserved;
  350.  
  351. }PPP_EAP_INPUT, *PPPP_EAP_INPUT;
  352.  
  353. typedef enum _PPP_EAP_ACTION
  354. {
  355.     //
  356.     // These actions are provided by the EAP DLL as output from the
  357.     // RasEapMakeMessage API.  They tell the PPP engine what action (if any) to
  358.     // take on the EAP DLL's behalf, and eventually inform the engine that the
  359.     // EAP DLL has finished authentication.
  360.     //
  361.  
  362.     EAPACTION_NoAction,     // Be passive, i.e. listen without timeout (default)
  363.     EAPACTION_Authenticate, // Invoke the back-end authenticator.
  364.     EAPACTION_Done,         // End auth session, dwAuthResultCode is set
  365.     EAPACTION_SendAndDone,  // As above but send message without timeout first
  366.     EAPACTION_Send,         // Send message, don't timeout waiting for reply
  367.     EAPACTION_SendWithTimeout, // Send message, timeout if reply not received
  368.     EAPACTION_SendWithTimeoutInteractive  // As above, but don't increment
  369.                                           // retry count
  370.  
  371. }PPP_EAP_ACTION;
  372.  
  373. typedef struct _PPP_EAP_OUTPUT
  374. {
  375.     //
  376.     // Size of this structure
  377.     //
  378.  
  379.     DWORD                   dwSizeInBytes;
  380.  
  381.     //
  382.     // Action that the PPP engine should take
  383.     //
  384.  
  385.     PPP_EAP_ACTION          Action;
  386.  
  387.     //
  388.     // dwAuthResultCode is valid only with an Action code of Done or
  389.     // SendAndDone. Zero value indicates succesful authentication.
  390.     // Non-zero indicates unsuccessful authentication with the value
  391.     // indicating the reason for authentication failure.
  392.     // Non-zero return codes should be only from winerror.h, raserror.h and
  393.     // mprerror.h
  394.     //
  395.  
  396.     DWORD                   dwAuthResultCode;
  397.  
  398.     //
  399.     // When Action is EAPACTION_Authenticate, pUserAttributes may contain
  400.     // additional attributes necessary to authenticate the user, e.g.,
  401.     // User-Password. If no credentials are presented, the back-end
  402.     // authenticator will assume the user is authentic and only retrieve
  403.     // authorizations.
  404.     //
  405.     // When Action is EAPACTION_Done, EAPACTION_SendAndDone, or EAPACTION_Send,
  406.     // pUserAttributes may contain additional attributes for the user. These
  407.     // attributes will overwrite any attributes of the same type returned by
  408.     // the back-end authenticator.
  409.     //
  410.     // It is up to the EAP DLL to free this memory in RasEapEnd call.
  411.     //
  412.  
  413.     OPTIONAL RAS_AUTH_ATTRIBUTE * pUserAttributes;
  414.     //
  415.     // Flag set to true will cause the RasEapInvokeInteractiveUI call to be
  416.     // made.
  417.     //
  418.  
  419.     BOOL                    fInvokeInteractiveUI;
  420.  
  421.     //
  422.     // Pointer to context data, if any, to be sent to the UI. The EAP dll
  423.     // is responsible for freeing this buffer in the RasEapEnd call or when
  424.     // a response from the user for this invocation is obtained.
  425.     //
  426.  
  427.     OPTIONAL PBYTE          pUIContextData;
  428.  
  429.     //
  430.     // Size in bytes of the data pointed to by pUIContextData. Ignored if
  431.     // pUIContextData is NULL
  432.     //
  433.  
  434.     DWORD                   dwSizeOfUIContextData;
  435.  
  436.     //
  437.     // When set to TRUE, indicates that the information pointed to by
  438.     // pConnectionData should be saved in the phonebook. Only valid on
  439.     // the authenticatee side.
  440.     //
  441.  
  442.     BOOL                    fSaveConnectionData;
  443.  
  444.     //
  445.     // If fSaveConnectionData above is true, the data pointed to by
  446.     // pConnectionData will be saved in the phonebook. This data
  447.     // must be freed by the DLL when the RasEapEnd call is made.
  448.     //
  449.  
  450.     OPTIONAL PBYTE          pConnectionData;
  451.  
  452.     //
  453.     // Size, in bytes, of the data pointed to by pConnectionData
  454.     //
  455.  
  456.     DWORD                   dwSizeOfConnectionData;
  457.  
  458.     //
  459.     // When set to TRUE, indicates that the information pointed to by
  460.     // pUserData should be saved in the registry for this user. Only valid
  461.     // on the authenticatee side.
  462.     //
  463.  
  464.     BOOL                    fSaveUserData;
  465.  
  466.     //
  467.     // If fSaveUserData above is true, the data pointed to by pUserData will be
  468.     // saved in the registry for this user. This data must be freed by the DLL
  469.     // when the RasEapEnd call is made.
  470.     //
  471.  
  472.     OPTIONAL PBYTE          pUserData;
  473.  
  474.     //
  475.     // Size, in bytes, of the data pointed to by pUserData
  476.     //
  477.  
  478.     DWORD                   dwSizeOfUserData;
  479.  
  480. }PPP_EAP_OUTPUT, *PPPP_EAP_OUTPUT;
  481.  
  482. typedef struct _PPP_EAP_INFO
  483. {
  484.     //
  485.     // Size of this structure
  486.     //
  487.  
  488.     DWORD   dwSizeInBytes;
  489.  
  490.     DWORD   dwEapTypeId;
  491.  
  492.     //
  493.     // Called to initialize/uninitialize this module. This will be called before
  494.     // any other call is made. fInitialize will be TRUE iff the module has to be
  495.     // initialized. Must return errorcodes only from winerror.h, raserror.h or
  496.     // mprerror.h
  497.     //
  498.  
  499.     DWORD   (APIENTRY *RasEapInitialize)(   IN  BOOL        fInitialize );
  500.  
  501.     //
  502.     // Called to get a context buffer for this EAP session and pass
  503.     // initialization information. This will be called before any other
  504.     // call is made, except RasEapInitialize. Must return errorcodes only from
  505.     // winerror.h, raserror.h or mprerror.h
  506.     //
  507.  
  508.     DWORD   (APIENTRY *RasEapBegin)( OUT VOID **             ppWorkBuffer,
  509.                                      IN  PPP_EAP_INPUT *     pPppEapInput );
  510.  
  511.     //
  512.     // Called to free the context buffer for this EAP session.
  513.     // Called after this session is completed successfully or not, provided
  514.     // the RasEapBegin call for this EAP session returned successfully.
  515.     // Must return errorcodes only from winerror.h, raserror.h or mprerror.h
  516.     //
  517.  
  518.     DWORD   (APIENTRY *RasEapEnd)(   IN  VOID *     pWorkBuffer );
  519.  
  520.     //
  521.     // Called to process an incomming packet and/or send a packet.
  522.     // cbSendPacket is the size in bytes of the buffer pointed to by
  523.     // pSendPacket. Must return errorcodes only from winerror.h, raserror.h or
  524.     // mprerror.h. Error return code indicates an error occurance during the
  525.     // authentication process.
  526.     //
  527.  
  528.     DWORD   (APIENTRY *RasEapMakeMessage)(
  529.                             IN  VOID*               pWorkBuf,
  530.                             IN  PPP_EAP_PACKET*     pReceivePacket,
  531.                             OUT PPP_EAP_PACKET*     pSendPacket,
  532.                             IN  DWORD               cbSendPacket,
  533.                             OUT PPP_EAP_OUTPUT*     pEapOutput,
  534.                             IN  PPP_EAP_INPUT*      pEapInput );
  535.  
  536. }PPP_EAP_INFO, *PPPP_EAP_INFO;
  537.  
  538. //
  539. // RasEapGetInfo should be exported by the 3rd party EAP dll installed in the
  540. // registry via the Path value.
  541. //
  542.  
  543. DWORD APIENTRY
  544. RasEapGetInfo(
  545.     IN  DWORD           dwEapTypeId,
  546.     OUT PPP_EAP_INFO*   pEapInfo
  547. );
  548.  
  549. //
  550. // RasEapFreeMemory should be exported by the 3rd party EAP dlls installed in
  551. // the registry via the InteractiveUIPath, ConfigUIPath, and IdentityPath
  552. // values.
  553. //
  554.  
  555. DWORD APIENTRY
  556. RasEapFreeMemory(
  557.     IN  BYTE*           pMemory
  558. );
  559.  
  560. //
  561. // RasEapInvokeInteractiveUI and RasEapFreeMemory should be exported by the
  562. // 3rd party EAP dll installed in the registry via the InteractiveUIPath
  563. // value.
  564. //
  565.  
  566. DWORD APIENTRY
  567. RasEapInvokeInteractiveUI(
  568.     IN  DWORD           dwEapTypeId,
  569.     IN  HWND            hwndParent,
  570.     IN  BYTE*           pUIContextData,
  571.     IN  DWORD           dwSizeOfUIContextData,
  572.     OUT BYTE**          ppDataFromInteractiveUI,
  573.     OUT DWORD*          pdwSizeOfDataFromInteractiveUI
  574. );
  575.  
  576. //
  577. // RasEapInvokeConfigUI and RasEapFreeMemory should be exported by the
  578. // 3rd party EAP dll installed in the registry via the ConfigUIPath value.
  579. //
  580.  
  581. DWORD APIENTRY
  582. RasEapInvokeConfigUI(
  583.     IN  DWORD           dwEapTypeId,
  584.     IN  HWND            hwndParent,
  585.     IN  DWORD           dwFlags,
  586.     IN  BYTE*           pConnectionDataIn,
  587.     IN  DWORD           dwSizeOfConnectionDataIn,
  588.     OUT BYTE**          ppConnectionDataOut,
  589.     OUT DWORD*          pdwSizeOfConnectionDataOut
  590. );
  591.  
  592. //
  593. // RasEapGetIdentity and RasEapFreeMemory should be exported by the
  594. // 3rd party EAP dll installed in the registry via the IdentityPath value.
  595. //
  596.  
  597. DWORD APIENTRY
  598. RasEapGetIdentity(
  599.     IN  DWORD           dwEapTypeId,
  600.     IN  HWND            hwndParent,
  601.     IN  DWORD           dwFlags,
  602.     IN  const WCHAR*    pwszPhonebook,
  603.     IN  const WCHAR*    pwszEntry,
  604.     IN  BYTE*           pConnectionDataIn,
  605.     IN  DWORD           dwSizeOfConnectionDataIn,
  606.     IN  BYTE*           pUserDataIn,
  607.     IN  DWORD           dwSizeOfUserDataIn,
  608.     OUT BYTE**          ppUserDataOut,
  609.     OUT DWORD*          pdwSizeOfUserDataOut,
  610.     OUT WCHAR**         ppwszIdentity
  611. );
  612.  
  613. #endif /* WINVER >= 0x0500 */
  614.  
  615. #ifdef __cplusplus
  616. }
  617. #endif
  618.  
  619. #pragma option pop /*P_O_Pop*/
  620. #endif // _RASEAPIF_
  621.  
  622.