1 /************************************************************************* 2 * 3 * The Contents of this file are made available subject to the terms of 4 * the BSD license. 5 * 6 * Copyright 2000, 2010 Oracle and/or its affiliates. 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 3. Neither the name of Sun Microsystems, Inc. nor the names of its 18 * contributors may be used to endorse or promote products derived 19 * from this software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 28 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 29 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 30 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 31 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 * 33 *************************************************************************/ 34 35 // so_activex.cpp : Implementation of DLL Exports. 36 37 38 // Note: Proxy/Stub Information 39 // To build a separate proxy/stub DLL, 40 // run nmake -f so_activexps.mk in the project directory. 41 42 #include "stdafx2.h" 43 #include "resource.h" 44 #include <initguid.h> 45 #include "so_activex.h" 46 47 #include "so_activex_i.c" 48 #include "SOActiveX.h" 49 50 51 CComModule _Module; 52 53 BEGIN_OBJECT_MAP(ObjectMap) 54 OBJECT_ENTRY(CLSID_SOActiveX, CSOActiveX) 55 END_OBJECT_MAP() 56 57 ///////////////////////////////////////////////////////////////////////////// 58 // DLL Entry Point 59 60 extern "C" 61 BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/) 62 { 63 if (dwReason == DLL_PROCESS_ATTACH) 64 { 65 _Module.Init(ObjectMap, hInstance, &LIBID_SO_ACTIVEXLib); 66 DisableThreadLibraryCalls(hInstance); 67 } 68 else if (dwReason == DLL_PROCESS_DETACH) 69 _Module.Term(); 70 return TRUE; // ok 71 } 72 73 ///////////////////////////////////////////////////////////////////////////// 74 // Used to determine whether the DLL can be unloaded by OLE 75 76 STDAPI DllCanUnloadNow(void) 77 { 78 return (_Module.GetLockCount()==0) ? S_OK : S_FALSE; 79 } 80 81 ///////////////////////////////////////////////////////////////////////////// 82 // Returns a class factory to create an object of the requested type 83 84 STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) 85 { 86 return _Module.GetClassObject(rclsid, riid, ppv); 87 } 88 89 ///////////////////////////////////////////////////////////////////////////// 90 // DllRegisterServer - Adds entries to the system registry 91 92 STDAPI DllRegisterServer(void) 93 { 94 HRESULT aResult = _Module.RegisterServer(TRUE); 95 96 return aResult; 97 } 98 99 ///////////////////////////////////////////////////////////////////////////// 100 // DllUnregisterServer - Removes entries from the system registry 101 102 STDAPI DllUnregisterServer(void) 103 { 104 HRESULT aResult = _Module.UnregisterServer(TRUE); 105 106 return aResult; 107 } 108 109