Fungsi CertCloseStore (wincrypt.h)

Fungsi CertCloseStore menutup handel penyimpanan sertifikat dan mengurangi jumlah referensi di penyimpanan. Perlu ada panggilan yang sesuai ke CertCloseStore untuk setiap panggilan yang berhasil ke fungsi CertOpenStore atau CertDuplicateStore .

Sintaks

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

Parameter

[in] hCertStore

Menangani penyimpanan sertifikat yang akan ditutup.

[in] dwFlags

Biasanya, parameter ini menggunakan nilai default nol. Defaultnya adalah menutup penyimpanan dengan memori yang tersisa yang dialokasikan untuk konteks yang belum dikosongkan. Dalam hal ini, tidak ada pemeriksaan yang dilakukan untuk menentukan apakah memori untuk konteks tetap dialokasikan.

Set bendera dapat memaksa pengosongan memori untuk semua sertifikat penyimpanan, daftar pencabutan sertifikat (CRL), dan konteks daftar kepercayaan sertifikat (CTL) saat penyimpanan ditutup. Bendera juga dapat diatur yang memeriksa apakah semua sertifikat penyimpanan, CRL, dan konteks CTL telah dibebaskan. Nilai berikut ditentukan.

Nilai Makna
CERT_CLOSE_STORE_CHECK_FLAG
Memeriksa konteks sertifikat, CRL, dan CTL yang tidak dibuat. Kode kesalahan yang dikembalikan menunjukkan bahwa satu atau beberapa elemen penyimpanan masih digunakan. Bendera ini hanya boleh digunakan sebagai alat diagnostik dalam pengembangan aplikasi.
CERT_CLOSE_STORE_FORCE_FLAG
Memaksa pengosongan memori untuk semua konteks yang terkait dengan penyimpanan. Bendera ini hanya dapat digunakan dengan aman ketika penyimpanan dibuka dalam fungsi dan baik handel toko maupun konteksnya tidak diteruskan ke fungsi yang disebut. Untuk detailnya, lihat Keterangan.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan adalah TRUE.

Jika fungsi gagal, nilai yang dikembalikan adalah FALSE. Untuk informasi kesalahan yang diperluas, hubungi GetLastError.

Jika CERT_CLOSE_STORE_CHECK_FLAG tidak diatur atau jika diatur dan semua konteks yang terkait dengan penyimpanan telah dibebaskan, nilai yang dikembalikan adalah TRUE.

Jika CERT_CLOSE_STORE_CHECK_FLAG diatur dan memori untuk satu atau beberapa konteks yang terkait dengan penyimpanan tetap dialokasikan, nilai yang dikembalikan adalah FALSE. Penyimpanan selalu ditutup bahkan ketika fungsi mengembalikan FALSE. Untuk detailnya, lihat Keterangan.

GetLastError diatur ke CRYPT_E_PENDING_CLOSE jika memori untuk konteks yang terkait dengan penyimpanan tetap dialokasikan. Nilai yang ada yang dikembalikan oleh GetLastError dipertahankan kecuali CERT_CLOSE_STORE_CHECK_FLAG diatur.

Keterangan

Saat penyimpanan sertifikat terbuka, konteks dari penyimpanan tersebut dapat diambil atau diduplikasi. Saat konteks diambil atau diduplikasi, jumlah referensinya bertambah. Ketika konteks dikosongkan dengan meneruskannya ke fungsi pencarian atau enumerasi sebagai konteks sebelumnya atau dengan menggunakan CertFreeCertificateContext, CertFreeCRLContext, atau CertFreeCTLContext, jumlah referensinya diturunkan. Saat jumlah referensi konteks mencapai nol, memori yang dialokasikan untuk konteks tersebut secara otomatis dikosongkan. Ketika memori yang dialokasikan untuk konteks telah dibebaskan, setiap penunjuk ke konteks tersebut menjadi tidak valid.

Secara default, memori yang digunakan untuk menyimpan konteks dengan jumlah referensi yang lebih besar dari nol tidak dikosongkan saat penyimpanan sertifikat ditutup. Referensi ke konteks tersebut tetap valid; namun, ini dapat menyebabkan kebocoran memori. Selain itu, setiap perubahan yang dilakukan pada properti konteks setelah penyimpanan ditutup tidak dipertahankan.

Untuk memaksa pengosongan memori untuk semua konteks yang terkait dengan penyimpanan, atur CERT_CLOSE_STORE_FORCE_FLAG. Dengan set bendera ini, memori untuk semua konteks yang terkait dengan penyimpanan dibebaskan dan semua penunjuk ke konteks sertifikat, CRL, atau CTL yang terkait dengan penyimpanan menjadi tidak valid. Bendera ini hanya boleh diatur ketika penyimpanan dibuka dalam fungsi dan handel penyimpanan maupun konteksnya tidak pernah diteruskan ke fungsi yang disebut.

Status referensi dihitung pada konteks yang terkait dengan penyimpanan dapat diperiksa saat penyimpanan ditutup dengan menggunakan CERT_CLOSE_STORE_CHECK_FLAG. Ketika bendera ini diatur, dan semua sertifikat, CRL, atau konteks CTL belum dirilis, fungsi mengembalikan FALSE dan GetLastError mengembalikan CRYPT_E_PENDING_CLOSE. Perhatikan bahwa penyimpanan masih ditutup ketika FALSE dikembalikan dan memori untuk konteks aktif apa pun tidak dikosongkan.

Jika CERT_STORE_NO_CRYPT_RELEASE_FLAG tidak diatur saat penyimpanan dibuka, menutup toko akan merilis handel CSP-nya.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header wincrypt.h
Pustaka Crypt32.lib
DLL Crypt32.dll

Lihat juga

CertDuplicateStore

CertFreeCRLContext

CertFreeCTLContext

CertFreeCertificateContext

CertOpenStore

Fungsi Penyimpanan Sertifikat

CryptReleaseContext