Freigeben über


CredUnPackAuthenticationBufferA-Funktion (wincred.h)

Die CredUnPackAuthenticationBuffer-Funktion konvertiert einen Authentifizierungspuffer, der von einem Aufruf des CredUIPromptForWindowsCredentials Funktion in einen Zeichenfolgenbenutzernamen und ein Kennwort zurückgegeben wird.

Syntax

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
);

Parameter

[in] dwFlags

Durch Festlegen des Werts dieses Parameters auf CRED_PACK_PROTECTED_CREDENTIALS wird angegeben, dass die Funktion versucht, die Anmeldeinformationen im Authentifizierungspuffer zu entschlüsseln. Wenn die Anmeldeinformationen nicht entschlüsselt werden können, gibt die Funktion FALSEzurück, und ein Aufruf der GetLastError--Funktion gibt den Wert ERROR_NOT_CAPABLEzurück.

Wie die Entschlüsselung erfolgt, hängt vom Format des Authentifizierungspuffers ab.

Wenn der Authentifizierungspuffer eine SEC_WINNT_AUTH_IDENTITY_EX2 Struktur ist, kann die Funktion den Puffer entschlüsseln, wenn er mit SspiEncryptAuthIdentityEx- mit der Option SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON verschlüsselt wird.

Wenn der Authentifizierungspuffer einer der gemarsteten KERB_*_LOGON-Strukturen ist, entschlüsselt die Funktion das Kennwort, bevor sie im pszPassword- Puffer zurückgegeben wird.

[in] pAuthBuffer

Ein Zeiger auf den zu konvertierenden Authentifizierungspuffer.

Dieser Puffer ist in der Regel die Ausgabe der CredUIPromptForWindowsCredentials oder CredPackAuthenticationBuffer Funktion. Dies muss einer der folgenden Typen sein:

[in] cbAuthBuffer

Die Größe des pAuthBuffer- Puffers in Byte.

[out] pszUserName

Ein Zeiger auf eine mit Null beendete Zeichenfolge, die den Benutzernamen empfängt.

Diese Zeichenfolge kann eine gemarstete Anmeldeinformationen sein. Siehe Anmerkungen.

[in, out] pcchlMaxUserName

Ein Zeiger auf einen DWORD--Wert, der die Größe des pszUserName- Puffers in Zeichen angibt. Wenn der Puffer bei der Ausgabe nicht ausreichend groß ist, gibt die erforderliche Größe des pszUserName Puffers in Zeichen an. Die Größe enthält das Beenden des Nullzeichens.

[out] pszDomainName

Ein Zeiger auf eine mit Null beendete Zeichenfolge, die den Namen der Domäne des Benutzers empfängt.

[in, out] pcchMaxDomainName

Ein Zeiger auf einen DWORD- Wert, der die Größe des pszDomainName- Puffers in Zeichen angibt. Gibt bei der Ausgabe, wenn der Puffer nicht ausreichend groß ist, die erforderliche Größe des pszDomainName Puffers in Zeichen an. Die Größe enthält das endende Nullzeichen. Die erforderliche Größe kann null sein, wenn kein Domänenname vorhanden ist.

[out] pszPassword

Ein Zeiger auf eine mit Null beendete Zeichenfolge, die das Kennwort empfängt.

[in, out] pcchMaxPassword

Ein Zeiger auf einen DWORD- Wert, der die Größe des pszPassword- Puffers in Zeichen angibt. Gibt bei der Ausgabe, wenn der Puffer nicht ausreichend groß ist, die erforderliche Größe des pszPassword- Puffers in Zeichen an. Die Größe enthält das endende Nullzeichen.

Diese Zeichenfolge kann eine gemarstete Anmeldeinformationen sein. Siehe Anmerkungen.

Rückgabewert

TRUE, wenn die Funktion erfolgreich ist; andernfalls FALSE.

Rufen Sie für erweiterte Fehlerinformationen die GetLastError--Funktion auf. Die folgende Tabelle enthält allgemeine Werte für die GetLastError--Funktion.

Zurückgeben von Code/Wert Beschreibung
ERROR_NOT_CAPABLE
CRED_PACK_PROTECTED_CREDENTIALS wurde als Wert des dwFlags-Parameters übergeben, diese Funktion kann die Anmeldeinformationen jedoch nicht entschlüsseln, da sich der Sicherheitskontext zum Schutz des Kennworts vom Sicherheitskontext des Aufrufers unterscheidet.
ERROR_INSUFFICIENT_BUFFER
Einer der Ausgabepuffer, pszUserName, pszDomainNameoder pszPassword, war unzureichend.
ERROR_NOT_SUPPORTED
Der Authentifizierungspuffer weist keinen unterstützten Typ auf.

Bemerkungen

Ab Windows 8 und Windows Server 2012 kann der Authentifizierungspuffer eine SEC_WINNT_AUTH_IDENTITY_EX2 Struktur sein, die optional mithilfe der SspiEncryptAuthIdentityEx- funktion mit der option SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON verschlüsselt werden kann. Dieses Anmeldeinformationsformat wird von einem Anmeldeinformationsanbieter eines Identitätsanbieters mithilfe der CredUIPromptForWindowsCredentials oder SspiPromptForCredentials-Funktion zurückgegeben. Diese Struktur kann auch mithilfe der CredPackAuthenticationBuffer-Funktion erstellt werden. Wenn der Authentifizierungspuffer pAuthBuffer eine Nichtpassword-Anmeldeinformation darstellt, z. B. KERB_CERTIFICATE_LOGON oder SEC_WINNT_AUTH_IDENTITY_EX2, muss die Funktion die Anmeldeinformationen als Zeichenzeichenfolgen marshallen, die als Benutzername, Domänenname und Kennwortzeichenfolgen zurückgegeben werden. Das Marshalling erfolgt mithilfe eines bestimmten Verfahrens. Wenn dwFlags das CRED_PACK_PROTECTED_CREDENTIALS Flag enthält, muss der Aufrufer in derselben Anmeldesitzung ausgeführt werden, in der die Anmeldeinformationen verschlüsselt wurden.

Anmerkung

Der wincred.h-Header definiert CredUnPackAuthenticationBuffer als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Vista [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2008 [Nur Desktop-Apps]
Zielplattform- Fenster
Header- wincred.h
Library Credui.lib
DLL- Credui.dll