54 lines
2.3 KiB
C
54 lines
2.3 KiB
C
|
//--------------------------------------------------------------------------
|
||
|
// Factory.h
|
||
|
//--------------------------------------------------------------------------
|
||
|
#pragma once
|
||
|
|
||
|
//--------------------------------------------------------------------------
|
||
|
// Forward Decls
|
||
|
//--------------------------------------------------------------------------
|
||
|
class CClassFactory;
|
||
|
|
||
|
//--------------------------------------------------------------------------
|
||
|
// Object Flags
|
||
|
//--------------------------------------------------------------------------
|
||
|
#define OIF_ALLOWAGGREGATION 0x0001
|
||
|
|
||
|
//--------------------------------------------------------------------------
|
||
|
// Object Creation Prototypes
|
||
|
//--------------------------------------------------------------------------
|
||
|
typedef HRESULT (APIENTRY *PFCREATEINSTANCE)(IUnknown *pUnkOuter, IUnknown **ppUnknown);
|
||
|
#define CreateObjectInstance (*m_pfCreateInstance)
|
||
|
|
||
|
//--------------------------------------------------------------------------
|
||
|
// ClassFactory
|
||
|
//--------------------------------------------------------------------------
|
||
|
class CClassFactory : public IClassFactory
|
||
|
{
|
||
|
public:
|
||
|
//----------------------------------------------------------------------
|
||
|
// Construction
|
||
|
//----------------------------------------------------------------------
|
||
|
CClassFactory(CLSID const *pclsid, DWORD dwFlags, PFCREATEINSTANCE pfCreateInstance);
|
||
|
|
||
|
//----------------------------------------------------------------------
|
||
|
// IUnknown members
|
||
|
//----------------------------------------------------------------------
|
||
|
STDMETHODIMP QueryInterface(REFIID, LPVOID *);
|
||
|
STDMETHODIMP_(ULONG) AddRef(void);
|
||
|
STDMETHODIMP_(ULONG) Release(void);
|
||
|
|
||
|
//----------------------------------------------------------------------
|
||
|
// IClassFactory members
|
||
|
//----------------------------------------------------------------------
|
||
|
STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, LPVOID *);
|
||
|
STDMETHODIMP LockServer(BOOL);
|
||
|
|
||
|
public:
|
||
|
//----------------------------------------------------------------------
|
||
|
// Data
|
||
|
//----------------------------------------------------------------------
|
||
|
CLSID const *m_pclsid;
|
||
|
DWORD m_dwFlags;
|
||
|
PFCREATEINSTANCE m_pfCreateInstance;
|
||
|
};
|