4 Virtual Floppy Drive for Windows
6 shell extension COM class factory class
8 Copyright (c) 2003-2005 Ken Kato
11 #define WIN32_LEAN_AND_MEAN
20 #include "vfdshcfact.h"
25 CVfdFactory::CVfdFactory()
27 VFDTRACE(0, ("CVfdFactory::CVfdFactory()\n"));
37 CVfdFactory::~CVfdFactory()
39 VFDTRACE(0, ("CVfdFactory::~CVfdFactory()\n"));
47 STDMETHODIMP
CVfdFactory::QueryInterface(
51 VFDTRACE(0, ("CVfdFactory::QueryInterface()\n"));
55 if (IsEqualIID(riid
, IID_IUnknown
) ||
56 IsEqualIID(riid
, IID_IClassFactory
)) {
57 *ppv
= (LPCLASSFACTORY
)this;
67 STDMETHODIMP_(ULONG
) CVfdFactory::AddRef()
69 VFDTRACE(0, ("CVfdFactory::AddRef()\n"));
74 STDMETHODIMP_(ULONG
) CVfdFactory::Release()
76 VFDTRACE(0, ("CVfdFactory::Release()\n"));
90 // IClassFactory methods
92 STDMETHODIMP
CVfdFactory::CreateInstance(
97 VFDTRACE(0, ("CVfdFactory::CreateInstance()\n"));
101 // Shell extensions typically don't support
102 // aggregation (inheritance)
105 return CLASS_E_NOAGGREGATION
;
108 // Create the main shell extension object.
109 // The shell will then call QueryInterface with IID_IShellExtInit
110 // -- this is how shell extensions are initialized.
112 LPCVFDSHEXT pVfdShExt
= new CVfdShExt
;
115 return E_OUTOFMEMORY
;
118 return pVfdShExt
->QueryInterface(riid
, ppvObj
);
121 STDMETHODIMP
CVfdFactory::LockServer(BOOL fLock
)
123 VFDTRACE(0, ("CVfdFactory::LockServer()\n"));
124 UNREFERENCED_PARAMETER(fLock
);