15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <windows.h> 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/at_exit.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/command_line.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/logging.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Visual Studio needs at least one C++ file in project http://goo.gl/roro9 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)base::AtExitManager* g_exit_manager = NULL; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// DLL Entry Point - This is necessary to initialize basic things like the 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// CommandLine and Logging components needed by functions in the DLL. 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern "C" BOOL WINAPI DllMain(HINSTANCE instance, 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DWORD reason, 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LPVOID reserved) { 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (reason == DLL_PROCESS_ATTACH) { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) g_exit_manager = new base::AtExitManager(); 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CommandLine::Init(0, NULL); 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch logging::LoggingSettings settings; 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch logging::InitLogging(settings); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else if (reason == DLL_PROCESS_DETACH) { 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CommandLine::Reset(); 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delete g_exit_manager; 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) g_exit_manager = NULL; 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return TRUE; 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 36