RasEapGetIdentity 函数 (raseapif.h)

RAS 连接管理器调用 RasEapGetIdentity 函数以获取请求身份验证的用户的标识信息。

语法

DWORD RasEapGetIdentity(
  [in]  DWORD       dwEapTypeId,
  [in]  HWND        hwndParent,
  [in]  DWORD       dwFlags,
  [in]  const WCHAR *pwszPhonebook,
  [in]  const WCHAR *pwszEntry,
  [in]  BYTE        *pConnectionDataIn,
  [in]  DWORD       dwSizeOfConnectionDataIn,
  [in]  BYTE        *pUserDataIn,
  [in]  DWORD       dwSizeOfUserDataIn,
  [out] BYTE        **ppUserDataOut,
  [out] DWORD       *pdwSizeOfUserDataOut,
  [out] WCHAR       **ppwszIdentityOut
);

参数

[in] dwEapTypeId

指定要为其调用标识用户界面的身份验证协议。

[in] hwndParent

用户界面对话框的父窗口的句柄。 如果 dwFlags 参数包含 RAS_EAP_FLAG_NON_INTERACTIVE 标志,则 hwndParentNULL

[in] dwFlags

指定限定身份验证过程的以下标志的零个或多个。

标志 含义
RAS_EAP_FLAG_ROUTER
指定拨入的计算机是路由器。 缺少此标志表示拨入的计算机是 RAS 客户端。
RAS_EAP_FLAG_NON_INTERACTIVE
指定身份验证协议不应显示用户界面。 如果身份验证协议无法从提供的数据中确定标识,则应返回错误代码 ,ERROR_INTERACTIVE_MODE。 如果指定了此标志, 则 hwndParent 参数将为 NULL
RAS_EAP_FLAG_LOGON
指定在登录到本地系统(即从 Winlogon.exe)时获取用户数据。
RAS_EAP_FLAG_PREVIEW
指定在拨号之前应提示用户输入标识信息。
RAS_EAP_FLAG_FIRST_LINK
指示此连接是多链接连接中的第一个链接。 有关详细信息,请参阅 [Multilink and Callback Connections] (/windows/win32/eap/multilink-and-callback-connections) 。
RAS_EAP_FLAG_MACHINE_AUTH
指定身份验证过程使用计算机凭据进行身份验证。 凭据可以是证书、计算机名称/密码(如 MSCHAPv2 的情况)或任何其他标识计算机的方法。 如果身份验证协议不支持计算机身份验证,则应 ERROR_NOT_SUPPORTED返回错误。
RAS_EAP_FLAG_8021X_AUTH
指定此会话在无线上下文中执行。

[in] pwszPhonebook

指向以 null 结尾的 Unicode 字符串的指针,该字符串指定电话簿 (PBK) 文件的完整路径。 如果此参数为 NULL,则该函数使用系统电话簿。

[in] pwszEntry

指向以 null 结尾的 Unicode 字符串的指针,该字符串指定现有条目名称。

[in] pConnectionDataIn

指向当前存储在电话簿条目中的特定于连接的数据的指针。

[in] dwSizeOfConnectionDataIn

指定当前存储在电话簿条目中的特定于连接的数据的大小。

[in] pUserDataIn

指向注册表中当前为此用户存储的用户特定数据的指针。

[in] dwSizeOfUserDataIn

指定注册表中当前为此用户存储的用户特定数据的大小。

[out] ppUserDataOut

指向一个指针的指针,该指针在成功返回时指向用户的标识数据。 在调用 RasEapBegin 期间,此数据将传递到 PPP_EAP_INPUTpUserData 成员中的身份验证协议。

身份验证协议应为标识数据分配内存缓冲区。 RAS 将通过调用 RasEapFreeMemory 来释放此内存。

[out] pdwSizeOfUserDataOut

指向 DWORD 变量的指针,该变量接收 ppUserDataOut 参数指向的数据的大小。

[out] ppwszIdentityOut

指向成功返回时指向以 null 结尾的 Unicode 字符串的指针,该字符串标识请求身份验证的用户。 在调用 RasEapBegin 期间,此字符串传递到 PPP_EAP_INPUTpszIdentity 成员中的身份验证协议。

返回值

如果函数成功,则返回值 NO_ERROR

如果函数无法为用户数据分配内存,则应 ERROR_NOT_ENOUGH_MEMORY返回值。

如果使用 RAS_EAP_FLAG_NON_INTERACTIVE 标志调用函数,但必须调用用户界面来确定用户的标识,则函数应返回 ERROR_INTERACTIVE_MODE

如果函数以其他方式失败,则返回值应为 Winerror.h、Raserror.h 或 Mprerror.h 中的相应错误代码。

注解

实现 RasEapGetIdentityRasEapFreeMemory 的 DLL 可能支持多个身份验证协议。 dwEapTypeId 参数指定要调用标识用户界面的协议。

如果没有 RasEapFreeMemory 的实现,IEEE 802.1X 和 PPP 协议不会调用 RasEapGetIdentity

身份验证协议在 RasEapBegin 期间接收从 PPP_EAP_INPUTpUserData 成员中的 RasEapGetIdentity 返回的数据。 若要将此用户的数据存储在注册表中,身份验证协议应将 PPP_EAP_OUTPUTpUserData 成员设置为指向数据,并将 PPP_EAP_OUTPUTfSaveUserData 成员设置为 TRUE

此函数由 RAS 函数 RasGetEapUserIdentity 调用。

如果 RasEapGetIdentity 显示用户界面,则用户界面必须支持 LOWORD (wParam) 等于 IDCANCEL 的WM_COMMAND消息。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 raseapif.h

另请参阅

EAP 函数

可扩展身份验证协议参考

正在获取标识信息

PPP_EAP_INPUT

RasEapFreeMemory

RasEapMakeMessage

RasGetEapUserIdentity