Функция 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. Возможные коды ошибок включают следующие.
Код возврата | Описание |
---|---|
|
Один из параметров содержит недопустимое значение. Чаще всего это недопустимый указатель. |
|
Буфер для имени недостаточно велик. |
|
В операционной системе не хватает памяти. |
|
Параметр dwFlags имеет нераспознанное значение. |
Комментарии
Эта функция определяет, какой установленный поставщик служб 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 [только классические приложения] |
Целевая платформа | Windows |
Header | wincrypt.h |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |