ClassFactory Class

Implements the basic functionality of the IClassFactory interface.

Syntax

template <
    typename I0 = Details::Nil,
    typename I1 = Details::Nil,
    typename I2 = Details::Nil
>
class ClassFactory :
    public Details::RuntimeClass<
        typename Details::InterfaceListHelper<
            IClassFactory,
            I0,
            I1,
            I2,
            Details::Nil
        >::TypeT,
        RuntimeClassFlags<ClassicCom | InhibitWeakReference>,
        false
    >;

Parameters

I0
The zeroth interface.

I1
The first interface.

I2
The second interface.

Remarks

Utilize ClassFactory to provide a user-defined factory implementation.

The following programming pattern demonstrates how to use the Implements structure to specify more than three interfaces on a class factory.

struct MyFactory : ClassFactory<Implements<I1, I2, I3>, I4, I5>

Members

Public Constructors

Name Description
ClassFactory::ClassFactory

Public Methods

Name Description
ClassFactory::AddRef Increments the reference count for the current ClassFactory object.
ClassFactory::LockServer Increments or decrements the number of underlying objects that are tracked by the current ClassFactory object.
ClassFactory::QueryInterface Retrieves a pointer to the interface specified by parameter.
ClassFactory::Release Decrements the reference count for the current ClassFactory object.

Inheritance Hierarchy

I0

ChainInterfaces

I0

RuntimeClassBase

ImplementsHelper

DontUseNewUseMake

RuntimeClassFlags

RuntimeClassBaseT

RuntimeClass

ClassFactory

Requirements

Header: module.h

Namespace: Microsoft::WRL

ClassFactory::AddRef

Increments the reference count for the current ClassFactory object.

STDMETHOD_(
   ULONG,
   AddRef
)();

Return Value

S_OK if successful; otherwise, an HRESULT that describes the failure.

ClassFactory::ClassFactory

WRL_NOTHROW ClassFactory();

ClassFactory::LockServer

Increments or decrements the number of underlying objects that are tracked by the current ClassFactory object.

STDMETHOD(
   LockServer
)(BOOL fLock);

Parameters

fLock
true to increment the number of tracked objects. false to decrement the number of tracked objects.

Return Value

S_OK if successful; otherwise, E_FAIL.

Remarks

ClassFactory keeps track of objects in an underlying instance of the Module class.

ClassFactory::QueryInterface

Retrieves a pointer to the interface specified by parameter.

STDMETHOD(
   QueryInterface
)(REFIID riid, _Deref_out_ void **ppvObject);

Parameters

riid
An interface ID.

ppvObject
When this operation completes, a pointer to the interface specified by parameter riid.

Return Value

S_OK if successful; otherwise, an HRESULT that describes the failure.

ClassFactory::Release

Decrements the reference count for the current ClassFactory object.

STDMETHOD_(
   ULONG,
   Release
)();

Return Value

S_OK if successful; otherwise, an HRESULT that describes the failure.