Bagikan melalui


Fungsi CryptEnumProviderTypesA (wincrypt.h)

Penting API ini tidak digunakan lagi. Perangkat lunak baru dan yang sudah ada harus mulai menggunakan Cryptography Next Generation API. Microsoft dapat menghapus API ini dalam rilis mendatang.
 
Fungsi CryptEnumProviderTypes mengambil jenis penyedia layanan kriptografi (CSP) pertama atau berikutnya yang didukung di komputer. Digunakan dalam perulangan, fungsi ini mengambil secara berurutan semua jenis CSP yang tersedia di komputer.

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.

Catatan Saat memproses data yang dikembalikan dalam buffer, aplikasi harus menggunakan ukuran aktual data yang dikembalikan. Ukuran aktual bisa sedikit lebih kecil dari ukuran buffer yang ditentukan pada input. (Pada input, ukuran buffer biasanya ditentukan cukup besar untuk memastikan bahwa data output terbesar yang mungkin cocok di buffer.) Pada output, variabel yang diacu oleh parameter ini diperbarui untuk mencerminkan ukuran aktual data yang disalin ke buffer.
 

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
ERROR_NO_MORE_ITEMS
Tidak ada lagi item untuk dijumlahkan.
ERROR_NOT_ENOUGH_MEMORY
Sistem operasi kehabisan memori.
NTE_BAD_FLAGS
Parameter dwFlags memiliki nilai yang tidak dikenali.
NTE_FAIL
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

Lihat juga

CryptEnumProviders

Fungsi Penyedia Layanan