Fungsi CryptGetDefaultProviderA (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 CryptGetDefaultProvider menemukan penyedia layanan kriptografi default (CSP) dari jenis penyedia tertentu untuk komputer lokal atau pengguna saat ini. Nama CSP default untuk jenis penyedia yang ditentukan dalam parameter dwProvType dikembalikan dalam buffer pszProvName .

Sintaks

BOOL CryptGetDefaultProviderA(
  [in]      DWORD dwProvType,
  [in]      DWORD *pdwReserved,
  [in]      DWORD dwFlags,
  [out]     LPSTR pszProvName,
  [in, out] DWORD *pcbProvName
);

Parameter

[in] dwProvType

Jenis penyedia tempat nama CSP default ditemukan.

Jenis penyedia yang ditentukan adalah sebagai berikut:

[in] pdwReserved

Parameter ini dicadangkan untuk digunakan di masa mendatang dan harus NULL.

[in] dwFlags

Nilai bendera berikut ditentukan.

Nilai Makna
CRYPT_USER_DEFAULT
0x00000002
Mengembalikan CSP default konteks pengguna dari jenis yang ditentukan.
CRYPT_MACHINE_DEFAULT
0x00000001
Mengembalikan CSP default komputer dari jenis yang ditentukan.

[out] pszProvName

Penunjuk ke buffer string karakter yang dihentikan null untuk menerima nama CSP default.

Untuk menemukan ukuran buffer untuk tujuan alokasi memori, parameter ini bisa NULL. 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 atau disimpan dalam buffer.

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. Kemungkinan kode kesalahan termasuk yang berikut ini.

Menampilkan kode Deskripsi
ERROR_INVALID_PARAMETER
Salah satu parameter berisi nilai yang tidak valid. Ini paling sering merupakan pointer yang tidak valid.
ERROR_MORE_DATA
Buffer untuk namanya tidak cukup besar.
ERROR_NOT_ENOUGH_MEMORY
Sistem operasi kehabisan memori.
NTE_BAD_FLAGS
Parameter dwFlags memiliki nilai yang tidak dikenali.

Keterangan

Fungsi ini menentukan CSP terinstal mana yang saat ini ditetapkan sebagai default untuk komputer lokal atau pengguna saat ini. Informasi ini sering ditampilkan kepada pengguna.

Contoh

Contoh berikut mengambil nama CSP default untuk jenis penyedia PROV_RSA_FULL. Untuk contoh lain yang menggunakan fungsi ini, lihat Contoh Program C: Menghitung Penyedia CSP dan Jenis Penyedia.

#include <stdio.h>
#include <windows.h>
#include <Wincrypt.h>
#pragma comment(lib, "crypt32.lib")

void main()
{

    DWORD       cbProvName=0;
    LPTSTR      pbProvName=NULL;
    // Copyright (C) Microsoft.  All rights reserved.
    // Get the length of the RSA_FULL default provider name.
    if (!(CryptGetDefaultProvider(
         PROV_RSA_FULL, 
         NULL, 
         CRYPT_MACHINE_DEFAULT,
         NULL, 
         &cbProvName))) 
    { 
      printf("Error getting the length of the default "
          "provider name.\n");
      exit(1);
    }

    // Allocate local memory for the name of the default provider.
    if (!(pbProvName = (LPTSTR)LocalAlloc(LMEM_ZEROINIT, 
        cbProvName)))
    {
        printf("Error during memory allocation for "
            "provider name.\n");
        exit(1);
    }

    // Get the default provider name.
    if (CryptGetDefaultProvider(
        PROV_RSA_FULL, 
        NULL, 
        CRYPT_MACHINE_DEFAULT,
        pbProvName,
        &cbProvName)) 
    {
        printf("The default provider name is %s\n",pbProvName);
    }
    else
    {
        printf("Getting the name of the provider failed.\n");
        exit(1);
    }

    // Free resources when done.
    LocalFree(pbProvName);

}

Catatan

Header wincrypt.h mendefinisikan CryptGetDefaultProvider 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

   
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

CryptSetProvider

CryptSetProviderEx

Fungsi Penyedia Layanan