CredUnPackAuthenticationBufferW-Funktion (wincred.h)
Die CredUnPackAuthenticationBuffer-Funktion konvertiert einen Authentifizierungspuffer, der durch einen Aufruf der CredUIPromptForWindowsCredentials-Funktion zurückgegeben wird, in einen Zeichenfolgenbenutzernamen und ein Kennwort.
Syntax
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
);
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 verschlüsselt ist, indem SspiEncryptAuthIdentityEx mit der Option SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON verwendet wird.
Wenn der Authentifizierungspuffer eine der gemarselten KERB_*_LOGON-Strukturen ist, entschlüsselt die Funktion das Kennwort, bevor es im puffer pszPassword 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 generische Anmeldeinformationen.
[in] cbAuthBuffer
Die Größe des pAuthBuffer-Puffers in Bytes.
[out] pszUserName
Ein Zeiger auf eine NULL-Zeichenfolge, die den Benutzernamen empfängt.
Bei dieser Zeichenfolge kann es sich um gemarselte Anmeldeinformationen handeln. Siehe Hinweise.
[in, out] pcchMaxUserName
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 Beenden von NULL-Zeichen.
[out] pszDomainName
Ein Zeiger auf eine NULL-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 beendende 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 beendende NULL-Zeichen.
Bei dieser Zeichenfolge kann es sich um gemarselte 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 als Wert des dwFlags-Parameters übergeben wurde, aber diese Funktion kann die Anmeldeinformationen nicht entschlüsseln, da sich der zum Schutz des Kennworts verwendete Sicherheitskontext vom Sicherheitskontext des Aufrufers unterscheidet. |
|
Einer der Ausgabepuffer, pszUserName, pszDomainName oder pszPassword, hatte eine unzureichende Größe. |
|
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 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 Funktion CredUIPromptForWindowsCredentials oder SspiPromptForCredentials zurückgegeben. Diese Struktur kann auch mithilfe der Funktion CredPackAuthenticationBuffer erstellt werden. Wenn der Authentifizierungspuffer pAuthBuffer Nichtpassword-Anmeldeinformationen 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 Marshallen 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.
Hinweis
Der wincred.h-Header definiert CredUnPackAuthenticationBuffer als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
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 |