Поделиться через


Функция CertGetStoreProperty (wincrypt.h)

Функция CertGetStoreProperty извлекает свойство хранилища.

Синтаксис

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

Параметры

[in] hCertStore

Дескриптор открытого хранилища сертификатов.

[in] dwPropId

Указывает одно из диапазонов свойств хранилища. Существует одно предопределенное свойство хранилища, CERT_STORE_LOCALIZED_NAME_PROP_ID, локализованное имя хранилища.

Определяемые пользователем свойства должны находиться вне текущего диапазона значений для предопределенных свойств контекста. В настоящее время определяемые пользователем значения dwPropId начинаются с 4096.

[out] pvData

Указатель на буфер, который получает данные, определяемые dwPropId. Для CERT_STORE_LOCALIZED_NAME_PROP_ID это локализованное имя хранилища, а pvData указывает на строку расширенных символов Юникода, завершаемую null. Для других объектов dwPropIdpvData указывает на массив байтов.

Этот параметр может иметь значение NULL , чтобы задать размер этих сведений для целей выделения памяти. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.

[in, out] pcbData

Указатель на значение DWORD , указывающее размер буфера pvData в байтах. При возврате функции значение DWORD содержит количество байтов, хранящихся в буфере.

Возвращаемое значение

Если функция выполняется успешно, функция возвращает ненулевое значение.

Если функция завершается сбоем, она возвращает ноль.

Если свойство хранилища найдено, функция возвращает ненулевое значение, pvData указывает на свойство, а pcbData указывает на длину строки. Если свойство хранилища не найдено, функция возвращает ноль, а GetLastError — CRYPT_E_NOT_FOUND.

Комментарии

Идентификаторы свойств хранилища — это свойства, применимые ко всему хранилищу. Они не являются свойствами отдельного сертификата, списка отзыва сертификатов (CRL) или контекста списка доверия сертификатов (CTL). В настоящее время свойства хранилища не сохраняются.

Чтобы найти локализованное имя хранилища, можно также использовать функцию CryptFindLocalizedName .

Примеры

В следующем примере показан запрос к хранилищу для его свойства локального имени. Аналогичный код можно использовать для получения других свойств хранилища. Полный пример использования этой функции см. в разделе Пример программы C: настройка и получение свойств хранилища сертификатов.

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

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header wincrypt.h
Библиотека Crypt32.lib
DLL Crypt32.dll

См. также раздел

CertSetStoreProperty

Функции хранилища сертификатов