CertCloseStore

証明書ストアのハンドルを閉じ、ストアの参照カウントを減らす。

CertCloseStore hCertStore, dwFlags

hCertStore : [int] 閉じる証明書ストアのハンドル。
dwFlags : [int] 通常は既定値の 0 を指定する。既定動作では、未解放コンテキストがあってもメモリを残したままストアを閉じる。この場合、メモリの確認は行わない。

(プラグイン / モジュール : crypt32.dll)

解説

証明書ストアのハンドルを閉じ、ストアの参照カウントを減らす。

[戻り値]
成功時は TRUE、失敗時は FALSE を返す。拡張エラー情報は GetLastError
で取得する。CERT_CLOSE_STORE_CHECK_FLAG
が未設定、またはそれが設定されていてストアに関連付けられたすべてのコンテキストが解放済みであれば TRUE
を返す。CERT_CLOSE_STORE_CHECK_FLAG が設定されておりまだメモリが割り当てられたままのコンテキストがある場合は
FALSE を返す。FALSE を返してもストアは常に閉じられる。
コンテキストのメモリが残っている場合、GetLastError は CRYPT_E_PENDING_CLOSE
を返す。CERT_CLOSE_STORE_CHECK_FLAG が未設定なら既存の GetLastError 値は保持される。

[備考]

証明書ストアが開かれている間、ストアからコンテキストを取得または複製できる。取得/複製時に参照カウントが加算され、検索列挙関数への前回コンテキストとしての受け渡し、もしくは
CertFreeCertificateContext/CertFreeCRLContext/CertFreeCTLContext
で解放すると減算される。参照カウントが 0 になると対応するメモリは自動解放される。既定では、ストアクローズ時に参照カウントが 0
より大きいコンテキストのメモリは解放されない。このためメモリリークの原因となりうる。また、ストアクローズ後のコンテキストプロパティ変更は保存されない。強制解放するには
CERT_CLOSE_STORE_FORCE_FLAG
を設定する。これを設定するとストアに関連付けられたすべてのコンテキストメモリが解放され、それらへのポインタは無効になる。このフラグは、ストアやコンテキストが他の関数に渡されていない場合にのみ使用する。CERT_CLOSE_STORE_CHECK_FLAG
を使うとストアクローズ時に参照カウントの状態を確認でき、未解放のコンテキストがあれば FALSE を返し GetLastError が
CRYPT_E_PENDING_CLOSE となる。FALSE でもストアは閉じられるがメモリは解放されない。ストアオープン時に
CERT_STORE_NO_CRYPT_RELEASE_FLAG を指定していなければ、クローズ時に CSP ハンドルも解放される。

情報

プラグイン / モジュールcrypt32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の crypt32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_crypt32_gen2.hs