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