Funzione CertGetStoreProperty (wincrypt.h)

La funzione CertGetStoreProperty recupera una proprietà store.

Sintassi

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

Parametri

[in] hCertStore

Handle di un archivio certificati aperto.

[in] dwPropId

Indica una delle proprietà dell'archivio. Esiste una proprietà di archiviazione predefinita, CERT_STORE_LOCALIZED_NAME_PROP_ID, il nome localizzato dell'archivio.

Le proprietà definite dall'utente devono essere esterne all'intervallo corrente di valori per le proprietà di contesto predefinite. I valori dwPropId definiti dall'utente iniziano attualmente a 4.096.

[out] pvData

Puntatore a un buffer che riceve i dati come determinato da dwPropId. Per CERT_STORE_LOCALIZED_NAME_PROP_ID, si tratta del nome localizzato dell'archivio e pvData punta a una stringa di caratteri wide Unicode con terminazione Null. Per altri dwPropIds, pvData punta a una matrice di byte.

Questo parametro può essere NULL per impostare le dimensioni di queste informazioni ai fini dell'allocazione della memoria. Per altre informazioni, vedere Recupero di dati di lunghezza sconosciuta.

[in, out] pcbData

Puntatore a un valore DWORD che specifica le dimensioni, in byte, del buffer pvData . Quando la funzione viene restituita, il valore DWORD contiene il numero di byte archiviati nel buffer.

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce un valore diverso da zero.

Se la funzione ha esito negativo, restituisce zero.

Se viene trovata la proprietà store, la funzione restituisce un valore diverso da zero, pvData punta alla proprietà e pcbData punta alla lunghezza della stringa. Se la proprietà store non viene trovata, la funzione restituisce zero e GetLastError restituisce CRYPT_E_NOT_FOUND.

Commenti

Gli identificatori di proprietà dello store sono proprietà applicabili a un intero archivio. Non sono proprietà di un singolo certificato, un elenco di revoche di certificati (CRL) o un contesto CTL ( Certificate Trust List ). Attualmente non vengono rese persistenti le proprietà dell'archivio.

Per trovare il nome localizzato di un archivio, è anche possibile usare la funzione CryptFindLocalizedName .

Esempio

Nell'esempio seguente viene illustrata l'esecuzione di query su un archivio per la relativa proprietà del nome locale. È possibile usare codice simile per recuperare altre proprietà dell'archivio. Per un esempio completo che usa questa funzione, vedere Esempio di programma C: impostazione e recupero delle proprietà dell'archivio certificati.

#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);

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

CertSetStoreProperty

Funzioni dell'archivio certificati