Fungsi BCryptEnumContexts (bcrypt.h)
[BCryptEnumContexts tersedia untuk digunakan dalam sistem operasi yang ditentukan di bagian Persyaratan. Ini mungkin diubah atau tidak tersedia dalam versi berikutnya.]
Fungsi BCryptEnumContexts mendapatkan pengidentifikasi konteks dalam tabel konfigurasi yang ditentukan.
Sintaks
NTSTATUS BCryptEnumContexts(
[in] ULONG dwTable,
[in, out] ULONG *pcbBuffer,
[in, out] PCRYPT_CONTEXTS *ppBuffer
);
Parameter
[in] dwTable
Mengidentifikasi tabel konfigurasi untuk mengambil konteks. Ini bisa menjadi salah satu nilai berikut.
Nilai | Makna |
---|---|
|
Ambil konteks dari tabel konfigurasi komputer lokal. |
|
Nilai ini tidak tersedia untuk digunakan. |
[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_CONTEXTS yang menerima serangkaian 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. |
|
Satu atau beberapa parameter tidak valid. |
|
Terjadi kegagalan alokasi memori. |
|
Parameter ppBuffer bukan NULL, dan nilai yang ditunjukkan oleh parameter pcbBuffer tidak cukup besar untuk menahan serangkaian konteks. |
Keterangan
BCryptEnumContexts hanya dapat dipanggil dalam mode pengguna.
Contoh
Contoh berikut menunjukkan cara menggunakan fungsi BCryptEnumContexts untuk mengalokasikan memori untuk 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;
}
Contoh berikut menunjukkan cara menggunakan fungsi BCryptEnumContexts untuk mengalokasikan memori Anda sendiri untuk 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;
}
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