Функция 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 |