Función BCryptEnumContextFunctions (bcrypt.h)
La función BCryptEnumContextFunctions obtiene las funciones criptográficas de un contexto en la tabla de configuración especificada.
Sintaxis
NTSTATUS BCryptEnumContextFunctions(
[in] ULONG dwTable,
[in] LPCWSTR pszContext,
[in] ULONG dwInterface,
[in, out] ULONG *pcbBuffer,
[in, out] PCRYPT_CONTEXT_FUNCTIONS *ppBuffer
);
Parámetros
[in] dwTable
Identifica la tabla de configuración de la que se van a recuperar las funciones de contexto. Puede ser uno de los valores siguientes.
Valor | Significado |
---|---|
|
Recupere las funciones de contexto de la tabla de configuración del equipo local. |
|
Este valor no está disponible para su uso. |
[in] pszContext
Puntero a una cadena Unicode terminada en null que contiene el identificador del contexto para el que se van a enumerar las funciones.
[in] dwInterface
Identifica la interfaz criptográfica para la que se recuperan las funciones. Puede ser uno de los valores siguientes.
[in, out] pcbBuffer
La dirección de una variable de ULONG que, en la entrada, contiene el tamaño, en bytes, del búfer al que apunta ppBuffer. Si este tamaño no es lo suficientemente grande como para contener el conjunto de identificadores de contexto, se producirá un error en esta función con STATUS_BUFFER_TOO_SMALL.
Una vez que se devuelve esta función, este valor contiene el número de bytes que se copiaron en el búfer ppBuffer .
[in, out] ppBuffer
Dirección de un puntero a una estructura de CRYPT_CONTEXT_FUNCTIONS que recibe el conjunto de funciones de contexto recuperadas por esta función. El valor al que apunta el parámetro pcbBuffer contiene el tamaño de este búfer.
Si el valor al que apunta este parámetro es NULL, esta función asignará la memoria necesaria. Esta memoria debe liberarse cuando ya no sea necesaria pasando este puntero a la función BCryptFreeBuffer .
Si este parámetro es NULL, esta función colocará el tamaño necesario, en bytes, en la variable a la que apunta el parámetro pcbBuffer y devolverá STATUS_BUFFER_TOO_SMALL.
Valor devuelto
Devuelve un código de estado que indica el éxito o error de la función.
Entre los posibles códigos de retorno se incluyen, entre otros, los siguientes.
Código devuelto | Descripción |
---|---|
|
La función se realizó correctamente. |
|
El parámetro ppBuffer no es NULL y el valor al que apunta el parámetro pcbBuffer no es lo suficientemente grande como para contener el conjunto de contextos. |
|
Uno o más parámetros no son válidos. |
|
Error de asignación de memoria. |
|
No se encontraron funciones de contexto que coincidan con los criterios especificados. |
Comentarios
Solo se puede llamar a BCryptEnumContextFunctions en modo de usuario.
Ejemplos
En el ejemplo siguiente se muestra cómo usar la función BCryptEnumContextFunctions para enumerar las funciones de almacenamiento de claves para todos los contextos de la tabla de configuración del equipo 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;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2008 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | bcrypt.h |
Library | Bcrypt.lib |
Archivo DLL | Bcrypt.dll |