Fungsi CryptEnumProviderTypesA (wincrypt.h)
Jenis penyedia termasuk PROV_RSA_FULL, PROV_RSA_SCHANNEL, dan PROV_DSS.
Sintaks
BOOL CryptEnumProviderTypesA(
[in] DWORD dwIndex,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] DWORD *pdwProvType,
[out] LPSTR szTypeName,
[in, out] DWORD *pcbTypeName
);
Parameter
[in] dwIndex
Indeks jenis penyedia berikutnya yang akan dijumlahkan.
[in] pdwReserved
Dicadangkan untuk digunakan di masa mendatang dan harus NULL.
[in] dwFlags
Dicadangkan untuk digunakan di masa mendatang dan harus nol.
[out] pdwProvType
Alamat nilai DWORD yang menunjuk jenis penyedia enumerasi.
[out] szTypeName
Penunjuk ke buffer yang menerima data dari jenis penyedia yang dijumlahkan. Ini adalah string termasuk karakter NULL yang mengakhiri. Beberapa jenis penyedia tidak memiliki nama tampilan, dan dalam hal ini tidak ada nama yang dikembalikan dan nilai yang dikembalikan yang ditujukan oleh pcbTypeName adalah nol.
Parameter ini bisa null untuk mendapatkan ukuran nama untuk tujuan alokasi memori. Untuk informasi selengkapnya, lihat Mengambil Data Dengan Panjang Tidak Diketahui.
[in, out] pcbTypeName
Penunjuk ke nilai DWORD yang menentukan ukuran, dalam byte, dari buffer yang diacu oleh parameter pszTypeName . Saat fungsi kembali, nilai DWORD berisi jumlah byte yang disimpan atau disimpan dalam buffer. Beberapa jenis penyedia tidak memiliki nama tampilan, dan dalam hal ini tidak ada nama yang dikembalikan dan nilai yang dikembalikan yang ditujukan oleh pcbTypeName adalah nol.
Mengembalikan nilai
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 |
---|---|
|
Tidak ada lagi item untuk dijumlahkan. |
|
Sistem operasi kehabisan memori. |
|
Parameter dwFlags memiliki nilai yang tidak dikenali. |
|
Ada yang salah dengan jenis pendaftaran. |
Keterangan
Fungsi ini menghitung tipe penyedia yang tersedia pada komputer. Penyedia untuk jenis penyedia tertentu dapat dijumlahkan menggunakan CryptEnumProviders.
Contoh
Contoh berikut menunjukkan perulangan yang mencantumkan semua jenis penyedia layanan kriptografi yang tersedia.
#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 dwIndex;
DWORD dwType;
DWORD cbName;
LPTSTR pszName;
//--------------------------------------------------------------
// Print header lines for provider types.
printf("Listing Available Provider Types:\n");
printf("Provider type\tProvider Type Name\n");
printf("_____________\t_____________________________________\n");
// Loop through enumerating provider types.
dwIndex = 0;
while(CryptEnumProviderTypes(
dwIndex,
NULL,
0,
&dwType,
NULL,
&cbName
))
{
//-----------------------------------------------------------
// cbName returns the length of the name of the next
// provider type. 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 type name.
if (CryptEnumProviderTypes(
dwIndex++,
NULL,
NULL,
&dwType,
pszName,
&cbName))
{
printf (" %4.0d\t%s\n",dwType, pszName);
}
else
{
printf("ERROR - CryptEnumProviderTypes\n");
exit(1);
}
LocalFree(pszName);
} // End of while loop.
}
Untuk contoh lain yang menggunakan fungsi CryptEnumProviderTypes , lihat Contoh Program C: Menghitung Penyedia CSP dan Jenis Penyedia.
Catatan
Header wincrypt.h mendefinisikan CryptEnumProviderTypes 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 |