1 // projectM-wmpdll.cpp : Implementation of DLL Exports.
2 // Copyright (c) Microsoft Corporation. All rights reserved.
3
4 #include "stdafx.h"
5 #include "resource.h"
6 #include <initguid.h>
7 #include "wmpplug.h"
8 #include "projectM-wmp_h.h"
9 #include "projectM-wmp_i.c"
10 #include "projectM-wmp.h"
11
12
13 CComModule _Module;
14
15 BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(CLSID_ProjectMwmp,CProjectMwmp)16 OBJECT_ENTRY(CLSID_ProjectMwmp, CProjectMwmp)
17 END_OBJECT_MAP()
18
19 /////////////////////////////////////////////////////////////////////////////
20 // DLL Entry Point
21
22 extern "C"
23 BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
24 {
25 if (dwReason == DLL_PROCESS_ATTACH)
26 {
27 _Module.Init(ObjectMap, hInstance, &LIBID_PROJECTMWMPLib);
28 DisableThreadLibraryCalls(hInstance);
29 }
30 else if (dwReason == DLL_PROCESS_DETACH)
31 _Module.Term();
32 return TRUE; // ok
33 }
34
35 /////////////////////////////////////////////////////////////////////////////
36 // Used to determine whether the DLL can be unloaded by OLE
37
DllCanUnloadNow(void)38 STDAPI DllCanUnloadNow(void)
39 {
40 return (_Module.GetLockCount()==0) ? S_OK : S_FALSE;
41 }
42
43 /////////////////////////////////////////////////////////////////////////////
44 // Returns a class factory to create an object of the requested type
45
DllGetClassObject(REFCLSID rclsid,REFIID riid,LPVOID * ppv)46 STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
47 {
48 return _Module.GetClassObject(rclsid, riid, ppv);
49 }
50
51 /////////////////////////////////////////////////////////////////////////////
52 // DllRegisterServer - Adds entries to the system registry
53
DllRegisterServer(void)54 STDAPI DllRegisterServer(void)
55 {
56 // registers object, typelib and all interfaces in typelib
57
58 HRESULT hr = _Module.RegisterServer();
59
60 // Notify WMP that plugin has been added
61
62 WMPNotifyPluginAddRemove();
63
64 return hr;
65 }
66
67 /////////////////////////////////////////////////////////////////////////////
68 // DllUnregisterServer - Removes entries from the system registry
69
DllUnregisterServer(void)70 STDAPI DllUnregisterServer(void)
71 {
72 HRESULT hr = _Module.UnregisterServer();
73
74 // Notify WMP that plugin has been removed
75
76 WMPNotifyPluginAddRemove();
77
78 return hr;
79 }
80
81
82