Funzione BCryptEnumContextFunctions (bcrypt.h)

La funzione BCryptEnumContextFunctions ottiene le funzioni di crittografia per un contesto nella tabella di configurazione specificata.

Sintassi

NTSTATUS BCryptEnumContextFunctions(
  [in]      ULONG                    dwTable,
  [in]      LPCWSTR                  pszContext,
  [in]      ULONG                    dwInterface,
  [in, out] ULONG                    *pcbBuffer,
  [in, out] PCRYPT_CONTEXT_FUNCTIONS *ppBuffer
);

Parametri

[in] dwTable

Identifica la tabella di configurazione da cui recuperare le funzioni di contesto. Questo può essere uno dei valori seguenti.

Valore Significato
CRYPT_LOCAL
Recuperare le funzioni di contesto dalla tabella di configurazione del computer locale.
CRYPT_DOMAIN
Questo valore non è disponibile per l'uso.

[in] pszContext

Puntatore a una stringa Unicode con terminazione null contenente l'identificatore del contesto per enumerare le funzioni per.

[in] dwInterface

Identifica l'interfaccia crittografica per recuperare le funzioni per. Questo può essere uno dei valori seguenti.

Valore Significato
BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE
Recuperare le funzioni di crittografia asimmetrica.
BCRYPT_CIPHER_INTERFACE
Recuperare le funzioni di crittografia.
BCRYPT_HASH_INTERFACE
Recuperare le funzioni hash.
BCRYPT_RNG_INTERFACE
Recuperare le funzioni del generatore di numeri casuali.
BCRYPT_SECRET_AGREEMENT_INTERFACE
Recuperare le funzioni del contratto segreto.
BCRYPT_SIGNATURE_INTERFACE
Recuperare le funzioni di firma.
NCRYPT_KEY_STORAGE_INTERFACE
Recuperare le funzioni di archiviazione delle chiavi.
NCRYPT_SCHANNEL_INTERFACE
Recuperare le funzioni Schannel.

[in, out] pcbBuffer

L'indirizzo di una variabile ULONG che, nella voce, contiene le dimensioni, in byte, del buffer a cui punta ppBuffer. Se questa dimensione non è sufficiente per contenere il set di identificatori di contesto, questa funzione avrà esito negativo con STATUS_BUFFER_TOO_SMALL.

Dopo che questa funzione restituisce, questo valore contiene il numero di byte copiati nel buffer ppBuffer .

[in, out] ppBuffer

Indirizzo di un puntatore a una struttura di CRYPT_CONTEXT_FUNCTIONS che riceve il set di funzioni di contesto recuperate da questa funzione. Il valore indicato dal parametro pcbBuffer contiene le dimensioni di questo buffer.

Se il valore puntato da questo parametro è NULL, questa funzione allocherà la memoria necessaria. Questa memoria deve essere liberata quando non è più necessaria passando questo puntatore alla funzione BCryptFreeBuffer .

Se questo parametro è NULL, questa funzione inserisce le dimensioni necessarie, in byte, nella variabile a cui punta il parametro pcbBuffer e restituisce STATUS_BUFFER_TOO_SMALL.

Valore restituito

Restituisce un codice di stato che indica l'esito positivo o negativo della funzione.

I codici restituiti possibili includono, ma non sono limitati a, i seguenti.

Codice restituito Descrizione
STATUS_SUCCESS
La funzione ha avuto esito positivo.
STATUS_BUFFER_TOO_SMALL
Il parametro ppBuffer non è NULL e il valore a cui punta il parametro pcbBuffer non è sufficiente per contenere il set di contesti.
STATUS_INVALID_PARAMETER
Uno o più parametri non sono validi.
STATUS_NO_MEMORY
Si è verificato un errore di allocazione della memoria.
STATUS_NOT_FOUND
Non sono state trovate funzioni di contesto che corrispondono ai criteri specificati.

Commenti

BCryptEnumContextFunctions può essere chiamato solo in modalità utente.

Esempio

Nell'esempio seguente viene illustrato come usare la funzione BCryptEnumContextFunctions per enumerare le funzioni di archiviazione chiave per tutti i contesti nella tabella di configurazione del computer locale.

#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;
}

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione bcrypt.h
Libreria Bcrypt.lib
DLL Bcrypt.dll

Vedi anche

CRYPT_CONTEXT_FUNCTIONS