1 /* -*- Mode: C; tab-width: 4 -*-
2  *
3  * Copyright (c) 2009 Apple Computer, Inc. All rights reserved.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 
19 
20 
21 
22 #include "stdafx.h"
23 
24 #include "resource.h"
25 
26 #include "DLLX.h"
27 
28 #include "dlldatax.h"
29 
30 #include <DebugServices.h>
31 
32 
33 
34 
35 
36 class CDLLComponentModule : public CAtlDllModuleT< CDLLComponentModule >
37 
38 {
39 
40 public :
41 
42 	DECLARE_LIBID(LIBID_Bonjour)
43 
44 	DECLARE_REGISTRY_APPID_RESOURCEID(IDR_DLLX, "{56608F9C-223B-4CB6-813D-85EDCCADFB4B}")
45 
46 };
47 
48 
49 
50 CDLLComponentModule _AtlModule;
51 
52 
53 
54 
55 
56 #ifdef _MANAGED
57 
58 #pragma managed(push, off)
59 
60 #endif
61 
62 
63 
64 // DLL Entry Point
65 
DllMain(HINSTANCE hInstance,DWORD dwReason,LPVOID lpReserved)66 extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
67 
68 {
69 
70 	debug_initialize( kDebugOutputTypeWindowsDebugger );
71 	debug_set_property( kDebugPropertyTagPrintLevel, kDebugLevelVerbose );
72 
73 
74 
75 #ifdef _MERGE_PROXYSTUB
76 
77     if (!PrxDllMain(hInstance, dwReason, lpReserved))
78 
79         return FALSE;
80 
81 #endif
82 
83 	hInstance;
84 
85     return _AtlModule.DllMain(dwReason, lpReserved);
86 
87 }
88 
89 
90 
91 #ifdef _MANAGED
92 
93 #pragma managed(pop)
94 
95 #endif
96 
97 
98 
99 
100 
101 
102 
103 
104 
105 // Used to determine whether the DLL can be unloaded by OLE
106 
DllCanUnloadNow(void)107 STDAPI DllCanUnloadNow(void)
108 
109 {
110 
111 #ifdef _MERGE_PROXYSTUB
112 
113     HRESULT hr = PrxDllCanUnloadNow();
114 
115     if (hr != S_OK)
116 
117         return hr;
118 
119 #endif
120 
121     return _AtlModule.DllCanUnloadNow();
122 
123 }
124 
125 
126 
127 
128 
129 // Returns a class factory to create an object of the requested type
130 
DllGetClassObject(REFCLSID rclsid,REFIID riid,LPVOID * ppv)131 STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
132 
133 {
134 
135 #ifdef _MERGE_PROXYSTUB
136 
137     if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK)
138 
139         return S_OK;
140 
141 #endif
142 
143     return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
144 
145 }
146 
147 
148 
149 
150 
151 // DllRegisterServer - Adds entries to the system registry
152 
DllRegisterServer(void)153 STDAPI DllRegisterServer(void)
154 
155 {
156 
157     // registers object, typelib and all interfaces in typelib
158 
159     HRESULT hr = _AtlModule.DllRegisterServer();
160 
161 #ifdef _MERGE_PROXYSTUB
162 
163     if (FAILED(hr))
164 
165         return hr;
166 
167     hr = PrxDllRegisterServer();
168 
169 #endif
170 
171 	return hr;
172 
173 }
174 
175 
176 
177 
178 
179 // DllUnregisterServer - Removes entries from the system registry
180 
DllUnregisterServer(void)181 STDAPI DllUnregisterServer(void)
182 
183 {
184 
185 	HRESULT hr = _AtlModule.DllUnregisterServer();
186 
187 #ifdef _MERGE_PROXYSTUB
188 
189     if (FAILED(hr))
190 
191         return hr;
192 
193     hr = PrxDllRegisterServer();
194 
195     if (FAILED(hr))
196 
197         return hr;
198 
199     hr = PrxDllUnregisterServer();
200 
201 #endif
202 
203 	return hr;
204 
205 }
206 
207 
208 
209