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 |
---|---|
|
Ambil fungsi konteks dari tabel konfigurasi komputer lokal. |
|
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.
[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 |
---|---|
|
Fungsi berhasil. |
|
Parameter ppBuffer tidak NULL, dan nilai yang ditunjukkan oleh parameter pcbBuffer tidak cukup besar untuk menahan set konteks. |
|
Satu atau beberapa parameter tidak valid. |
|
Terjadi kegagalan alokasi memori. |
|
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 |