Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

58 lines
1.9 KiB

//+-------------------------------------------------------------------
//
// File: stdcf.hxx
//
// Contents: class implementing standard CF for internal OLE classes
//
// Classes: CStdClassFactory
//
// History: Rickhi 06-24-97 Created
//
//+-------------------------------------------------------------------
#ifndef __STDCLASSFACTORY_HXX__
#define __STDCLASSFACTORY_HXX__
// CreateInstance function ptr definition
typedef HRESULT (* LPFNCREATEINSTANCE)(IUnknown* pUnkOuter,
REFIID riid, void** ppv);
//+----------------------------------------------------------------
//
// Class: CStdClassFactory
//
// Purpose: The standard implementation of class factory object
// for internal OLE classes.
//
// History: Rickhi 06-24-97 Created
//
// Notes: This class should be used whenever you need to have
// a class factory object for any class implemented by
// OLE32. Simply pass a creation function ptr to the ctor.
// When ICF::CI is called, it will delegate to your
// creation function.
//
//-----------------------------------------------------------------
class CStdClassFactory : public IClassFactory
{
public:
// Constructor
CStdClassFactory(DWORD dwIndex)
: _cRefs(1), _dwIndex(dwIndex) {}
// IUnknown methods
STDMETHOD (QueryInterface) (REFIID riid, void **ppv);
STDMETHOD_(ULONG,AddRef) (void);
STDMETHOD_(ULONG,Release) (void);
// IClassFactory methods
STDMETHOD (CreateInstance)(IUnknown *pUnkOuter, REFIID riid, void **ppv);
STDMETHOD (LockServer) (BOOL fLock) { return S_OK; }
private:
ULONG _cRefs; // CF reference count
DWORD _dwIndex; // index of entry in global class table
};
#endif // __STDCLASSFACTORY_HXX__