static void WINAPI CRYPT_ProvCloseStore(HCERTSTORE hCertStore, DWORD dwFlags) { PWINE_PROVIDERSTORE store = hCertStore; TRACE("(%p, %08x)\n", store, dwFlags); if (store->provCloseStore) store->provCloseStore(store->hStoreProv, dwFlags); if (!(store->dwStoreProvFlags & CERT_STORE_PROV_EXTERNAL_FLAG)) CertCloseStore(store->memStore, dwFlags); CRYPT_FreeStore((PWINECRYPT_CERTSTORE)store); }
static void WINAPI CRYPT_MemCloseStore(HCERTSTORE hCertStore, DWORD dwFlags) { WINE_MEMSTORE *store = hCertStore; TRACE("(%p, %08x)\n", store, dwFlags); if (dwFlags) FIXME("Unimplemented flags: %08x\n", dwFlags); ContextList_Free(store->certs); ContextList_Free(store->crls); ContextList_Free(store->ctls); CRYPT_FreeStore((PWINECRYPT_CERTSTORE)store); }
static DWORD ProvStore_release(WINECRYPT_CERTSTORE *cert_store, DWORD flags) { WINE_PROVIDERSTORE *store = (WINE_PROVIDERSTORE*)cert_store; LONG ref; if(flags) FIXME("Unimplemented flags %x\n", flags); ref = InterlockedDecrement(&store->hdr.ref); TRACE("(%p) ref=%d\n", store, ref); if(ref) return ERROR_SUCCESS; if (store->provCloseStore) store->provCloseStore(store->hStoreProv, flags); if (!(store->dwStoreProvFlags & CERT_STORE_PROV_EXTERNAL_FLAG)) store->memStore->vtbl->release(store->memStore, flags); CRYPT_FreeStore(&store->hdr); return ERROR_SUCCESS; }