Compartilhar via


Função CertGetStoreProperty (wincrypt.h)

A função CertGetStoreProperty recupera uma propriedade de repositório.

Sintaxe

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

Parâmetros

[in] hCertStore

Um identificador de um repositório de certificados aberto.

[in] dwPropId

Indica uma de um intervalo de propriedades do repositório. Há uma propriedade de repositório predefinida, CERT_STORE_LOCALIZED_NAME_PROP_ID, o nome localizado do repositório.

As propriedades definidas pelo usuário devem estar fora do intervalo atual de valores para propriedades de contexto predefinidas. Atualmente, os valores dwPropId definidos pelo usuário começam em 4.096.

[out] pvData

Um ponteiro para um buffer que recebe os dados conforme determinado por dwPropId. Para CERT_STORE_LOCALIZED_NAME_PROP_ID, esse é o nome localizado do repositório e pvData aponta para uma cadeia de caracteres largos Unicode terminada em nulo. Para outros dwPropIds, pvData aponta para uma matriz de bytes.

Esse parâmetro pode ser NULL para definir o tamanho dessas informações para fins de alocação de memória. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.

[in, out] pcbData

Um ponteiro para um valor DWORD que especifica o tamanho, em bytes, do buffer pvData . Quando a função retorna, o valor DWORD contém o número de bytes armazenados no buffer.

Retornar valor

Se a função for bem-sucedida, a função retornará diferente de zero.

Se a função falhar, ela retornará zero.

Se a propriedade store for encontrada, a função retornará diferente de zero, pvData apontará para a propriedade e pcbData apontará para o comprimento da cadeia de caracteres. Se a propriedade store não for encontrada, a função retornará zero e GetLastError retornará CRYPT_E_NOT_FOUND.

Comentários

Os identificadores de propriedade do repositório são propriedades aplicáveis a um repositório inteiro. Elas não são propriedades em um certificado individual, na CRL ( lista de certificados revogados ) nem no contexto da CTL ( lista de certificados confiáveis ). Atualmente, nenhuma propriedade de repositório é mantida.

Para localizar o nome localizado de um repositório, você também pode usar a função CryptFindLocalizedName .

Exemplos

O exemplo a seguir mostra a consulta de um repositório para sua propriedade de nome local. Código semelhante pode ser usado para recuperar outras propriedades do repositório. Para obter um exemplo completo que usa essa função, consulte Exemplo de programa C: configurando e obtendo propriedades do repositório 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 Valor
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho wincrypt.h
Biblioteca Crypt32.lib
DLL Crypt32.dll

Confira também

CertSetStoreProperty

Funções de repositório de certificados