Функция 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
Определены следующие значения флагов.
[out] pszProvName
Указатель на буфер строки строки, завершаемой значением NULL, чтобы получить имя CSP по умолчанию.
Чтобы найти размер буфера для выделения памяти, этот параметр можно null. Дополнительные сведения см. в разделе получение данных неизвестной длины.
[in, out] pcbProvName
Указатель на значение DWORD, указывающее размер буфера в байтах, на который указывает параметр pszProvName. Когда функция возвращается, значение DWORD содержит количество байтов, хранящихся или хранящихся в буфере.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение ненулевое (TRUE).
Если функция завершается ошибкой, возвращаемое значение равно нулю (FALSE). Для получения расширенных сведений об ошибке вызовите GetLastError.
Код ошибки, предуставленный NTE, создается конкретным используемым поставщиком служб CSP. Возможные коды ошибок включают следующие коды.
Возвращаемый код | Описание |
---|---|
|
Один из параметров содержит недопустимое значение. Чаще всего это недопустимый указатель. |
|
Буфер для имени недостаточно велик. |
|
Операционная система не хватает памяти. |
|
Параметр |
Замечания
Эта функция определяет, какая установленная служба CSP в настоящее время задана в качестве значения по умолчанию для локального компьютера или текущего пользователя. Эта информация часто отображается пользователю.
Примеры
В следующем примере извлекается имя CSP по умолчанию для типа поставщика PROV_RSA_FULL. Другой пример, использующий эту функцию, см. в примере программы 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 определяет CryptGetDefaultProvider в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2003 [только классические приложения] |
целевая платформа | Виндоус |
заголовка | wincrypt.h |
библиотеки |
Advapi32.lib |
DLL | Advapi32.dll |
См. также
функции поставщика услуг