Partager via


CredUnPackAuthenticationBufferW, fonction (wincred.h)

La fonction CredUnPackAuthenticationBuffer convertit une mémoire tampon d’authentification retournée par un appel à la fonction CredUIPromptForWindowsCredentials en nom d’utilisateur et mot de passe de chaîne.

Syntaxe

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

Paramètres

[in] dwFlags

La définition de la valeur de ce paramètre sur CRED_PACK_PROTECTED_CREDENTIALS spécifie que la fonction tente de déchiffrer les informations d’identification dans la mémoire tampon d’authentification. Si les informations d’identification ne peuvent pas être déchiffrées, la fonction retourne FAUX, et un appel à la fonction GetLastError retourne la valeur ERROR_NOT_CAPABLE.

La façon dont le déchiffrement est effectué dépend du format de la mémoire tampon d’authentification.

Si la mémoire tampon d’authentification est une structure SEC_WINNT_AUTH_IDENTITY_EX2, la fonction peut déchiffrer la mémoire tampon si elle est chiffrée à l’aide de SspiEncryptAuthIdentityEx avec l’option SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON.

Si la mémoire tampon d’authentification est l’une des structures KERB_*_LOGON marshalées, la fonction déchiffre le mot de passe avant de le retourner dans la mémoire tampon pszPassword.

[in] pAuthBuffer

Pointeur vers la mémoire tampon d’authentification à convertir.

Cette mémoire tampon est généralement la sortie de la fonction CredUIPromptForWindowsCredentials ou CredPackAuthenticationBuffer. Il doit s’agir de l’un des types suivants :

[in] cbAuthBuffer

Taille, en octets, de la mémoire tampon pAuthBuffer.

[out] pszUserName

Pointeur vers une chaîne terminée par null qui reçoit le nom d’utilisateur.

Cette chaîne peut être des informations d’identification marshalées. Voir les remarques.

[in, out] pcchMaxUserName

Pointeur vers une valeur DWORD qui spécifie la taille, en caractères, de la mémoire tampon pszUserName . En sortie, si la mémoire tampon n’est pas de taille suffisante, spécifie la taille requise, en caractères, du pszUserName tampon. La taille inclut la fin du caractère null.

[out] pszDomainName

Pointeur vers une chaîne terminée par null qui reçoit le nom du domaine de l’utilisateur.

[in, out] pcchMaxDomainName

Pointeur vers une valeur DWORD qui spécifie la taille, en caractères, de la mémoire tampon pszDomainName . En sortie, si la mémoire tampon n’est pas de taille suffisante, spécifie la taille requise, en caractères, du pszDomainName tampon. La taille inclut le caractère null de fin. La taille requise peut être égale à zéro s’il n’y a pas de nom de domaine.

[out] pszPassword

Pointeur vers une chaîne terminée par null qui reçoit le mot de passe.

[in, out] pcchMaxPassword

Pointeur vers une valeur DWORD qui spécifie la taille, en caractères, de la mémoire tampon pszPassword . En sortie, si la mémoire tampon n’est pas de taille suffisante, spécifie la taille requise, en caractères, du pszPassword tampon. La taille inclut le caractère null de fin.

Cette chaîne peut être des informations d’identification marshalées. Voir les remarques.

Valeur de retour

TRUE si la fonction réussit ; sinon, FALSE.

Pour obtenir des informations d’erreur étendues, appelez la fonction GetLastError. Le tableau suivant présente les valeurs courantes de la fonction GetLastError.

Retourner le code/la valeur Description
ERROR_NOT_CAPABLE
CRED_PACK_PROTECTED_CREDENTIALS a été passé comme valeur du paramètre dwFlags, mais cette fonction ne peut pas déchiffrer les informations d’identification, car le contexte de sécurité utilisé pour protéger le mot de passe est différent du contexte de sécurité de l’appelant.
ERROR_INSUFFICIENT_BUFFER
L’une des mémoires tampons de sortie, pszUserName, pszDomainName, ou pszPassword, était de taille insuffisante.
ERROR_NOT_SUPPORTED
La mémoire tampon d’authentification n’est pas d’un type pris en charge.

Remarques

À compter de Windows 8 et Windows Server 2012, la mémoire tampon d’authentification peut être une structure SEC_WINNT_AUTH_IDENTITY_EX2, qui peut éventuellement être chiffrée à l’aide de la fonction SspiEncryptAuthIdentityEx avec l’option SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON. Ce format d’informations d’identification est retourné par un fournisseur d’informations d’identification d’un fournisseur d’identité à l’aide de la fonction CredUIPromptForWindowsCredentials ou SspiPromptForCredentials. Cette structure peut également être construite à l’aide de la fonction CredPackAuthenticationBuffer. Si la mémoire tampon d’authentification pAuthBuffer représente des informations d’identification nonpassword, telles que KERB_CERTIFICATE_LOGON ou SEC_WINNT_AUTH_IDENTITY_EX2, la fonction doit marshaler les informations d’identification en tant que chaînes de caractères, retournées en tant que nom d’utilisateur, nom de domaine et chaînes de mot de passe. Le marshaling est effectué à l’aide d’une procédure spécifique. Lorsque dwFlags contient l’indicateur CRED_PACK_PROTECTED_CREDENTIALS, l’appelant doit s’exécuter dans la même session d’ouverture de session dans laquelle les informations d’identification ont été chiffrées.

Note

L’en-tête wincred.h définit CredUnPackAuthenticationBuffer comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows Vista [applications de bureau uniquement]
serveur minimum pris en charge Windows Server 2008 [applications de bureau uniquement]
plateforme cible Windows
d’en-tête wincred.h
bibliothèque Credui.lib
DLL Credui.dll