diff options
Diffstat (limited to 'mDNSResponder/mDNSWindows/DLLX/DLLX.cpp')
-rwxr-xr-x | mDNSResponder/mDNSWindows/DLLX/DLLX.cpp | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/mDNSResponder/mDNSWindows/DLLX/DLLX.cpp b/mDNSResponder/mDNSWindows/DLLX/DLLX.cpp new file mode 100755 index 00000000..77883ccd --- /dev/null +++ b/mDNSResponder/mDNSWindows/DLLX/DLLX.cpp @@ -0,0 +1,208 @@ +/* -*- Mode: C; tab-width: 4 -*- + * + * Copyright (c) 2009 Apple Computer, Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + + +#include "stdafx.h" + +#include "resource.h" + +#include "DLLX.h" + +#include "dlldatax.h" + +#include <DebugServices.h> + + + + + +class CDLLComponentModule : public CAtlDllModuleT< CDLLComponentModule > + +{ + +public : + + DECLARE_LIBID(LIBID_Bonjour) + + DECLARE_REGISTRY_APPID_RESOURCEID(IDR_DLLX, "{56608F9C-223B-4CB6-813D-85EDCCADFB4B}") + +}; + + + +CDLLComponentModule _AtlModule; + + + + + +#ifdef _MANAGED + +#pragma managed(push, off) + +#endif + + + +// DLL Entry Point + +extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) + +{ + + debug_initialize( kDebugOutputTypeWindowsDebugger ); + debug_set_property( kDebugPropertyTagPrintLevel, kDebugLevelVerbose ); + + + +#ifdef _MERGE_PROXYSTUB + + if (!PrxDllMain(hInstance, dwReason, lpReserved)) + + return FALSE; + +#endif + + hInstance; + + return _AtlModule.DllMain(dwReason, lpReserved); + +} + + + +#ifdef _MANAGED + +#pragma managed(pop) + +#endif + + + + + + + + + +// Used to determine whether the DLL can be unloaded by OLE + +STDAPI DllCanUnloadNow(void) + +{ + +#ifdef _MERGE_PROXYSTUB + + HRESULT hr = PrxDllCanUnloadNow(); + + if (hr != S_OK) + + return hr; + +#endif + + return _AtlModule.DllCanUnloadNow(); + +} + + + + + +// Returns a class factory to create an object of the requested type + +STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) + +{ + +#ifdef _MERGE_PROXYSTUB + + if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK) + + return S_OK; + +#endif + + return _AtlModule.DllGetClassObject(rclsid, riid, ppv); + +} + + + + + +// DllRegisterServer - Adds entries to the system registry + +STDAPI DllRegisterServer(void) + +{ + + // registers object, typelib and all interfaces in typelib + + HRESULT hr = _AtlModule.DllRegisterServer(); + +#ifdef _MERGE_PROXYSTUB + + if (FAILED(hr)) + + return hr; + + hr = PrxDllRegisterServer(); + +#endif + + return hr; + +} + + + + + +// DllUnregisterServer - Removes entries from the system registry + +STDAPI DllUnregisterServer(void) + +{ + + HRESULT hr = _AtlModule.DllUnregisterServer(); + +#ifdef _MERGE_PROXYSTUB + + if (FAILED(hr)) + + return hr; + + hr = PrxDllRegisterServer(); + + if (FAILED(hr)) + + return hr; + + hr = PrxDllUnregisterServer(); + +#endif + + return hr; + +} + + + |