BCryptEnumContextFunctions, fonction (bcrypt.h)
La fonction BCryptEnumContextFunctions obtient les fonctions de chiffrement d’un contexte dans la table de configuration spécifiée.
Syntaxe
NTSTATUS BCryptEnumContextFunctions(
[in] ULONG dwTable,
[in] LPCWSTR pszContext,
[in] ULONG dwInterface,
[in, out] ULONG *pcbBuffer,
[in, out] PCRYPT_CONTEXT_FUNCTIONS *ppBuffer
);
Paramètres
[in] dwTable
Identifie la table de configuration à partir de laquelle récupérer les fonctions de contexte. Il peut s’agir de l’une des valeurs suivantes.
Valeur | Signification |
---|---|
|
Récupérez les fonctions de contexte à partir de la table de configuration de l’ordinateur local. |
|
Cette valeur n’est pas disponible pour une utilisation. |
[in] pszContext
Pointeur vers une chaîne Unicode terminée par un caractère Null qui contient l’identificateur du contexte pour lequel énumérer les fonctions.
[in] dwInterface
Identifie l’interface de chiffrement pour laquelle récupérer les fonctions. Il peut s’agir de l’une des valeurs suivantes.
[in, out] pcbBuffer
Adresse d’une variable ULONG qui, à l’entrée, contient la taille, en octets, de la mémoire tampon pointée par ppBuffer. Si cette taille n’est pas suffisamment grande pour contenir l’ensemble d’identificateurs de contexte, cette fonction échoue avec STATUS_BUFFER_TOO_SMALL.
Une fois cette fonction retournée, cette valeur contient le nombre d’octets qui ont été copiés dans la mémoire tampon ppBuffer .
[in, out] ppBuffer
Adresse d’un pointeur vers une structure CRYPT_CONTEXT_FUNCTIONS qui reçoit l’ensemble de fonctions de contexte récupérées par cette fonction. La valeur pointée par le paramètre pcbBuffer contient la taille de cette mémoire tampon.
Si la valeur pointée par ce paramètre est NULL, cette fonction alloue la mémoire requise. Cette mémoire doit être libérée quand elle n’est plus nécessaire en passant ce pointeur à la fonction BCryptFreeBuffer .
Si ce paramètre a la valeur NULL, cette fonction place la taille requise, en octets, dans la variable pointée par le paramètre pcbBuffer et retourne STATUS_BUFFER_TOO_SMALL.
Valeur retournée
Retourne un code status qui indique la réussite ou l’échec de la fonction.
Les codes de retour possibles incluent, sans s’y limiter, les éléments suivants.
Code de retour | Description |
---|---|
|
La fonction a réussi. |
|
Le paramètre ppBuffer n’est pas NULL et la valeur pointée par le paramètre pcbBuffer n’est pas suffisamment grande pour contenir l’ensemble de contextes. |
|
Un ou plusieurs paramètres ne sont pas valides. |
|
Un échec d’allocation de mémoire s’est produit. |
|
Aucune fonction de contexte qui correspond aux critères spécifiés n’a été trouvée. |
Remarques
BCryptEnumContextFunctions peut être appelé uniquement en mode utilisateur.
Exemples
L’exemple suivant montre comment utiliser la fonction BCryptEnumContextFunctions pour énumérer les fonctions de stockage clés pour tous les contextes de la table de configuration de l’ordinateur local.
#include <windows.h>
#include <stdio.h>
#include <Bcrypt.h>
#pragma comment(lib, "Bcrypt.lib")
#ifndef NT_SUCCESS
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
#endif
NTSTATUS EnumContextFunctions()
{
NTSTATUS status;
ULONG uSize = 0;
PCRYPT_CONTEXTS pContexts = NULL;
// Get the contexts for the local machine.
// CNG will allocate the memory for us.
status = BCryptEnumContexts(CRYPT_LOCAL, &uSize, &pContexts);
if(NT_SUCCESS(status))
{
// Enumerate the context identifiers.
for(ULONG uContextIndex = 0;
uContextIndex < pContexts->cContexts;
uContextIndex++)
{
wprintf(L"Context functions for %s:\n",
pContexts->rgpszContexts[uContextIndex]);
// Get the functions for this context.
// CNG will allocate the memory for us.
PCRYPT_CONTEXT_FUNCTIONS pContextFunctions = NULL;
status = BCryptEnumContextFunctions(
CRYPT_LOCAL,
pContexts->rgpszContexts[uContextIndex],
NCRYPT_SCHANNEL_INTERFACE,
&uSize,
&pContextFunctions);
if(NT_SUCCESS(status))
{
// Enumerate the functions.
for(ULONG i = 0;
i < pContextFunctions->cFunctions;
i++)
{
wprintf(L"\t%s\n",
pContextFunctions->rgpszFunctions[i]);
}
// Free the context functions buffer.
BCryptFreeBuffer(pContextFunctions);
}
}
// Free the contexts buffer.
BCryptFreeBuffer(pContexts);
}
return status;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | bcrypt.h |
Bibliothèque | Bcrypt.lib |
DLL | Bcrypt.dll |