CredUnPackAuthenticationBufferA-Funktion (wincred.h)
Die CredUnPackAuthenticationBuffer-Funktion konvertiert einen Authentifizierungspuffer, der durch einen Aufruf der Funktion CredUIPromptForWindowsCredentials zurückgegeben wird, in einen Zeichenfolgenbenutzernamen und ein Kennwort.
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
Wenn Sie den Wert dieses Parameters auf CRED_PACK_PROTECTED_CREDENTIALS festlegen, 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 FALSE zurück, und ein Aufruf der GetLastError-Funktion gibt den Wert ERROR_NOT_CAPABLE zurü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 eine der gemarshallten KERB_*_LOGON-Strukturen ist, entschlüsselt die Funktion das Kennwort, bevor es im pszPassword-Puffer zurückgegeben wird.
[in] pAuthBuffer
Ein Zeiger auf den zu konvertierenden Authentifizierungspuffer.
Dieser Puffer ist in der Regel die Ausgabe der Funktion CredUIPromptForWindowsCredentials oder CredPackAuthenticationBuffer . Dies muss einer der folgenden Typen sein:
- Eine SEC_WINNT_AUTH_IDENTITY_EX2-Struktur für Identitätsanmeldeinformationen. Die Funktion akzeptiert keine anderen SEC_WINNT_AUTH_IDENTITY-Strukturen .
- Eine KERB_INTERACTIVE_LOGON- oder KERB_INTERACTIVE_UNLOCK_LOGON-Struktur für Kennwortanmeldeinformationen.
- Eine KERB_CERTIFICATE_LOGON- oder KERB_CERTIFICATE_UNLOCK_LOGON-Struktur für Smart Karte-Zertifikatanmeldeinformationen.
- GENERIC_CRED für generische Anmeldeinformationen.
[in] cbAuthBuffer
Die Größe des pAuthBuffer-Puffers in Bytes.
[out] pszUserName
Ein Zeiger auf eine NULL-endende Zeichenfolge, die den Benutzernamen empfängt.
Bei dieser Zeichenfolge kann es sich um gemarshallte Anmeldeinformationen handeln. Siehe Hinweise.
[in, out] pcchlMaxUserName
Ein Zeiger auf einen DWORD-Wert , der die Größe des Puffers pszUserName in Zeichen angibt. Wenn der Puffer bei der Ausgabe nicht ausreichend groß ist, gibt die erforderliche Größe des Puffers pszUserName in Zeichen an. Die Größe umfasst das beendende NULL-Zeichen.
[out] pszDomainName
Ein Zeiger auf eine NULL-endende 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 Puffers pszDomainName in Zeichen angibt. Wenn der Puffer bei der Ausgabe nicht ausreichend groß ist, gibt die erforderliche Größe des Puffers pszDomainName in Zeichen an. Die Größe enthält das abschließende NULL-Zeichen. Die erforderliche Größe kann null sein, wenn kein Domänenname vorhanden ist.
[out] pszPassword
Ein Zeiger auf eine NULL-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. Wenn der Puffer bei der Ausgabe nicht ausreichend groß ist, gibt die erforderliche Größe des pszPassword-Puffers in Zeichen an. Die Größe enthält das abschließende NULL-Zeichen.
Bei dieser Zeichenfolge kann es sich um gemarshallte Anmeldeinformationen handeln. Siehe Hinweise.
Rückgabewert
TRUE , wenn die Funktion erfolgreich ist; andernfalls FALSE.
Rufen Sie die GetLastError-Funktion auf, um erweiterte Fehlerinformationen zu erhalten. Die folgende Tabelle enthält allgemeine Werte für die GetLastError-Funktion .
Rückgabecode/-wert | BESCHREIBUNG |
---|---|
|
CRED_PACK_PROTECTED_CREDENTIALS wurde als Wert des dwFlags-Parameters übergeben, aber diese Funktion kann die Anmeldeinformationen nicht entschlüsseln, da sich der Sicherheitskontext, der zum Schutz des Kennworts verwendet wird, vom Sicherheitskontext des Aufrufers unterscheidet. |
|
Einer der Ausgabepuffer, pszUserName, pszDomainName oder pszPassword, war nicht ausreichend groß. |
|
Der Authentifizierungspuffer hat keinen unterstützten Typ. |
Hinweise
Ab Windows 8 und Windows Server 2012 kann der Authentifizierungspuffer eine SEC_WINNT_AUTH_IDENTITY_EX2-Struktur sein, die optional mit 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 Funktion CredUIPromptForWindowsCredentials oder SspiPromptForCredentials zurückgegeben. Diese Struktur kann auch mithilfe der Funktion CredPackAuthenticationBuffer erstellt werden. Wenn der Authentifizierungspuffer pAuthBuffer keine Kennwortanmeldeinformationen darstellt, z. B. KERB_CERTIFICATE_LOGON oder SEC_WINNT_AUTH_IDENTITY_EX2, muss die Funktion die Anmeldeinformationen als Zeichenfolgen marshallen, die als Benutzername, Domänenname und Kennwortzeichenfolgen zurückgegeben werden. Das Marshalling erfolgt mithilfe eines bestimmten Verfahrens. Wenn dwFlags das flag CRED_PACK_PROTECTED_CREDENTIALS enthält, muss der Aufrufer in derselben Anmeldesitzung ausgeführt werden, in der die Anmeldeinformationen verschlüsselt wurden.
Hinweis
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 |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | wincred.h |
Bibliothek | Credui.lib |
DLL | Credui.dll |