]> git.saurik.com Git - apple/mdnsresponder.git/blob - mDNSWindows/DLLX/DLLX.cpp
mDNSResponder-878.270.2.tar.gz
[apple/mdnsresponder.git] / mDNSWindows / DLLX / DLLX.cpp
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
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
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
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
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
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