Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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.