Função BCryptEnumContexts (bcrypt.h)
[BCryptEnumContexts está disponível para uso nos sistemas operacionais especificados na seção Requisitos. Ele pode estar alterado ou indisponível em versões subsequentes.]
A função BCryptEnumContexts obtém os identificadores dos contextos na tabela de configuração especificada.
Sintaxe
NTSTATUS BCryptEnumContexts(
[in] ULONG dwTable,
[in, out] ULONG *pcbBuffer,
[in, out] PCRYPT_CONTEXTS *ppBuffer
);
Parâmetros
[in] dwTable
Identifica a tabela de configuração da qual recuperar os contextos. Esse pode ser um dos valores a seguir.
Valor | Significado |
---|---|
|
Recupere os contextos da tabela de configuração do computador local. |
|
Esse valor não está disponível para uso. |
[in, out] pcbBuffer
O endereço de uma variável ULONG que, na entrada, contém o tamanho, em bytes, do buffer apontado por ppBuffer. Se esse tamanho não for grande o suficiente para manter o conjunto de identificadores de contexto, essa função falhará com STATUS_BUFFER_TOO_SMALL.
Depois que essa função retorna, esse valor contém o número de bytes que foram copiados para o buffer ppBuffer .
[in, out] ppBuffer
O endereço de um ponteiro para uma estrutura CRYPT_CONTEXTS que recebe o conjunto de contextos recuperados por essa função. O valor apontado pelo parâmetro pcbBuffer contém o tamanho desse buffer.
Se o valor apontado por esse parâmetro for NULL, essa função alocará a memória necessária. Essa memória deve ser liberada quando não for mais necessária passando esse ponteiro para a função BCryptFreeBuffer .
Se esse parâmetro for NULL, essa função colocará o tamanho necessário, em bytes, na variável apontada pelo parâmetro pcbBuffer e retornará STATUS_BUFFER_TOO_SMALL.
Retornar valor
Retorna um código status que indica o êxito ou a falha da função.
Os códigos de retorno possíveis incluem, mas não se limitam a, o seguinte.
Código de retorno | Descrição |
---|---|
|
A função foi bem-sucedida. |
|
Um ou mais dos parâmetros não são válidos. |
|
Ocorreu uma falha de alocação de memória. |
|
O parâmetro ppBuffer não é NULL e o valor apontado pelo parâmetro pcbBuffer não é grande o suficiente para manter o conjunto de contextos. |
Comentários
BCryptEnumContexts só pode ser chamado no modo de usuário.
Exemplos
O exemplo a seguir mostra como usar a função BCryptEnumContexts para alocar a memória para o buffer ppBuffer .
#ifndef NT_SUCCESS
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
#endif
NTSTATUS EnumContexts_SystemAlloc()
{
NTSTATUS status;
ULONG uSize = 0;
PCRYPT_CONTEXTS pContexts = NULL;
// Get the contexts for the local computer.
// CNG allocates the memory.
status = BCryptEnumContexts(CRYPT_LOCAL, &uSize, &pContexts);
if(NT_SUCCESS(status))
{
// Enumerate the context identifiers.
for(ULONG i = 0; i < pContexts->cContexts; i++)
{
wprintf(pContexts->rgpszContexts[i]);
wprintf(L"\n");
}
// Free the buffer.
BCryptFreeBuffer(pContexts);
}
return status;
}
O exemplo a seguir mostra como usar a função BCryptEnumContexts para alocar sua própria memória para o buffer ppBuffer .
#ifndef NT_SUCCESS
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
#endif
NTSTATUS EnumContexts_SelfAlloc()
{
NTSTATUS status;
ULONG uSize = 0;
// Get the required size of the buffer.
status = BCryptEnumContexts(CRYPT_LOCAL, &uSize, NULL);
if(STATUS_BUFFER_TOO_SMALL == status)
{
// Allocate the buffer.
PCRYPT_CONTEXTS pContexts = (PCRYPT_CONTEXTS)HeapAlloc(
GetProcessHeap(),
HEAP_ZERO_MEMORY,
uSize);
if(pContexts)
{
// Get the contexts for the local machine.
status = BCryptEnumContexts(
CRYPT_LOCAL,
&uSize,
&pContexts);
if(NT_SUCCESS((status))
{
// Enumerate the context identifiers.
for(ULONG i = 0; i < pContexts->cContexts; i++)
{
wprintf(pContexts->rgpszContexts[i]);
wprintf(L"\n");
}
}
// Free the buffer.
HeapFree(GetProcessHeap(), 0, pContexts);
pContexts = NULL;
}
else
{
status = STATUS_NO_MEMORY;
}
}
return status;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | bcrypt.h |
Biblioteca | Bcrypt.lib |
DLL | Bcrypt.dll |