Fungsi CryptEnumProvidersA (wincrypt.h)
Kemungkinan CSP termasuk Penyedia Kriptografi Dasar Microsoft versi 1.0 dan Penyedia Kriptografi yang Ditingkatkan Microsoft versi 1.0.
Sintaks
BOOL CryptEnumProvidersA(
[in] DWORD dwIndex,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] DWORD *pdwProvType,
[out] LPSTR szProvName,
[in, out] DWORD *pcbProvName
);
Parameter
[in] dwIndex
Indeks penyedia berikutnya yang akan dijumlahkan.
[in] pdwReserved
Dicadangkan untuk penggunaan di masa mendatang dan harus NULL.
[in] dwFlags
Dicadangkan untuk penggunaan di masa mendatang dan harus nol.
[out] pdwProvType
Alamat nilai DWORD yang menunjuk jenis penyedia yang dijumlahkan.
[out] szProvName
Penunjuk ke buffer yang menerima data dari penyedia yang dijumlahkan. Ini adalah string termasuk karakter null yang mengakhiri.
Parameter ini bisa NULL untuk mengatur ukuran nama untuk tujuan alokasi memori. Untuk informasi selengkapnya, lihat Mengambil Data Dengan Panjang Tidak Diketahui.
[in, out] pcbProvName
Penunjuk ke nilai DWORD yang menentukan ukuran, dalam byte, dari buffer yang diacu oleh parameter pszProvName . Saat fungsi kembali, nilai DWORD berisi jumlah byte yang disimpan dalam buffer.
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan bukan nol (TRUE).
Jika fungsi gagal, nilai yang dikembalikan adalah nol (FALSE). Untuk informasi kesalahan yang diperluas, hubungi GetLastError.
Kode kesalahan yang diawali oleh NTE dihasilkan oleh CSP tertentu yang digunakan. Beberapa kemungkinan kode kesalahan mengikuti.
Menampilkan kode | Deskripsi |
---|---|
|
Buffer pszProvName tidak cukup besar untuk menahan nama penyedia. |
|
Tidak ada lagi item untuk dijumlahkan. |
|
Sistem operasi kehabisan memori. |
|
Parameter dwFlags memiliki nilai yang tidak dikenal. |
|
Ada yang salah dengan jenis pendaftaran. |
Keterangan
Fungsi ini menghitung penyedia yang tersedia di komputer. Jenis penyedia dapat dijumlahkan dengan menggunakan CryptEnumProviderTypes.
Contoh
Contoh berikut menunjukkan perulangan yang mencantumkan semua penyedia layanan kriptografi yang tersedia. Untuk contoh lain yang menggunakan fungsi CryptEnumProviders , lihat Contoh Program C: Menghitung Penyedia CSP dan Jenis Penyedia.
#include <stdio.h>
#include <windows.h>
#include <Wincrypt.h>
#pragma comment(lib, "advapi32.lib")
void main()
{
//---------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Declare and initialize variables.
DWORD cbName;
DWORD dwType;
DWORD dwIndex;
CHAR *pszName = NULL;
// Print header lines for providers.
printf("Listing Available Providers:\n");
printf("Provider type\tProvider Name\n");
printf("_____________\t__________________"
"___________________\n");
//---------------------------------------------------------------
// Loop through enumerating providers.
dwIndex = 0;
while(CryptEnumProviders(
dwIndex,
NULL,
0,
&dwType,
NULL,
&cbName
))
{
//-----------------------------------------------------------
// cbName returns the length of the name of the next
// provider. Allocate memory in a buffer to retrieve
// that name.
if (!(pszName = (LPTSTR)LocalAlloc(LMEM_ZEROINIT, cbName)))
{
printf("ERROR - LocalAlloc failed\n");
exit(1);
}
//-----------------------------------------------------------
// Get the provider name.
if (CryptEnumProviders(
dwIndex++,
NULL,
0,
&dwType,
pszName,
&cbName
))
{
printf (" %4.0d\t%s\n",dwType, pszName);
}
else
{
printf("ERROR - CryptEnumProviders failed.\n");
exit(1);
}
LocalFree(pszName);
} // End of while loop
printf("\nProvider types and provider names "
"have been listed.\n");
}
Catatan
Header wincrypt.h mendefinisikan CryptEnumProviders sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | wincrypt.h |
Pustaka | Advapi32.lib |
DLL | Advapi32.dll |