Module Class

Represents a collection of related objects.

Syntax

template<ModuleType moduleType>
class Module;

template<>
class Module<InProc> : public Details::ModuleBase;

template<>
class Module<OutOfProc> : public Module<InProc>;

Parameters

moduleType
A combination of one or more ModuleType enumeration values.

Members

Protected Classes

Name Description
Module::GenericReleaseNotifier Invokes an event handler when the last object in the current module is released. The event handler is specified by on a lambda, functor, or pointer-to-function.
Module::MethodReleaseNotifier Invokes an event handler when the last object in the current module is released. The event handler is specified by an object and its pointer-to-a-method member.
Module::ReleaseNotifier Invokes an event handler when the last object in a module is released.

Public Constructors

Name Description
Module::~Module Deinitializes the current instance of the Module class.

Protected Constructors

Name Description
Module::Module Initializes a new instance of the Module class.

Public Methods

Name Description
Module::Create Creates an instance of a module.
Module::DecrementObjectCount Decrements the number of objects tracked by the module.
Module::GetActivationFactory Gets an activation factory for the module.
Module::GetClassObject Retrieves a cache of class factories.
Module::GetModule Creates an instance of a module.
Module::GetObjectCount Retrieves the number of objects managed by this module.
Module::IncrementObjectCount Increments the number of objects tracked by the module.
Module::RegisterCOMObject Registers one or more COM objects so other applications can connect to them.
Module::RegisterObjects Registers COM or Windows Runtime objects so other applications can connect to them.
Module::RegisterWinRTObject Registers one or more Windows Runtime objects so other applications can connect to them.
Module::Terminate Causes all factories instantiated by the module to shut down.
Module::UnregisterCOMObject Unregisters one or more COM objects, which prevents other applications from connecting to them.
Module::UnregisterObjects Unregisters the objects in the specified module so that other applications cannot connect to them.
Module::UnregisterWinRTObject Unregisters one or more Windows Runtime objects so that other applications cannot connect to them.

Protected Methods

Name Description
Module::Create Creates an instance of a module.

Protected Data Members

Name Description
Module::objectCount_ Keeps track of how many classes have been created with the Make function.
Module::releaseNotifier_ Holds a pointer to a ReleaseNotifier object.

Macros

Name | Description -------------------------------------------------- ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ActivatableClass | Populates an internal cache that contains a factory that can create an instance of the specified class. This macro specifies default factory and group ID parameters. ActivatableClassWithFactory | Populates an internal cache that contains a factory that can create an instance of the specified class. This macro enables you to specify a particular factory parameter. ActivatableClassWithFactoryEx | Populates an internal cache that contains a factory that can create an instance of the specified class. This macro enables you to specify particular factory and group ID parameters.

Inheritance Hierarchy

ModuleBase

Module

Module

Requirements

Header: module.h

Namespace: Microsoft::WRL

Module::~Module

Deinitializes the current instance of the Module class.

virtual ~Module();

Module::Create

Creates an instance of a module.

WRL_NOTHROW static Module& Create();
template<typename T>
WRL_NOTHROW static Module& Create(
   T callback
);
template<typename T>
WRL_NOTHROW static Module& Create(
   _In_ T* object,
   _In_ void (T::* method)()  
);

Parameters

T
Module type.

callback
Called when the last instance object of the module is released.

object
The object and method parameters are used in combination. Points to the last instance object when the last instance object in the module is released.

method
The object and method parameters are used in combination. Points to the method of the last instance object when the last instance object in the module is released.

Return Value

Reference to the module.

Module::DecrementObjectCount

Decrements the number of objects tracked by the module.

virtual long DecrementObjectCount();

Return Value

The count before the decrement operation.

Module::GetActivationFactory

Gets an activation factory for the module.

WRL_NOTHROW HRESULT GetActivationFactory(
   _In_ HSTRING pActivatibleClassId,
   _Deref_out_ IActivationFactory **ppIFactory,
   wchar_t* serverName = nullptr
);

Parameters

pActivatibleClassId
IID of a runtime class.

ppIFactory
The IActivationFactory for the specified runtime class.

serverName
The name of a subset of class factories in the current module. Specify the server name used in the ActivatableClassWithFactoryEx macro, or specify nullptr to get the default server name.

Return Value

S_OK if successful; otherwise, the HRESULT returned by GetActivationFactory.

Module::GetClassObject

Retreives a cache of class factories.

 HRESULT GetClassObject(
   REFCLSID clsid,
   REFIID riid,
   _Deref_out_ void **ppv,
   wchar_t* serverName = nullptr
);

Parameters

clsid
Class ID.

riid
Interface ID that you request.

ppv
Pointer to returned object.

serverName
The server name that is specified in either the ActivatableClassWithFactory, ActivatableClassWithFactoryEx, or ActivatableClass macro; or nullptr to get the default server name.

Return Value

Remarks

Use this method only for COM, not the Windows Runtime. This method exposes only IClassFactory methods.

Module::GetModule

Creates an instance of a module.

static Module& GetModule();
WRL_NOTHROW static Module& GetModule();

Return Value

A reference to a module.

Module::GetObjectCount

Retrieves the number of objects managed by this module.

virtual long GetObjectCount() const;

Return Value

The current number of objects managed by this module.

Module::IncrementObjectCount

Increments the number of objects tracked by the module.

virtual long IncrementObjectCount();

Return Value

The count before the increment operation.

Module::Module

Initializes a new instance of the Module class.

Module();

Remarks

This constructor is protected and cannot be called with the new keyword. Instead, call either Module::GetModule or Module::Create.

Module::objectCount_

Keeps track of how many classes have been created with the Make function.

volatile long objectCount_;

Module::RegisterCOMObject

Registers one or more COM objects so other applications can connect to them.

WRL_NOTHROW virtual HRESULT RegisterCOMObject(
   const wchar_t* serverName,
   IID* clsids,
   IClassFactory** factories,
   DWORD* cookies,
   unsigned int count);

Parameters

serverName
Fully-qualified name of a server.

clsids
An array of CLSIDs to register.

factories
An array of IUnknown interfaces of the class objects whose availability is being published.

cookies
When the operation completes, an array of pointers to values that identify the class objects that were registered. These values are later used revoke the registration.

count
The number of CLSIDs to register.

Return Value

S_OK if successfu; otherwise, an HRESULT such as CO_E_OBJISREG that indicates the reason the operation failed.

Remarks

The COM objects are registered with the CLSCTX_LOCAL_SERVER enumerator of the CLSCTX enumeration.

The type of connection to the registered objects is specified by a combination of the current comflag template parameter and the REGCLS_SUSPENDED enumerator of the REGCLS enumeration.

Module::RegisterObjects

Registers COM or Windows Runtime objects so other applications can connect to them.

HRESULT RegisterObjects(
   ModuleBase* module,
   const wchar_t* serverName);

Parameters

module
An array of COM or Windows Runtime objects.

serverName
Name of the server that created the objects.

Return Value

S_OK if successful; otherwise, an HRESULT that indicates the reason the operation failed.

Module::RegisterWinRTObject

Registers one or more Windows Runtime objects so other applications can connect to them.

HRESULT RegisterWinRTObject(const wchar_t* serverName,
   wchar_t** activatableClassIds,
   WINRT_REGISTRATION_COOKIE* cookie,
   unsigned int count)  

Parameters

serverName
A name that specifies a subset of objects affected by this operation.

activatableClassIds
An array of activatable CLSIDs to register.

cookie
A value that identifies the class objects that were registered. This value is used later to revoke the registration.

count
The number of objects to register.

Return Value

S_OK if successful; otherwise, an error HRESULT such as CO_E_OBJISREG that indicates the reason the operation failed.

Module::releaseNotifier_

Holds a pointer to a ReleaseNotifier object.

ReleaseNotifier *releaseNotifier_;

Module::Terminate

Causes all factories instantiated by the module to shut down.

void Terminate();

Remarks

Releases the factories in the cache.

Module::UnregisterCOMObject

Unregisters one or more COM objects, which prevents other applications from connecting to them.

virtual HRESULT UnregisterCOMObject(
   const wchar_t* serverName,
   DWORD* cookies,
   unsigned int count

Parameters

serverName
(Unused)

cookies
An array of pointers to values that identify the class objects to be unregistered. The array was created by the RegisterCOMObject method.

count
The number of classes to unregister.

Return Value

S_OK if this operation is successful; otherwise, an error HRESULT that indicates the reason the operation failed.

Module::UnregisterObjects

Unregisters the objects in the specified module so that other applications cannot connect to them.

HRESULT UnregisterObjects(
   ModuleBase* module,
   const wchar_t* serverName);

Parameters

module
Pointer to a module.

serverName
A qualifying name that specifies a subset of objects affected by this operation.

Return Value

S_OK if this operation is successful; otherwise, an error HRESULT that indicates the reason this operation failed.

Module::UnregisterWinRTObject

Unregisters one or more Windows Runtime objects so that other applications cannot connect to them.

virtual HRESULT UnregisterWinRTObject(
   unsigned int,
   _Inout_ WINRT_REGISTRATION_COOKIE* cookie
);

Parameters

cookie
A pointer to a value that identifies the class object whose registration is to be revoked.