Función CryptGetDefaultProviderA (wincrypt.h)
Sintaxis
BOOL CryptGetDefaultProviderA(
[in] DWORD dwProvType,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] LPSTR pszProvName,
[in, out] DWORD *pcbProvName
);
Parámetros
[in] dwProvType
Tipo de proveedor para el que se encuentra el nombre de CSP predeterminado.
Los tipos de proveedor definidos son los siguientes:
- 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
Este parámetro está reservado para uso futuro y debe ser NULL.
[in] dwFlags
Se definen los siguientes valores de marca.
[out] pszProvName
Puntero a un búfer de cadenas de caracteres terminada en null para recibir el nombre del CSP predeterminado.
Para buscar el tamaño del búfer con fines de asignación de memoria, este parámetro puede ser NULL. Para obtener más información, vea Recuperar datos de longitud desconocida.
[in, out] pcbProvName
Puntero a un valor DWORD que especifica el tamaño, en bytes, del búfer al que apunta el parámetro pszProvName . Cuando la función devuelve, el valor DWORD contiene el número de bytes almacenados o que se almacenarán en el búfer.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es distinto de cero (TRUE).
Si se produce un error en la función, el valor devuelto es cero (FALSE). Para obtener información de error extendida, llame a GetLastError.
El CÓDIGO de error precedido por NTE se genera mediante el CSP en particular que se usa. Los posibles códigos de error incluyen lo siguiente.
Código devuelto | Descripción |
---|---|
|
Uno de los parámetros contiene un valor que no es válido. Suele ser un puntero que no es válido. |
|
El búfer del nombre no es lo suficientemente grande. |
|
El sistema operativo se quedó sin memoria. |
|
El parámetro dwFlags tiene un valor no reconocido. |
Comentarios
Esta función determina qué CSP instalado se establece actualmente como valor predeterminado para el equipo local o el usuario actual. Esta información se muestra a menudo al usuario.
Ejemplos
En el ejemplo siguiente se recupera el nombre del CSP predeterminado para el tipo de proveedor de PROV_RSA_FULL. Para obtener otro ejemplo que use esta función, vea Programa C de ejemplo: Enumeración de proveedores y tipos de proveedor de 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);
}
Nota
El encabezado wincrypt.h define CryptGetDefaultProvider como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.
Requisitos
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | wincrypt.h |
Library | Advapi32.lib |
Archivo DLL | Advapi32.dll |