Fungsi BCryptEnumContextFunctionProviders (bcrypt.h)
Fungsi BCryptEnumContextFunctionProviders mendapatkan penyedia untuk fungsi kriptografi untuk konteks dalam tabel konfigurasi yang ditentukan.
Sintaks
NTSTATUS BCryptEnumContextFunctionProviders(
[in] ULONG dwTable,
[in] LPCWSTR pszContext,
[in] ULONG dwInterface,
[in] LPCWSTR pszFunction,
[in, out] ULONG *pcbBuffer,
[in, out] PCRYPT_CONTEXT_FUNCTION_PROVIDERS *ppBuffer
);
Parameter
[in] dwTable
Mengidentifikasi tabel konfigurasi untuk mengambil penyedia 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 penyedia fungsi.
[in] dwInterface
Mengidentifikasi antarmuka kriptografi untuk mengambil penyedia fungsi. Ini bisa menjadi salah satu nilai berikut.
Nilai | Makna |
---|---|
|
Ambil penyedia fungsi enkripsi asimetris. |
|
Ambil penyedia fungsi cipher. |
|
Ambil penyedia fungsi hash . |
|
Ambil penyedia fungsi generator angka acak. |
|
Ambil penyedia fungsi perjanjian rahasia. |
|
Ambil penyedia fungsi tanda tangan. |
|
Ambil penyedia fungsi penyimpanan utama. |
|
Ambil penyedia fungsi Schannel. |
[in] pszFunction
Penunjuk ke string Unicode yang dihentikan null yang berisi pengidentifikasi fungsi untuk menghitung penyedia.
[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_FUNCTION_PROVIDERS yang menerima kumpulan penyedia fungsi konteks yang diambil oleh fungsi ini. Nilai yang diacu 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 dibebaskan 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 bukan NULL, dan nilai yang ditunjukkan oleh parameter pcbBuffer tidak cukup besar untuk menahan serangkaian konteks. |
|
Satu atau beberapa parameter tidak valid. |
|
Terjadi kegagalan alokasi memori. |
|
Tidak ada penyedia fungsi konteks yang cocok dengan kriteria yang ditentukan yang ditemukan. |
Keterangan
BCryptEnumContextFunctionProviders hanya dapat dipanggil dalam mode pengguna.
Contoh
Contoh berikut menunjukkan cara menggunakan fungsi BCryptEnumContextFunctionProviders untuk menghitung penyedia untuk semua fungsi penyimpanan utama untuk semua konteks dalam tabel konfigurasi komputer lokal.
#include <windows.h>
#include <stdio.h>
#include <ntstatus.h>
#include <Bcrypt.h>
#pragma comment(lib, "Bcrypt.lib")
#ifndef NT_SUCCESS
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
#endif
NTSTATUS EnumContextFunctionProviders()
{
NTSTATUS status;
ULONG uSize = 0;
ULONG uTable = CRYPT_LOCAL;
PCRYPT_CONTEXTS pContexts = NULL;
// Get the contexts for the local machine.
// CNG will allocate the memory for us.
status = BCryptEnumContexts(uTable, &uSize, &pContexts);
if(NT_SUCCESS(status))
{
// Enumerate the context identifiers.
for(ULONG a = 0;
a < pContexts->cContexts;
a++)
{
ULONG uInterface = NCRYPT_SCHANNEL_INTERFACE;
wprintf(L"Context functions for %s:\n",
pContexts->rgpszContexts[a]);
// Get the functions for this context.
// CNG will allocate the memory for us.
PCRYPT_CONTEXT_FUNCTIONS pContextFunctions = NULL;
status = BCryptEnumContextFunctions(
uTable,
pContexts->rgpszContexts[a],
uInterface,
&uSize,
&pContextFunctions);
if(NT_SUCCESS(status))
{
// Enumerate the functions.
for(ULONG b = 0;
b < pContextFunctions->cFunctions;
b++)
{
wprintf(L"\tFunction providers for %s:\n",
pContextFunctions->rgpszFunctions[b]);
// Get the providers for this function.
PCRYPT_CONTEXT_FUNCTION_PROVIDERS pProviders;
pProviders = NULL;
status = BCryptEnumContextFunctionProviders(
uTable,
pContexts->rgpszContexts[a],
uInterface,
pContextFunctions->rgpszFunctions[b],
&uSize,
&pProviders);
if(NT_SUCCESS(status))
{
for(ULONG c = 0;
c < pProviders->cProviders;
c++)
{
wprintf(L"\t\t%s\n",
pProviders->rgpszProviders[c]);
}
}
else if(STATUS_NOT_FOUND == status)
{
wprintf(L"\t\tNone found.\n");
}
}
// 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk