CryptGetDefaultProviderA 函式 (wincrypt.h)
語法
BOOL CryptGetDefaultProviderA(
[in] DWORD dwProvType,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] LPSTR pszProvName,
[in, out] DWORD *pcbProvName
);
參數
[in] dwProvType
要找到預設 CSP 名稱的提供者類型。
定義的提供者類型如下所示:
- 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
此參數保留供日後使用,且必須 NULL。
[in] dwFlags
定義下列旗標值。
價值 | 意義 |
---|---|
|
傳回指定型別的用戶內容預設 CSP。 |
|
傳回指定之型別的計算機預設 CSP。 |
[out] pszProvName
要接收預設 CSP 名稱之 Null 終止字元字串緩衝區的指標。
若要尋找緩衝區的大小以供記憶體設定之用,此參數可以 NULL。 如需詳細資訊,請參閱 擷取未知長度的數據。
[in, out] pcbProvName
DWORD 值的指標,指定 pszProvName 參數所指向之緩衝區的大小,以位元組為單位。 當函式傳回時,DWORD 值會包含儲存或儲存在緩衝區中的位元組數目。
傳回值
如果函式成功,則傳回值為非零值(TRUE)。
如果函式失敗,則傳回值為零 (FALSE)。 如需擴充錯誤資訊,請呼叫 getLastError
NTE 前面加上的錯誤碼是由所使用的特定 CSP 所產生。 可能的錯誤碼包括下列專案。
傳回碼 | 描述 |
---|---|
|
其中一個參數包含無效的值。 這通常是無效的指標。 |
|
名稱的緩衝區不夠大。 |
|
操作系統記憶體不足。 |
|
dwFlags 參數具有無法辨識的值。 |
言論
此函式會決定本機電腦或目前使用者目前所安裝 CSP 的預設值。 此資訊通常會向用戶顯示。
例子
下列範例會擷取PROV_RSA_FULL提供者類型的預設 CSP 名稱。 如需使用此函式的另一個範例,請參閱 範例 C 程式:列舉 CSP 提供者和提供者類型。
#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);
}
注意
wincrypt.h 標頭會根據 UNICODE 預處理器常數的定義,將 CryptGetDefaultProvider 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | wincrypt.h |
連結庫 | Advapi32.lib |
DLL | Advapi32.dll |