CertCloseStore 関数 (wincrypt.h)

CertCloseStore 関数は、証明書ストア ハンドルを閉じ、ストアの参照数を減らします。 CertOpenStore 関数または CertDuplicateStore 関数を正常に呼び出すたびに、CertCloseStore への対応する呼び出しが必要です。

構文

BOOL CertCloseStore(
  [in] HCERTSTORE hCertStore,
  [in] DWORD      dwFlags
);

パラメーター

[in] hCertStore

閉じる証明書ストアのハンドル。

[in] dwFlags

通常、このパラメーターは既定値 0 を使用します。 既定では、解放されていないコンテキストに割り当てられたメモリが残っているストアを閉じます。 この場合、コンテキストのメモリが割り当てられたままかどうかを判断するチェックは行われません。

セット フラグを使用すると、ストアを閉じるときに、ストアのすべての 証明書証明書失効リスト (CRL)、証明書 信頼リスト (CTL) コンテキストのメモリを強制的に解放できます。 また、ストアのすべての証明書、CRL、および CTL コンテキストが解放されたかどうかをチェックフラグを設定することもできます。 次の値が定義されています。

意味
CERT_CLOSE_STORE_CHECK_FLAG
非頻度の証明書、CRL、および CTL コンテキストを確認します。 返されるエラー コードは、1 つ以上のストア要素がまだ使用されていることを示します。 このフラグは、アプリケーションの開発で診断ツールとしてのみ使用する必要があります。
CERT_CLOSE_STORE_FORCE_FLAG
ストアに関連付けられているすべてのコンテキストのメモリ解放を強制します。 このフラグは、ストアが関数で開かれ、ストア ハンドルとそのコンテキストが呼び出された関数に渡されていない場合にのみ安全に使用できます。 詳細については、「解説」を参照してください。

戻り値

関数が成功した場合、戻り値は TRUE になります

関数が失敗した場合、戻り値は FALSE になります。 拡張エラー情報については、 GetLastError を呼び出します。

CERT_CLOSE_STORE_CHECK_FLAGが設定されていない場合、または設定されていて、ストアに関連付けられているすべてのコンテキストが解放されている場合、戻り値は TRUE になります

CERT_CLOSE_STORE_CHECK_FLAGが設定され、ストアに関連付けられている 1 つ以上のコンテキストのメモリが割り当てられたままの場合、戻り値は FALSE になります。 関数が FALSE を返した場合でも、ストアは常に閉じられます。 詳細については、「解説」を参照してください。

GetLastError は、ストアに関連付けられているコンテキストのメモリが引き続き割り当てられている場合にCRYPT_E_PENDING_CLOSEに設定されます。 GetLastError によって返される既存の値は、CERT_CLOSE_STORE_CHECK_FLAGが設定されていない限り保持されます。

注釈

証明書ストアが開いている間は、そのストアから コンテキスト を取得または複製できます。 コンテキストが取得または複製されると、その参照カウントがインクリメントされます。 コンテキストを以前のコンテキストとして検索または列挙関数に渡すか、CertFreeCertificateContextCertFreeCRLContext、または CertFreeCTLContext を使用して解放されると、その参照カウントはデクリメントされます。 コンテキストの参照カウントが 0 に達すると、そのコンテキストに割り当てられたメモリは自動的に解放されます。 コンテキストに割り当てられたメモリが解放されると、そのコンテキストへのポインターは無効になります。

既定では、参照カウントが 0 より大きいコンテキストを格納するために使用されるメモリは、証明書ストアが閉じられると解放されません。 これらのコンテキストへの参照は引き続き有効です。ただし、これによりメモリ リークが発生する可能性があります。 また、ストアが閉じられた後にコンテキストのプロパティに加えられた変更は保持されません。

ストアに関連付けられているすべてのコンテキストのメモリを強制的に解放するには、CERT_CLOSE_STORE_FORCE_FLAGを設定します。 このフラグを設定すると、ストアに関連付けられているすべてのコンテキストのメモリが解放され、ストアに関連付けられている証明書、CRL、または CTL コンテキストへのすべてのポインターが無効になります。 このフラグは、ストアが関数で開かれ、ストア ハンドルとそのコンテキストが呼び出された関数に渡されなかった場合にのみ設定する必要があります。

ストアに関連付けられているコンテキストに対する参照カウントの状態は、ストアが閉じられるときに、CERT_CLOSE_STORE_CHECK_FLAGを使用して確認できます。 このフラグが設定されていて、すべての証明書、CRL、または CTL コンテキストが解放されていない場合、関数は FALSE を 返し、 GetLastError は CRYPT_E_PENDING_CLOSEを返します。 FALSE が返され、アクティブなコンテキストのメモリが解放されない場合、ストアは引き続き閉じられます。

ストアを開いたときにCERT_STORE_NO_CRYPT_RELEASE_FLAGが設定されていない場合、ストアを閉じると CSP ハンドルが解放されます。

要件

要件
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー wincrypt.h
Library Crypt32.lib
[DLL] Crypt32.dll

こちらもご覧ください

CertDuplicateStore

CertFreeCRLContext

CertFreeCTLContext

CertFreeCertificateContext

CertOpenStore

証明書ストア関数

CryptReleaseContext