From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/ie_plugin/WinampFactory.cpp | 65 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Src/ie_plugin/WinampFactory.cpp (limited to 'Src/ie_plugin/WinampFactory.cpp') diff --git a/Src/ie_plugin/WinampFactory.cpp b/Src/ie_plugin/WinampFactory.cpp new file mode 100644 index 00000000..3d7cb68b --- /dev/null +++ b/Src/ie_plugin/WinampFactory.cpp @@ -0,0 +1,65 @@ +#include "WinampFactory.h" +#include "Winamp.h" + +//FileTypeRegistrar registrar; + +WinampFactory::WinampFactory() +{ +} + +WinampFactory::~WinampFactory() +{ +} + +ULONG WinampFactory::AddRef() +{ + return 10; +} + +ULONG WinampFactory::Release() +{ + return 10; +} + +HRESULT WinampFactory::QueryInterface(REFIID riid, void ** ppAny) +{ + // IID_IUnknown is the REFIID of standard interface IUnknown + if(riid == IID_IUnknown) + { + *ppAny = (IUnknown *)this; + } + else if(riid == IID_IClassFactory) + { + *ppAny = (IClassFactory *)this; + } + else + { + *ppAny = NULL; + return E_NOINTERFACE; + } + + ((IUnknown *)(*ppAny))->AddRef(); + + return S_OK; +} + +HRESULT WinampFactory::LockServer(BOOL fLock) +{ + return S_OK; +} + +HRESULT WinampFactory::CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, void **ppAny) +{ + if(pUnkOuter != NULL) + { + return CLASS_E_NOAGGREGATION; + } + + Winamp *winamp = new Winamp; + HRESULT hr = winamp->QueryInterface(riid, ppAny); + if (FAILED(hr)) + delete winamp; + return hr; + + +} \ No newline at end of file -- cgit