Fungsi CryptGetDefaultProviderA (wincrypt.h)
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:
- PROV_RSA_FULL
- PROV_RSA_SIG
- PROV_DSS
- PROV_DSS_DH
- PROV_DH_SCHANNEL
- PROV_FORTEZZA
- PROV_MS_EXCHANGE
- PROV_RSA_SCHANNEL
- PROV_SSL
[in] pdwReserved
Parameter ini dicadangkan untuk digunakan di masa mendatang dan harus NULL.
[in] dwFlags
Nilai bendera berikut 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.
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 |
---|---|
|
Salah satu parameter berisi nilai yang tidak valid. Ini paling sering merupakan pointer yang tidak valid. |
|
Buffer untuk namanya tidak cukup besar. |
|
Sistem operasi kehabisan memori. |
|
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 |