Función CertGetStoreProperty (wincrypt.h)

La función CertGetStoreProperty recupera una propiedad store.

Sintaxis

BOOL CertGetStoreProperty(
  [in]      HCERTSTORE hCertStore,
  [in]      DWORD      dwPropId,
  [out]     void       *pvData,
  [in, out] DWORD      *pcbData
);

Parámetros

[in] hCertStore

Identificador de un almacén de certificados abierto.

[in] dwPropId

Indica uno de los intervalos de propiedades del almacén. Hay una propiedad de almacén predefinida, CERT_STORE_LOCALIZED_NAME_PROP_ID, el nombre localizado del almacén.

Las propiedades definidas por el usuario deben estar fuera del intervalo actual de valores para las propiedades de contexto predefinidas. Actualmente, los valores dwPropId definidos por el usuario comienzan en 4096.

[out] pvData

Puntero a un búfer que recibe los datos según lo determinado por dwPropId. Para CERT_STORE_LOCALIZED_NAME_PROP_ID, este es el nombre localizado del almacén y pvData apunta a una cadena de caracteres anchos Unicode terminada en null. Para otros dwPropIds, pvData apunta a una matriz de bytes.

Este parámetro puede ser NULL para establecer el tamaño de esta información con fines de asignación de memoria. Para obtener más información, vea Recuperar datos de longitud desconocida.

[in, out] pcbData

Puntero a un valor DWORD que especifica el tamaño, en bytes, del búfer pvData . Cuando la función devuelve, el valor DWORD contiene el número de bytes almacenados en el búfer.

Valor devuelto

Si la función se ejecuta correctamente, la función devuelve un valor distinto de cero.

Si se produce un error en la función, devuelve cero.

Si se encuentra la propiedad store, la función devuelve un valor distinto de cero, pvData apunta a la propiedad y pcbData apunta a la longitud de la cadena. Si no se encuentra la propiedad store, la función devuelve cero y GetLastError devuelve CRYPT_E_NOT_FOUND.

Comentarios

Los identificadores de propiedad de la tienda son propiedades aplicables a un almacén completo. No son propiedades en un certificado individual, una lista de revocación de certificados (CRL) ni un contexto de lista de confianza de certificados (CTL). Actualmente, no se conservan propiedades de almacén.

Para buscar el nombre localizado de un almacén, también puede usar la función CryptFindLocalizedName .

Ejemplos

En el ejemplo siguiente se muestra cómo consultar un almacén para su propiedad de nombre local. Se puede usar código similar para recuperar otras propiedades de almacén. Para obtener un ejemplo completo que usa esta función, vea Programa C de ejemplo: Configuración y Obtención de propiedades del almacén de certificados.

#include <windows.h>
#include <stdio.h>
#include <Wincrypt.h>


//--------------------------------------------------------------------
// Declare and initialize variables.
void *pvData = NULL;
DWORD cbData = 0;

//--------------------------------------------------------------------
// Call CertGetStoreProperty a first time
// to get the length of the store name string to be returned.
// hCertStore is a previously assigned HCERTSTORE variable that
// represents an open certificate store.
if(CertGetStoreProperty(
    hCertStore,
    CERT_STORE_LOCALIZED_NAME_PROP_ID,
    NULL,     // NULL on the first call  
              // to establish the length of the string
              // to be returned
    &cbData))
{
     printf("The length of the property is %d. \n",cbData);
}
else
{
     printf("The length of the property was not calculated.\n");
     exit(1);
}

//--------------------------------------------------------------------
// cbData is the length of a string to be allocated. 
// Allocate the space for the string and call the function a 
// second time.
if(pvData = malloc(cbData))
{
     printf("%d bytes of memory allocated.\n",cbData);
}
else
{
     printf("Memory was not allocated.\n");
     exit(1);
}

// Call CertGetStoreProperty a second time
// to copy the local store name into the pvData buffer.
if(CertGetStoreProperty(
    hCertStore,
    CERT_STORE_LOCALIZED_NAME_PROP_ID,
    pvData,
    &cbData))
{
     printf("The localized name is %S.\n",pvData);
}
else
{
     printf("CertGetStoreProperty failed.\n");
     exit(1);
}

// Free memory when done.
if (pvData)
    free(pvData);

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado wincrypt.h
Library Crypt32.lib
Archivo DLL Crypt32.dll

Consulte también

CertSetStoreProperty

Funciones del almacén de certificados