Fonction CertCloseStore (wincrypt.h)

La fonction CertCloseStore ferme un handle de magasin de certificats et réduit le nombre de références sur le magasin. Il doit y avoir un appel correspondant à CertCloseStore pour chaque appel réussi aux fonctions CertOpenStore ou CertDuplicateStore .

Syntaxe

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

Paramètres

[in] hCertStore

Handle du magasin de certificats à fermer.

[in] dwFlags

En règle générale, ce paramètre utilise la valeur par défaut zéro. La valeur par défaut consiste à fermer le magasin avec la mémoire restante allouée pour les contextes qui n’ont pas été libérés. Dans ce cas, aucune case activée n’est effectuée pour déterminer si la mémoire des contextes reste allouée.

Les indicateurs définis peuvent forcer la libération de mémoire pour tous les contextes de certificat, de liste de révocation de certificats (CRL) et de liste d’approbation de certificats (CTL) d’un magasin lorsque le magasin est fermé. Vous pouvez également définir des indicateurs qui case activée si tous les contextes de certificat, de liste de révocation de certificats et de listes de révocation de certificats du magasin ont été libérés. Les valeurs suivantes sont définies.

Valeur Signification
CERT_CLOSE_STORE_CHECK_FLAG
Recherche les contextes de certificat, de liste de révocation de certificats et de liste de révocation de certificats. Un code d’erreur retourné indique qu’un ou plusieurs éléments de magasin sont toujours en cours d’utilisation. Cet indicateur ne doit être utilisé qu’en tant qu’outil de diagnostic dans le développement d’applications.
CERT_CLOSE_STORE_FORCE_FLAG
Force la libération de la mémoire pour tous les contextes associés au magasin. Cet indicateur peut être utilisé en toute sécurité uniquement lorsque le magasin est ouvert dans une fonction et que ni le handle de magasin ni aucun de ses contextes ne sont passés à des fonctions appelées. Pour plus d'informations, consultez Notes.

Valeur retournée

Si la fonction réussit, la valeur de retour est TRUE.

Si la fonction échoue, la valeur de retour est FALSE. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Si CERT_CLOSE_STORE_CHECK_FLAG n’est pas défini ou s’il est défini et que tous les contextes associés au magasin ont été libérés, la valeur de retour est TRUE.

Si CERT_CLOSE_STORE_CHECK_FLAG est défini et que la mémoire d’un ou plusieurs contextes associés au magasin reste allouée, la valeur de retour est FALSE. Le magasin est toujours fermé même lorsque la fonction retourne FALSE. Pour plus d'informations, consultez Notes.

GetLastError est défini sur CRYPT_E_PENDING_CLOSE si la mémoire pour les contextes associés au magasin reste allouée. Toute valeur existante retournée par GetLastError est conservée, sauf si CERT_CLOSE_STORE_CHECK_FLAG est défini.

Remarques

Lorsqu’un magasin de certificats est ouvert, les contextes de ce magasin peuvent être récupérés ou dupliqués. Lorsqu’un contexte est récupéré ou dupliqué, son nombre de références est incrémenté. Lorsqu’un contexte est libéré en le passant à une fonction de recherche ou d’énumération en tant que contexte précédent ou à l’aide de CertFreeCertificateContext, CertFreeCRLContext ou CertFreeCTLContext, son nombre de références est décrémenté. Lorsque le nombre de références d’un contexte atteint zéro, la mémoire allouée pour ce contexte est automatiquement libérée. Lorsque la mémoire allouée à un contexte a été libérée, les pointeurs vers ce contexte ne sont plus valides.

Par défaut, la mémoire utilisée pour stocker les contextes dont le nombre de références est supérieur à zéro n’est pas libérée lorsqu’un magasin de certificats est fermé. Les références à ces contextes restent valides ; Toutefois, cela peut entraîner des fuites de mémoire. En outre, les modifications apportées aux propriétés d’un contexte après la fermeture du magasin ne sont pas conservées.

Pour forcer la libération de mémoire pour tous les contextes associés à un magasin, définissez CERT_CLOSE_STORE_FORCE_FLAG. Avec cet indicateur défini, la mémoire de tous les contextes associés au magasin est libérée et tous les pointeurs vers les contextes de certificat, de liste de révocation de certificats ou de listes de révocation de certificats associés au magasin ne sont plus valides. Cet indicateur ne doit être défini que lorsque le magasin est ouvert dans une fonction et que ni le handle de magasin ni aucun de ses contextes n’ont jamais été passés à des fonctions appelées.

La status du nombre de références sur les contextes associés à un magasin peut être vérifiée lorsque le magasin est fermé à l’aide de CERT_CLOSE_STORE_CHECK_FLAG. Lorsque cet indicateur est défini et que tous les contextes de certificat, de liste de révocation de certificats ou de liste de révocation de certificats n’ont pas été libérés, la fonction retourne FALSE et GetLastError retourne CRYPT_E_PENDING_CLOSE. Notez que le magasin est toujours fermé lorsque false est retourné et que la mémoire des contextes actifs n’est pas libérée.

Si CERT_STORE_NO_CRYPT_RELEASE_FLAG n’a pas été défini lors de l’ouverture du magasin, la fermeture d’un magasin libère son handle CSP.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête wincrypt.h
Bibliothèque Crypt32.lib
DLL Crypt32.dll

Voir aussi

CertDuplicateStore

CertFreeCRLContext

CertFreeCTLContext

CertFreeCertificateContext

CertOpenStore

Fonctions du magasin de certificats

CryptReleaseContext