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