[NETAPI32]
[reactos.git] / reactos / dll / shellext / ntobjshex / ntobjshex.cpp
1 /*
2 * PROJECT: ReactOS shell extensions
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll/shellext/ntobjshex/ntobjshex.cpp
5 * PURPOSE: NT Object Namespace shell extension
6 * PROGRAMMERS: David Quintana <gigaherz@gmail.com>
7 */
8
9 #include "precomp.h"
10
11 #include <atlwin.h>
12
13 WINE_DEFAULT_DEBUG_CHANNEL(ntobjshex);
14
15 BEGIN_OBJECT_MAP(ObjectMap)
16 OBJECT_ENTRY(CLSID_NtObjectFolder, CNtObjectFolder)
17 OBJECT_ENTRY(CLSID_RegistryFolder, CRegistryFolder)
18 END_OBJECT_MAP()
19
20 HINSTANCE g_hInstance;
21 CComModule g_Module;
22
23 void *operator new (size_t, void *buf)
24 {
25 return buf;
26 }
27
28 STDAPI_(BOOL)
29 DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
30 {
31 if (fdwReason == DLL_PROCESS_ATTACH)
32 {
33 g_hInstance = hinstDLL;
34 DisableThreadLibraryCalls(g_hInstance);
35
36 g_Module.Init(ObjectMap, g_hInstance, NULL);
37 }
38 else if (fdwReason == DLL_PROCESS_DETACH)
39 {
40 g_hInstance = NULL;
41 g_Module.Term();
42 }
43 return TRUE;
44 }
45
46 STDAPI
47 DllRegisterServer(void)
48 {
49 return g_Module.DllRegisterServer(FALSE);
50 }
51
52 STDAPI
53 DllUnregisterServer(void)
54 {
55 return g_Module.DllUnregisterServer(FALSE);
56 }
57
58 STDAPI
59 DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
60 {
61 return g_Module.DllGetClassObject(rclsid, riid, ppv);
62 }
63
64 STDAPI
65 DllCanUnloadNow(void)
66 {
67 return g_Module.DllCanUnloadNow();
68 }