Module 类

表示相关对象的集合。

语法

template<ModuleType moduleType>
class Module;

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

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

参数

moduleType
一个或多个 ModuleType 枚举值的组合。

成员

受保护的类

名称 描述
Module::GenericReleaseNotifier 在释放当前模块中的最后一个对象时调用事件处理程序。 事件处理程序由 lambda、functor 或 pointer-to-function 指定。
Module::MethodReleaseNotifier 在释放当前模块中的最后一个对象时调用事件处理程序。 事件处理程序由对象及其指向方法成员的指针指定。
Module::ReleaseNotifier 在释放模块中的最后一个对象时调用事件处理程序。

公共构造函数

名称 描述
Module::~Module 取消初始化 Module 类的当前实例。

受保护构造函数

名称 描述
Module::Module 初始化 Module 类的新实例。

公共方法

名称 描述
Module::Create 创建模块的实例。
Module::DecrementObjectCount 递减模块所跟踪对象的数量。
Module::GetActivationFactory 获取模块的激活工厂。
Module::GetClassObject 检索类工厂的缓存。
Module::GetModule 创建模块的实例。
Module::GetObjectCount 检索此模块管理的对象数量。
Module::IncrementObjectCount 递增模块所跟踪对象的数量。
Module::RegisterCOMObject 注册一个或多个 COM 对象,以便其他应用程序可连接到它们。
Module::RegisterObjects 注册 COM 或 Windows 运行时对象,以便其他应用程序可以连接到它们。
Module::RegisterWinRTObject 注册一个或多个 Windows 运行时对象,以便其他应用程序可以连接到它们。
Module::Terminate 导致关闭模块实例化的所有工厂。
Module::UnregisterCOMObject 注销一个或多个 COM 对象,以阻止其他应用程序连接到它们。
Module::UnregisterObjects 取消指定模块中的对象,以便其他应用程序无法连接到它们。
Module::UnregisterWinRTObject 注销一个或多个 Windows 运行时对象,以便其他应用程序无法连接到它们。

受保护方法

名称 描述
Module::Create 创建模块的实例。

受保护的数据成员

名称 描述
Module::objectCount_ 记录使用 Make 函数创建的类数量。
Module::releaseNotifier_ 保存一个指向 ReleaseNotifier 对象的指针。

名称 描述
ActivatableClass 填充包含可以创建指定类实例的工厂的内部缓存。 此宏指定默认工厂和组 ID 参数。
ActivatableClassWithFactory 填充包含可以创建指定类实例的工厂的内部缓存。 使用此宏可以指定特定的工厂参数。
ActivatableClassWithFactoryEx 填充包含可以创建指定类实例的工厂的内部缓存。 使用此宏可以指定特定的工厂和组 ID 参数。

继承层次结构

ModuleBase

Module

Module

要求

标头:module.h

命名空间: Microsoft::WRL

Module::~Module

取消初始化 Module 类的当前实例。

virtual ~Module();

Module::Create

创建模块的实例。

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)()
);

参数

T
模块类型。

callback
释放模块的最后一个实例对象时调用。

object
对象方法参数组合使用。 释放模块中的最后一个实例对象时,指向最后一个实例对象。

method
对象方法参数组合使用。 释放模块中的最后一个实例对象时,指向最后一个实例对象的方法。

返回值

对模块的引用。

Module::DecrementObjectCount

递减模块所跟踪对象的数量。

virtual long DecrementObjectCount();

返回值

递减操作之前的计数。

Module::GetActivationFactory

获取模块的激活工厂。

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

参数

pActivatibleClassId
运行时类的 IID。

ppIFactory
指定运行时类的 IActivationFactory。

serverName
当前模块中类工厂的子集名称。 指定在 ActivatableClassWithFactoryEx 宏中使用的服务器名称,或指定 nullptr 以获取默认服务器名称。

返回值

如果成功,则为 S_OK;否则为 GetActivationFactory 返回的 HRESULT。

Module::GetClassObject

检索类工厂的缓存。

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

参数

clsid
类 ID。

riid
您请求的接口 ID。

ppv
指向返回对象的指针。

serverName
ActivatableClassWithFactoryActivatableClassWithFactoryExActivatableClass 宏中指定的服务器名称;或用于获取默认服务器名称的 nullptr

返回值

备注

仅对 COM 而不是 Windows 运行时使用此方法。 此方法仅公开 IClassFactory 方法。

Module::GetModule

创建模块的实例。

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

返回值

对模块的引用。

Module::GetObjectCount

检索此模块管理的对象数量。

virtual long GetObjectCount() const;

返回值

此模块管理的当前对象数量。

Module::IncrementObjectCount

递增模块所跟踪对象的数量。

virtual long IncrementObjectCount();

返回值

递增操作之前的计数。

Module::Module

初始化 Module 类的新实例。

Module();

注解

此构造函数受保护,不能使用 new 关键字进行调用。 请改为调用 Module::GetModuleModule::Create

Module::objectCount_

记录使用 Make 函数创建的类数量。

volatile long objectCount_;

Module::RegisterCOMObject

注册一个或多个 COM 对象,以便其他应用程序可连接到它们。

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

参数

serverName
服务器的完全限定名。

clsids
要注册的 CLSID 的数组。

factories
其可用性正发布的类对象的 IUnknown 接口的数组。

cookies
完成此操作后,指向标识已注册类对象的值的指针数组。 以后将使用这些值来撤销注册。

count
要注册的 CLSID 的数量。

返回值

如果成功,则为 S_OK;否则为指示操作失败原因的 HRESULT(如 CO_E_OBJISREG)。

备注

COM 对象是使用 CLSCTX 枚举的 CLSCTX_LOCAL_SERVER 枚举器注册的。

注册对象的连接类型由当前 comflag 模板参数和 REGCLS 枚举的 REGCLS_SUSPENDED 枚举器结合指定。

Module::RegisterObjects

注册 COM 或 Windows 运行时对象,以便其他应用程序可以连接到它们。

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

参数

module
一个由 COM 或 Windows 运行时对象构成的数组。

serverName
创建对象的服务器的名称。

返回值

如果成功,则为 S_OK;否则为指示操作失败原因的 HRESULT。

Module::RegisterWinRTObject

注册一个或多个 Windows 运行时对象,以便其他应用程序可以连接到它们。

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

参数

serverName
指定受此操作影响的对象子集的名称。

activatableClassIds
要注册的可激活 CLSID 的数组。

cookie
标识已注册类对象的值。 此值以后将用于撤销注册。

count
要注册的对象的数量。

返回值

如果成功,则为 S_OK;否则为指示操作失败原因的 HRESULT(如 CO_E_OBJISREG)。

Module::releaseNotifier_

保存一个指向 ReleaseNotifier 对象的指针。

ReleaseNotifier *releaseNotifier_;

Module::Terminate

导致关闭模块实例化的所有工厂。

void Terminate();

注解

释放缓存中的工厂。

Module::UnregisterCOMObject

注销一个或多个 COM 对象,以阻止其他应用程序连接到它们。

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

参数

serverName
(未使用)

cookies
指针的数组,其指向标识要注销的类对象的值。 此数组是通过 RegisterCOMObject 方法创建的。

count
要注销的类的数量。

返回值

如果此操作成功,则为 S_OK;否则为指示此操作失败原因的错误 HRESULT。

Module::UnregisterObjects

取消指定模块中的对象,以便其他应用程序无法连接到它们。

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

参数

module
指向模块的指针。

serverName
指定受此操作影响的对象子集的限定名。

返回值

如果此操作成功,则为 S_OK;否则为指示此操作失败原因的错误 HRESULT。

Module::UnregisterWinRTObject

注销一个或多个 Windows 运行时对象,以便其他应用程序无法连接到它们。

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

参数

cookie
指针,其指向标识将撤销其注册的类对象的值。