Fix merge r65567.
[reactos.git] / dll / shellext / stobject / stobject.cpp
1 /*
2 * PROJECT: ReactOS system libraries
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll\win32\stobject\stobject.cpp
5 * PURPOSE: COM registration services for STobject.dll
6 * PROGRAMMERS: Robert Naumann
7 David Quintana <gigaherz@gmail.com>
8 */
9
10 #include "precomp.h"
11
12 #include <olectl.h>
13 #include <atlwin.h>
14
15 WINE_DEFAULT_DEBUG_CHANNEL(stobject);
16
17 BEGIN_OBJECT_MAP(ObjectMap)
18 OBJECT_ENTRY(CLSID_SysTray, CSysTray)
19 END_OBJECT_MAP()
20
21 HINSTANCE g_hInstance;
22 CComModule g_Module;
23
24 void *operator new (size_t, void *buf)
25 {
26 return buf;
27 }
28
29 STDAPI_(BOOL)
30 DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
31 {
32 if (fdwReason == DLL_PROCESS_ATTACH)
33 {
34 g_hInstance = hinstDLL;
35 DisableThreadLibraryCalls(g_hInstance);
36
37 /* HACK - the global constructors don't run, so I placement new them here */
38 new (&g_Module) CComModule;
39 new (&_AtlWinModule) CAtlWinModule;
40 new (&_AtlBaseModule) CAtlBaseModule;
41 new (&_AtlComModule) CAtlComModule;
42
43 g_Module.Init(ObjectMap, g_hInstance, NULL);
44 }
45 else if (fdwReason == DLL_PROCESS_DETACH)
46 {
47 g_hInstance = NULL;
48 g_Module.Term();
49 }
50 return TRUE;
51 }
52
53 STDAPI
54 DllRegisterServer(void)
55 {
56 return g_Module.DllRegisterServer(FALSE);
57 }
58
59 STDAPI
60 DllUnregisterServer(void)
61 {
62 return g_Module.DllUnregisterServer(FALSE);
63 }
64
65 STDAPI
66 DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
67 {
68 return g_Module.DllGetClassObject(rclsid, riid, ppv);
69 }
70
71 STDAPI
72 DllCanUnloadNow(void)
73 {
74 return g_Module.DllCanUnloadNow();
75 }