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、定義済みのストア プロパティが 1 つあります。
ユーザー定義プロパティは、定義済みのコンテキスト プロパティの現在の値の範囲外である必要があります。 現在、ユーザー定義 の dwPropId 値は 4,096 から始まります。
[out] pvData
dwPropId によって決定されたデータを受け取るバッファーへのポインター。 CERT_STORE_LOCALIZED_NAME_PROP_IDの場合、これはストアのローカライズされた名前であり、 pvData は null で終わる Unicode ワイド文字列を指します。 その他の dwPropIdの場合、 pvData は バイト配列を指します。
このパラメーターは、メモリ割り当てのためにこの情報のサイズを設定するために NULL にすることができます 。 詳細については、「 不明な長さのデータの取得」を参照してください。
[in, out] pcbData
pvData バッファーのサイズをバイト単位で指定する DWORD 値へのポインター。 関数が戻ると、 DWORD 値にはバッファーに格納されているバイト数が含まれます。
戻り値
関数が成功した場合、関数は 0 以外の値を返します。
関数が失敗すると、0 が返されます。
store プロパティが見つかった場合、この関数は 0 以外の値を返し、 pvData は プロパティを指し、 pcbData は文字列の長さを指します。 store プロパティが見つからない場合、この関数は 0 を返し、 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 |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |