CredUnPackAuthenticationBufferW 函式 (wincred.h)
CredUnPackAuthenticationBuffer 函式會將呼叫 credUIPromptForWindowsCredentials 函式所傳回的驗證緩衝區轉換成字元串使用者名稱和密碼。
語法
CREDUIAPI BOOL CredUnPackAuthenticationBufferW(
[in] DWORD dwFlags,
[in] PVOID pAuthBuffer,
[in] DWORD cbAuthBuffer,
[out] LPWSTR pszUserName,
[in, out] DWORD *pcchMaxUserName,
[out] LPWSTR pszDomainName,
[in, out] DWORD *pcchMaxDomainName,
[out] LPWSTR pszPassword,
[in, out] DWORD *pcchMaxPassword
);
參數
[in] dwFlags
將此參數的值設定為 CRED_PACK_PROTECTED_CREDENTIALS 指定函式嘗試解密驗證緩衝區中的認證。 如果無法解密認證,函式會傳回 FALSE,而對 getLastError 函式的呼叫會傳回值 ERROR_NOT_CAPABLE。
解密的完成方式取決於驗證緩衝區的格式。
如果驗證緩衝區是 SEC_WINNT_AUTH_IDENTITY_EX2 結構,則函式可以使用 SspiEncryptAuthIdentityEx 搭配 SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON 選項來解密緩衝區。
如果驗證緩衝區是封送處理KERB_*_LOGON結構的其中一個,函式會在 pszPassword 緩衝區中傳回密碼之前先解密密碼。
[in] pAuthBuffer
要轉換之驗證緩衝區的指標。
此緩衝區通常是 CredUIPromptForWindowsCredentials 或 CredPackAuthenticationBuffer 函式的輸出。 這必須是下列其中一種類型:
- 身分識別認證的 SEC_WINNT_AUTH_IDENTITY_EX2 結構。 函式不接受其他 SEC_WINNT_AUTH_IDENTITY 結構。
- 密碼認證的 KERB_INTERACTIVE_LOGON 或 KERB_INTERACTIVE_UNLOCK_LOGON 結構。
- 智慧卡憑證認證的 KERB_CERTIFICATE_LOGON 或 KERB_CERTIFICATE_UNLOCK_LOGON 結構。
- GENERIC_CRED泛型認證。
[in] cbAuthBuffer
pAuthBuffer 緩衝區的大小,以位元組為單位。
[out] pszUserName
接收用戶名稱之 Null 終止字串的指標。
此字串可以是封送處理認證。 請參閱。
[in, out] pcchMaxUserName
DWORD 值的指標,指定 pszUserName 緩衝區的大小。 在輸出中,如果緩衝區大小不足,請指定 pszUserName 緩衝區所需的大小。 大小包含終止 Null 字元。
[out] pszDomainName
接收用戶功能變數名稱之 Null 終止字串的指標。
[in, out] pcchMaxDomainName
[out] pszPassword
接收密碼之 Null 終止字串的指標。
[in, out] pcchMaxPassword
此字串可以是封送處理認證。 請參閱。
傳回值
如果函式成功,TRUE;否則,FALSE。
如需擴充的錯誤資訊,請呼叫 getLastError 函式
傳回碼/值 | 描述 |
---|---|
|
CRED_PACK_PROTECTED_CREDENTIALS傳遞為 dwFlags 參數的值,但此函式無法解密認證,因為用來保護密碼的安全性內容與呼叫者的安全性內容不同。 |
|
其中一個輸出緩衝區 pszUserName、pszDomainName或 pszPassword大小不足。 |
|
驗證緩衝區不是支援的型別。 |
言論
從 Windows 8 和 Windows Server 2012 開始,驗證緩衝區可以是 SEC_WINNT_AUTH_IDENTITY_EX2 結構,您可以使用 SspiEncryptAuthIdentityEx 函式搭配 SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON 選項選擇性地加密。 此認證格式是由識別提供者的認證提供者使用 CredUIPromptForWindowsCredentials 或 SspiPromptForCredentials 函式傳回。 此結構也可以使用 CredPackAuthenticationBuffer 函式來建構。 如果驗證緩衝區 pAuthBuffer 代表非密碼認證,例如 KERB_CERTIFICATE_LOGON 或 SEC_WINNT_AUTH_IDENTITY_EX2,則函式必須將認證封送處理為字元字串,以使用者名稱、功能變數名稱和密碼字元串傳回。 封送處理是使用特定程式來完成。 當 dwFlags 包含CRED_PACK_PROTECTED_CREDENTIALS旗標時,呼叫端必須在加密認證的相同登入會話中執行。
注意
wincred.h 標頭會根據 UNICODE 預處理器常數的定義,將 CredUnPackAuthenticationBuffer 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | wincred.h |
連結庫 | Credui.lib |
DLL | Credui.dll |