BOOL WINAPI DllMain(HINSTANCE hInst, DWORD fdwReason, PVOID pvReserved) { switch (fdwReason) { case DLL_PROCESS_ATTACH: hInstance = hInst; DisableThreadLibraryCalls(hInst); crypt_oid_init(); break; case DLL_PROCESS_DETACH: if (pvReserved) break; crypt_oid_free(); crypt_sip_free(); root_store_free(); default_chain_engine_free(); if (hDefProv) CryptReleaseContext(hDefProv, 0); break; } return TRUE; }
BOOL WINAPI DllMain(HINSTANCE hInst, DWORD fdwReason, PVOID pvReserved) { switch (fdwReason) { case DLL_PROCESS_ATTACH: hInstance = hInst; DisableThreadLibraryCalls(hInst); crypt_oid_init(); break; case DLL_PROCESS_DETACH: crypt_oid_free(); crypt_sip_free(); root_store_free(); default_chain_engine_free(); /* Don't release the default provider on process shutdown, there's * no guarantee the provider dll hasn't already been unloaded. */ if (hDefProv && !pvReserved) CryptReleaseContext(hDefProv, 0); break; } return TRUE; }