~siretart/ubuntu/raring/virtualbox-ose/bug.1101867

« back to all changes in this revision

Viewing changes to src/VBox/Main/win/dllmain.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Felix Geyer
  • Date: 2011-01-30 23:27:25 UTC
  • mfrom: (0.3.12 upstream)
  • Revision ID: james.westby@ubuntu.com-20110130232725-2ouajjd2ggdet0zd
Tags: 4.0.2-dfsg-1ubuntu1
* Merge from Debian unstable, remaining changes:
  - Add Apport hook.
    - debian/virtualbox-ose.files/source_virtualbox-ose.py
    - debian/virtualbox-ose.install
  - Drop *-source packages.
* Drop ubuntu-01-fix-build-gcc45.patch, fixed upstream.
* Drop ubuntu-02-as-needed.patch, added to the Debian package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/** @file
2
 
 *
3
 
 * DLLMAIN - COM DLL exports
4
 
 *
5
 
 */
6
 
 
7
 
/*
8
 
 * Copyright (C) 2006-2007 Oracle Corporation
9
 
 *
10
 
 * This file is part of VirtualBox Open Source Edition (OSE), as
11
 
 * available from http://www.virtualbox.org. This file is free software;
12
 
 * you can redistribute it and/or modify it under the terms of the GNU
13
 
 * General Public License (GPL) as published by the Free Software
14
 
 * Foundation, in version 2 as it comes in the "COPYING" file of the
15
 
 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
16
 
 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17
 
 */
18
 
 
19
 
#include "VBox/com/defs.h"
20
 
 
21
 
#include <SessionImpl.h>
22
 
#include <VirtualBoxCallbackImpl.h>
23
 
 
24
 
#include <atlbase.h>
25
 
#include <atlcom.h>
26
 
 
27
 
#include <iprt/initterm.h>
28
 
 
29
 
CComModule _Module;
30
 
 
31
 
BEGIN_OBJECT_MAP(ObjectMap)
32
 
    OBJECT_ENTRY(CLSID_Session, Session)
33
 
    OBJECT_ENTRY(CLSID_CallbackWrapper, CallbackWrapper)
34
 
END_OBJECT_MAP()
35
 
 
36
 
/////////////////////////////////////////////////////////////////////////////
37
 
// DLL Entry Point
38
 
 
39
 
extern "C"
40
 
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
41
 
{
42
 
    if (dwReason == DLL_PROCESS_ATTACH)
43
 
    {
44
 
        _Module.Init(ObjectMap, hInstance, &LIBID_VirtualBox);
45
 
        DisableThreadLibraryCalls(hInstance);
46
 
 
47
 
        // idempotent, so doesn't harm, and needed for COM embedding scenario
48
 
        RTR3Init();
49
 
    }
50
 
    else if (dwReason == DLL_PROCESS_DETACH)
51
 
        _Module.Term();
52
 
    return TRUE;
53
 
}
54
 
 
55
 
/////////////////////////////////////////////////////////////////////////////
56
 
// Used to determine whether the DLL can be unloaded by OLE
57
 
 
58
 
STDAPI DllCanUnloadNow(void)
59
 
{
60
 
    return (_Module.GetLockCount()==0) ? S_OK : S_FALSE;
61
 
}
62
 
 
63
 
/////////////////////////////////////////////////////////////////////////////
64
 
// Returns a class factory to create an object of the requested type
65
 
 
66
 
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
67
 
{
68
 
    return _Module.GetClassObject(rclsid, riid, ppv);
69
 
}
70
 
 
71
 
/////////////////////////////////////////////////////////////////////////////
72
 
// DllRegisterServer - Adds entries to the system registry
73
 
 
74
 
STDAPI DllRegisterServer(void)
75
 
{
76
 
    // registers object, typelib and all interfaces in typelib
77
 
    return _Module.RegisterServer(TRUE);
78
 
}
79
 
 
80
 
/////////////////////////////////////////////////////////////////////////////
81
 
// DllUnregisterServer - Removes entries from the system registry
82
 
 
83
 
STDAPI DllUnregisterServer(void)
84
 
{
85
 
    return _Module.UnregisterServer(TRUE);
86
 
}