1/* $NetBSD: dll.c,v 1.2 2017/01/28 21:31:49 christos Exp $ */ 2 3/*********************************************************************** 4 * Copyright (c) 2009, Secure Endpoints Inc. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * - Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 14 * - Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in 16 * the documentation and/or other materials provided with the 17 * distribution. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 22 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 23 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 24 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 25 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 28 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 30 * OF THE POSSIBILITY OF SUCH DAMAGE. 31 * 32 **********************************************************************/ 33 34#include<windows.h> 35 36extern void heim_w32_service_thread_detach(void *); 37 38HINSTANCE _krb5_hInstance = NULL; 39 40#if NTDDI_VERSION >= NTDDI_VISTA 41extern BOOL WINAPI 42_hc_w32crypto_DllMain(HINSTANCE hinstDLL, 43 DWORD fdwReason, 44 LPVOID lpvReserved); 45#endif 46 47BOOL WINAPI DllMain(HINSTANCE hinstDLL, 48 DWORD fdwReason, 49 LPVOID lpvReserved) 50{ 51#if NTDDI_VERSION >= NTDDI_VISTA 52 BOOL ret; 53 54 ret = _hc_w32crypto_DllMain(hinstDLL, fdwReason, lpvReserved); 55 if (!ret) 56 return ret; 57#endif 58 59 switch (fdwReason) { 60 case DLL_PROCESS_ATTACH: 61 62 _krb5_hInstance = hinstDLL; 63 return TRUE; 64 65 case DLL_PROCESS_DETACH: 66 return FALSE; 67 68 case DLL_THREAD_ATTACH: 69 return FALSE; 70 71 case DLL_THREAD_DETACH: 72 heim_w32_service_thread_detach(NULL); 73 return FALSE; 74 } 75 76 return FALSE; 77} 78 79