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_INPUT pUserData 成員中的驗證通訊協定。

驗證通訊協議應該為身分識別數據配置記憶體緩衝區。 RAS 會呼叫 RasEapFreeMemory 來釋放此記憶體。

[out] pdwSizeOfUserDataOut

DWORD 變數的指標,該變數會接收 ppUserDataOut 參數所指向的數據大小。

[out] ppwszIdentityOut

在成功傳回時,指標指向識別要求驗證之使用者的 Null 終止 Unicode 字串。 在呼叫 RasEapBegin 期間,此字串會傳遞至 pszIdentity 成員中PPP_EAP_INPUT的驗證通訊協定。

傳回值

如果函式成功,傳回值 會NO_ERROR

如果函式無法為用戶數據配置記憶體,則傳回值應該 ERROR_NOT_ENOUGH_MEMORY

如果使用 RAS_EAP_FLAG_NON_INTERACTIVE 旗標呼叫函式,但必須叫用使用者介面來判斷使用者的身分識別,函式應該會傳回 ERROR_INTERACTIVE_MODE

如果函式以其他方式失敗,則傳回值應該是 Winerror.h、Raserror.h 或 Mprerror.h 的適當錯誤碼。

備註

實作 RasEapGetIdentityRasEapFreeMemory 的 DLL 可能支援多個驗證通訊協定。 dwEapTypeId 參數會指定要叫用身分識別使用者介面的通訊協定。

IEEE 802.1X 和 PPP 通訊協定不會在沒有 RasEapFreeMemory 實作的情況下呼叫 RasEapGetIdentity

驗證通訊協定會在 RasEapBegin期間,PPP_EAP_INPUT 的 pUserData 成員中接收從 RasEapGetIdentity 傳回的數據。 若要將此使用者的數據儲存在登錄中,驗證通訊協議應該將 PPP_EAP_OUTPUTpUserData 成員設定為指向數據,並將 PPP_EAP_OUTPUTfSaveUserData 成員設定為 TRUE

RAS 函式 RasGetEapUserIdentity 會呼叫此函式。

如果 RasEapGetIdentity 顯示使用者介面,則使用者介面必須支援 WM_COMMAND 訊息,其中 LOWORD (wParam) 等於 IDCANCEL。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 raseapif.h

另請參閱

EAP 函式

可延伸驗證通訊協議參考

取得身分識別資訊

PPP_EAP_INPUT

RasEapFreeMemory

RasEapMakeMessage

RasGetEapUserIdentity