次の方法で共有


CredUnPackAuthenticationBufferA 関数 (wincred.h)

CredUnPackAuthenticationBuffer 関数は、CredUIPromptForWindowsCredentials 関数の呼び出しによって返された認証バッファーを文字列ユーザー名とパスワードに変換します。

構文

CREDUIAPI BOOL CredUnPackAuthenticationBufferA(
  [in]      DWORD dwFlags,
  [in]      PVOID pAuthBuffer,
  [in]      DWORD cbAuthBuffer,
  [out]     LPSTR pszUserName,
  [in, out] DWORD *pcchlMaxUserName,
  [out]     LPSTR pszDomainName,
  [in, out] DWORD *pcchMaxDomainName,
  [out]     LPSTR 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 構造体の 1 つである場合、この関数は パスワードを復号化してから pszPassword バッファーに戻します。

[in] pAuthBuffer

変換する認証バッファーへのポインター。

このバッファーは通常、 CredUIPromptForWindowsCredentials または CredPackAuthenticationBuffer 関数の出力です。 これは、次のいずれかの型である必要があります。

[in] cbAuthBuffer

pAuthBuffer バッファーのサイズ (バイト単位)。

[out] pszUserName

ユーザー名を受け取る null で終わる文字列へのポインター。

この文字列には、マーシャリングされた資格情報を指定できます。 「解説」を参照してください。

[in, out] pcchlMaxUserName

pszUserName バッファーのサイズを文字単位で指定する DWORD 値へのポインター。 出力時にバッファーのサイズが十分でない場合は、 pszUserName バッファーの必要なサイズを文字単位で指定します。 サイズには、終端の null 文字が含まれます。

[out] pszDomainName

ユーザーのドメインの名前を受け取る null で終わる文字列へのポインター。

[in, out] pcchMaxDomainName

pszDomainName バッファーのサイズを文字単位で指定する DWORD 値へのポインター。 出力時にバッファーのサイズが十分でない場合は、 pszDomainName バッファーの必要なサイズを文字単位で指定します。 サイズには、終端の null 文字が含まれます。 ドメイン名がない場合は、必要なサイズを 0 にすることができます。

[out] pszPassword

パスワードを受け取る null で終わる文字列へのポインター。

[in, out] pcchMaxPassword

pszPassword バッファーのサイズを文字単位で指定する DWORD 値へのポインター。 出力時にバッファーのサイズが十分でない場合は、 pszPassword バッファーの必要なサイズを文字単位で指定します。 サイズには、終端の null 文字が含まれます。

この文字列には、マーシャリングされた資格情報を指定できます。 「解説」を参照してください。

戻り値

関数 が成功した場合は TRUE。それ以外の場合は FALSE

拡張エラー情報については、 GetLastError 関数を呼び出します。 次の表は 、GetLastError 関数の一般的な値を示しています。

リターン コード/値 Description
ERROR_NOT_CAPABLE
CRED_PACK_PROTECTED_CREDENTIALS は dwFlags パラメーターの値として渡されましたが、パスワードの保護に使用されるセキュリティ コンテキストが呼び出し元のセキュリティ コンテキストとは異なるため、この関数は資格情報を復号化できません。
ERROR_INSUFFICIENT_BUFFER
出力バッファーの 1 つである pszUserNamepszDomainName、または pszPassword のサイズが不十分でした。
ERROR_NOT_SUPPORTED
認証バッファーがサポートされている種類ではありません。

注釈

Windows 8およびWindows Server 2012以降、認証バッファーはSEC_WINNT_AUTH_IDENTITY_EX2構造にすることができます。これは、必要に応じて、SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON オプションで SspiEncryptAuthIdentityEx 関数を使用して暗号化できます。 この資格情報の形式は、 CredUIPromptForWindowsCredentials または SspiPromptForCredentials 関数を使用して、ID プロバイダーの資格情報プロバイダーによって返されます。 この構造体は、 CredPackAuthenticationBuffer 関数を使用して構築することもできます。 認証バッファー pAuthBuffer、KERB_CERTIFICATE_LOGONSEC_WINNT_AUTH_IDENTITY_EX2などの非パスワード資格情報を表す場合、関数は資格情報を文字列としてマーシャリングし、ユーザー名、ドメイン名、パスワード文字列として返す必要があります。 マーシャリングは、特定のプロシージャを使用して行われます。 dwFlags に CRED_PACK_PROTECTED_CREDENTIALS フラグが含まれている場合、呼び出し元は資格情報が暗号化されたのと同じログオン セッションで実行する必要があります。

注意

wincred.h ヘッダーは CredUnPackAuthenticationBuffer をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいてこの関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー wincred.h
Library Credui.lib
[DLL] Credui.dll