Fungsi BCryptEnumContextFunctions (bcrypt.h)

Fungsi BCryptEnumContextFunctions mendapatkan fungsi kriptografi untuk konteks dalam tabel konfigurasi yang ditentukan.

Sintaks

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

Parameter

[in] dwTable

Mengidentifikasi tabel konfigurasi untuk mengambil fungsi konteks. Ini bisa menjadi salah satu nilai berikut.

Nilai Makna
CRYPT_LOCAL
Ambil fungsi konteks dari tabel konfigurasi komputer lokal.
CRYPT_DOMAIN
Nilai ini tidak tersedia untuk digunakan.

[in] pszContext

Penunjuk ke string Unicode yang dihentikan null yang berisi pengidentifikasi konteks untuk menghitung fungsi.

[in] dwInterface

Mengidentifikasi antarmuka kriptografi untuk mengambil fungsi. Ini bisa menjadi salah satu nilai berikut.

Nilai Makna
BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE
Ambil fungsi enkripsi asimetris.
BCRYPT_CIPHER_INTERFACE
Ambil fungsi cipher.
BCRYPT_HASH_INTERFACE
Ambil fungsi hash.
BCRYPT_RNG_INTERFACE
Ambil fungsi generator angka acak.
BCRYPT_SECRET_AGREEMENT_INTERFACE
Ambil fungsi perjanjian rahasia.
BCRYPT_SIGNATURE_INTERFACE
Ambil fungsi tanda tangan.
NCRYPT_KEY_STORAGE_INTERFACE
Ambil fungsi penyimpanan utama.
NCRYPT_SCHANNEL_INTERFACE
Ambil fungsi Schannel.

[in, out] pcbBuffer

Alamat variabel ULONG yang, pada entri, berisi ukuran, dalam byte, dari buffer yang diacu oleh ppBuffer. Jika ukuran ini tidak cukup besar untuk menahan kumpulan pengidentifikasi konteks, fungsi ini akan gagal dengan STATUS_BUFFER_TOO_SMALL.

Setelah fungsi ini kembali, nilai ini berisi jumlah byte yang disalin ke buffer ppBuffer .

[in, out] ppBuffer

Alamat penunjuk ke struktur CRYPT_CONTEXT_FUNCTIONS yang menerima serangkaian fungsi konteks yang diambil oleh fungsi ini. Nilai yang ditujukkan oleh parameter pcbBuffer berisi ukuran buffer ini.

Jika nilai yang ditunjukkan oleh parameter ini adalah NULL, fungsi ini akan mengalokasikan memori yang diperlukan. Memori ini harus dikosongkan ketika tidak lagi diperlukan dengan meneruskan pointer ini ke fungsi BCryptFreeBuffer .

Jika parameter ini NULL, fungsi ini akan menempatkan ukuran yang diperlukan, dalam byte, dalam variabel yang ditunjukkan oleh parameter pcbBuffer dan mengembalikan STATUS_BUFFER_TOO_SMALL.

Nilai kembali

Mengembalikan kode status yang menunjukkan keberhasilan atau kegagalan fungsi.

Kemungkinan kode pengembalian termasuk, tetapi tidak terbatas pada, berikut ini.

Menampilkan kode Deskripsi
STATUS_SUCCESS
Fungsi berhasil.
STATUS_BUFFER_TOO_SMALL
Parameter ppBuffer tidak NULL, dan nilai yang ditunjukkan oleh parameter pcbBuffer tidak cukup besar untuk menahan set konteks.
STATUS_INVALID_PARAMETER
Satu atau beberapa parameter tidak valid.
STATUS_NO_MEMORY
Terjadi kegagalan alokasi memori.
STATUS_NOT_FOUND
Tidak ada fungsi konteks yang cocok dengan kriteria yang ditentukan yang ditemukan.

Keterangan

BCryptEnumContextFunctions hanya dapat dipanggil dalam mode pengguna.

Contoh

Contoh berikut menunjukkan cara menggunakan fungsi BCryptEnumContextFunctions untuk menghitung fungsi penyimpanan utama untuk semua konteks dalam tabel konfigurasi komputer lokal.

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Target Platform Windows
Header bcrypt.h
Pustaka Bcrypt.lib
DLL Bcrypt.dll

Lihat juga

CRYPT_CONTEXT_FUNCTIONS